Processo
Segundo maia o processo e um conjunto necessário de informações para que o SO implemente
a concorrência de programas.
O processo e constituído por 3 partes:
Contexto de hardware (valores nos registradores como pc, ponteiro pilha, e reg. De
prop. gerais).
Contexto de software (atribuídos em geral, como lista de arquivos abertos variáveis
etc).
Contexto de Endereçamento.
Conjunto de instruções.
Espaço de endereçamento: (Espaço reservado para que o processo possa ler e
escrever 0 até Max).
- Características:
1) Processos CPU-bound (orientados a CPU) processos que utilizam muito o
processador, tempo de execução e definido pelos ciclos de processador.
2) Processos I/O (orientados a E/S) processos que utilizam muito E/S, Tempo de
execução e definido pela duração das operações de E/S.
IDEAL: existir um balanceamento entre processos CPU-bound e I/O-bound.
O sistema operacional é responsável pelas seguintes atividades relacionadas com o
gerenciamento de processos:
Executar o scheduling de processos e threads nas CPUs
Criar e excluir processos de usuário e do sistema
Suspender e retomar processos
Fornece mecanismos de sincronização de processos
Fornece mecanismos de comunicação entre processos
Estados dos Processos
Quando um processo é executado, ele muda de estado. O estado de um processo é definido,
em parte, pela atividade corrente do processo. Um processo pode estar em um dos seguintes
estados:
Novo. O processo está sendo criado.
Em execução. Instruções estão sendo executadas.
Em espera. O processo está esperando que algum evento ocorra (como a conclusão de
um I/O ou recebimento de um sinal).
Pronto. O processo está esperando que seja atribuído a um processador.
Concluído. O processo terminou sua execução.
Bloco de Controle de Processo
Cada processo é representado, no sistema operacional, por um bloco de controle de processo
(PCB — process control block) — também chamado bloco de controle de tarefa.
Ele contém muitas informações associadas a um processo específico, incluindo estas:
Estado do processo. O estado pode ser novo, pronto, em execução, em espera,
parado, e assim por diante.
Contador do programa. O contador indica o endereço da próxima instrução a ser
executada para esse processo.
Registradores da CPU. Os registradores variam em número e tipo, dependendo da
arquitetura do computador. Eles incluem acumuladores, registradores índice,
ponteiros de pilhas e registradores de uso geral, além de qualquer informação do
código de condição. Junto com o contador do programa, essas informações de estado
devem ser salvas quando ocorre uma interrupção, para permitir que o processo seja
retomado corretamente mais tarde. Informações de scheduling da CPU. Essas
informações incluem a prioridade de um processo, ponteiros para filas de scheduling e
quaisquer outros parâmetros de scheduling.
Informações de gerenciamento da memória. Essas informações podem incluir itens
como o valor dos registradores base e limite e as tabelas de páginas, ou as tabelas de
segmentos, dependendo do sistema de memória usado pelo sistema operacional.
Informações de contabilização. Essas informações incluem o montante de tempo real
e de CPU usados, limites de tempo, números de conta, números de Jobs ou processos,
e assim por diante.
Informações de status de I/O. Essas informações incluem a lista de dispositivos de I/O
alocados ao processo, uma lista de arquivos abertos, e assim por diante.
Resumindo, o PCB serve, simplesmente, como o repositório de quaisquer informações que
possam variar de um processo para outro.
- Curto prazo: conhecido como dispatcher, responsável por alocar CPU a processo.
- Médio Prazo: swapping
- Longo prazo: Seleciona os processos que estão na memória secundaria para memoria
principal (controla o grau de multiprogramação).
Sistema multiprogramáveis – Multiprogramação (Multitarefa)
Um único processador execute vários processos concorrentes.
Os processos são executados de forma concorrente.
Compartilham recursos (CPU, memória, E/S)
Formas que as aplicações são escalonadas:
- Um processo e interrompido para que outro ganhe a CPU e possa ser executado durante um
determinado período de tempo, sendo que, após esse tempo, este também deverá ceder à
CPU para um novo processo.
Processos concorrentes:
Independentes: nem afetam e não são afetados por outros processos.
Cooperativos: podem afetar ou serem afetados por outros processos.
Em lote(batch): primeiros sistemas multiprogramações que permitem
sequenciamento automático de tarefas: não é realizado interações do usuário com a
aplicação, oferece tempo de respostas longos Exp.: Importação LG.
Em tempo compartilhado(time-sharing): Variante da multiprogramação (trabalha com
fatias de tempo)
Tempo real(real-time): Existem requisitos rígidos de tempo (normalmente ambientes
críticos onde existem alta disponibilidade). Utilizam temporizadores de hard e soft.
Sistema com Múltiplos processadores (Multiprocessado)
- Concorrência de processos.
- Execução simultânea pelos diversos processadores.
- São divididos em sistema fracamente acoplados e sistemas fortemente acoplados.
- Sistemas múltiplo processadores fortemente acoplados compartilhando uma única memoria
centralizada, este tipo de acoplamento normalmente utiliza 16 ou menos processadores.
- Uma das vantagens e reduzir custos devido ao compartilhamento de recursos entre as
aplicações.
Multiprocessadores simétricos
Cópia do SO na memória (qualquer CPU pode executá-lo)
Equilibra processos e a memória dinamicamente
Há apenas um conjunto de tabelas do sistema operacional
Elimina o gargalo da CPU mestra.
Processador matricial
Consiste em um grande número de processadores idênticos que efetuam a mesma
sequência de instruções em diferentes conjuntos de dados.
Estrutura de processo
- Busca da instrução na memoria
- Armazena no registrador de instruções (IR)
- Decodifica os bits.
- Realiza a instrução
- Cabe o SO implementar a concorrência entre os programas.
CLUSTER
GRID Computing
Tem alto grau de heterogeneidade
Um cluster:
Computadores com diferentes configurações agrupados para uma tarefa
(processamentos) em comum, geralmente se usa para amenizar os gastos com um
supercomputador, arquitetura fracamente acoplado.
Fracamente acoplados cada no possui seus próprios recursos
Comunicam por trocas de mensagens.
Tem os mesmos SO.
Conceitos:
o Failover: É a capacidade de determinado sistema/serviço migra
automaticamente para outro servidor, sistema ou rede redundante ou que
está em standby quando dá ocorrência de falha ou termino anormal do
servidor, do sistema ou da rede que estava ativo até aquele instante. O
failover acontece sem intervenção humana e geralmente sem aviso prévio,
diferentemente do switchover.
o Failback: É o processo de restauração de um sistema/componente/serviço
que se encontra em um estado de failover (ou seja, aquela máquina onde
estava rodando o serviço que apresentou problemas) de volta a seu estado
original que estava antes da falha.
o Switchover: É a capacidade de um sistema de comutar manualmente para um
computador servidor, sistema ou rede redundante ou em standby quando da
ocorrência de falha ou termino anormal do servidor, sistema, ou rede ativo
anteriormente. Switchover acontece com a intervenção humana, diferente do
failover.
Scale-up: Refere-se à escalabilidade vertical, onde se aumenta a capacidade de um
único servidor.
Scale-out: Refere-se à escalabilidade horizontal, onde se adicionam mais servidores ou
nos ao sistema.
Extra:
- Multiprogramação: depende apenas do sistema operacional enquanto a multitarefa depende
do sistema operacional e do hardware do sistema.