Buscar

Aula04_Gerência_de_Processos

Prévia do material em texto

Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
Aula 04 
Capítulo 4 – Gerência de Processos 
• 4.1 Conceito de Processo 
• 4.2 Escalonamento de Processos 
• 4.3 Opera ões sobre Processos 
• 4.4 Processos cooperativos 
• 4.5 Comunica ão entre Processos 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.1 Conceito de Processo 
• Um sistema operacional executa uma variedade de 
programas: 
– Sistemas Batch – tarefas (jobs). 
– Sistemas de tempo compartilhado – programas de usuário ou 
tarefas. 
• O livro texto usa os termos tarefa e processo quase 
que indistintamente, embora é preferível o termo 
processo. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.1.1 O Processo 
• Processo – um programa em execução, que precisará 
de certos recursos para realizar sua tarefa. 
• Recursos: tempo de CPU, memória, arquivos e 
dispositivos de E/S. 
• Esses recursos são alocados ao processo quando ele 
é criado ou enquanto está sendo executado. 
• A execução do processo precisa ocorrer de maneira 
sequencial. 
 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.1.1 O Processo 
• Um processo é mais do que um código de programa, 
que às vezes é conhecido como seção de texto. Ele 
inclui também: 
– Contador de programa – que representa a atividade atual; 
– Pilha – que contém o dados temporários (como parâmetros 
de métodos, endereços de retorno e variáveis locais); 
– Seção de dados – que contém variáveis globais. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.1.2 Estado do Processo 
• Conforme um processo é executado, ele muda de 
estado. Cada processo pode estar em um dos 
seguintes estados: 
– Novo (New): O processo está sendo criado. 
– Executando (Running): As instruções estão sendo 
executadas. 
– Esperando (Wainting): O processo está esperando que 
ocorra algum evento. 
– Pronto (Ready): O processo está esperando para ser 
atribuído a um processador. 
– Terminado (Terminated): O processo terminou sua 
execução. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.1.2 Estado do Processo 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.1.3 Bloco de Controle de Processo 
(Process Control Block) 
Contém informações associadas a cada processo: 
– Estado do processo: pode ser novo, pronto, executando, 
esperando e terminado. 
– Contador de programa: indica o endereço da próxima 
instrução a ser executada para esse processo. 
– Registradores da CPU: incluem acumuladores, 
registradores de índice, ponteiros de pilha e registradores de 
uso geral. 
– Informação de escalonamento de CPU: inclui uma 
prioridade de processo, ponteiros para filas de 
escalonamento e quaisquer outros parâmetros de 
escalonamento. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.1.3 Bloco de Controle de Processo 
(Process Control Block) 
– Informação de gerenciamento de memória: inclui dados 
como o valor dos registradores base e limite, as tabelas de 
páginas ou tabelas de segmento. 
– Informação contábil: inclui a quantidade de CPU e tempo de 
leitura utilizado, limites de tempo, número de conta, números 
de tarefa ou processo. 
– Informação de status de E/S: inclui a lista de dispositivos de 
E/S alocados ao processo, um lista de arquivos abertos e 
assim por diante. 
 O PCB serve simplesmente como repositório de informações que 
podem variar de processo a processo. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.1.3 Bloco de Controle de Processo 
(Process Control Block - PCB) 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.1.3 Bloco de Controle de Processo 
(Process Control Block - PCB) 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.2 Escalonamento de Processos 
• O objetivo da multiprogramação é ter processos em 
execução o tempo todo, para maximizar a utilização 
da CPU. 
• O objetivo do tempo compartilhado á alternar a CPU 
entre processos de forma tão frequente que os 
usuários possam interagir com cada programa 
durante sua execução. 
• Para atender a esses objetivos, é preciso ter um 
escalonador de processos. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.2.1 Filas de Escalonamento 
• A medida que os processos entram no sistema, são 
colocados numa fila de tarefas. 
• Fila de tarefas (Job Queue) – conjunto de todos os 
processos no sistema. 
• Fila de prontos (Ready Queue) – conjunto de todos 
os processos residindo na memória principal que 
estão prontos e esperando para serem executados. 
• Fila de dispositivo (Device Queue) – conjunto dos 
processos esperando um dispositivo de E/S. 
• Migração de processo entre as diversas filas. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.2.1 Filas de Escalonamento 
Um processo novo é 
inicialmente colocado na fila 
de prontos. Ele espera lá até 
que seja selecionado para 
execução, ou despachado. 
Quando o processo recebe 
tempo de CPU e está 
executando, pode ocorrer um 
dentre vários eventos: 
O processo poderia emitir uma requisição de 
E/S e depois ser colocado em uma fila de 
E/S. 
O processo poderia criar um novo 
subprocesso e esperar pelo término do 
subprocesso. 
O processo poderia ser removido 
forçadamente da CPU, como resultado de 
uma interrupção, e ser colocado de volta na 
fila de prontos. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.2.2 Escalonadores 
• Escalonador de longo prazo (ou escalonador de 
tarefas) – seleciona os processos que devem ser 
trazidos para a fila de prontos. 
• Escalonador de curto prazo (ou escalonador de 
CPU) – seleciona os processos que devem ser 
executados em seguida e aloca a CPU. 
• Escalonador de médio prazo – realiza operações de 
swapping (troca). Ele troca processos que estão na 
memória, enviando para o disco e depois buscando 
do ponto em que havia sido suspenso. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.2.2 Escalonadores 
• O escalonador de curto prazo é chamado 
frequentemente (milissegundos) 
– precisa ser veloz 
• O escalonador de médio prazo é chamado raramente 
(segundos ou minutos) 
– pode ser lento 
• O escalonador de longo prazo controla o grau de 
multiprogramação. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.2.2 Escalonadores 
• Os processos podem ser descritos como: 
– Processos I/O-Bound – é aquele que gasta mais do seu 
tempo realizando E/S do que gasta realizando cálculos. 
– Processos CPU-Bound – é o contrário do I/O-Bound, gera 
requisições de E/S com pouca frequência, usando mais do 
seu tempo realizando cálculos. 
• É importante que o escalonador de longo prazo 
selecione um bom mix de processos, entre processos 
I/O-Bound e processos CPU-Bound. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.2.2 Escalonadores 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.2.3 Troca de Contexto 
• Troca de contexto é a passagem da CPU para outro 
processo, isso exige salvar o estado do processo 
antigo e carregar o estado salvo do novo processo. 
• Quando ocorre uma troca de contexto, o kernel salva 
o contexto do processo antigo em seu PCB e carrega 
o contexto salvo do novo processo programado para 
execução. 
 
Sistemas Operacionaiscom Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.2.3 Troca de Contexto 
• O tempo da troca de contexto é puramente custo 
adicional, pois o sistema não realiza qualquer trabalho 
útil durante a troca. 
• A velocidade varia de uma máquina para outra, 
dependendo da velocidade da memória, do número 
de registradores que precisam ser copiados e da 
existência de instruções especiais. 
• Os tempos de troca de contexto dependem bastante 
do suporte do hardware. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.2.3 Troca de Contexto 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.3 Operações sobre Processo 
• Os processos na maioria dos sistemas podem ser 
executados de forma concorrente e podem ser criados 
e removidos dinamicamente. 
• Assim, esses sistemas operacionais precisam 
oferecer um mecanismo para a criação e o término de 
processo. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.3.1 Criação de Processo 
• Um processo pode gerar diversos novos processos, 
por meio de uma chamada de sistema “criar 
processo”, no decorrer da sua execução. 
• O processo que criou novos processos é chamado de 
processo pai, e os novos processos são considerados 
filhos desse processo. 
• Cada um desses novos processos pode, por sua vez, 
criar outros processos, formando uma árvore de 
processos. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.3.1 Criação de Processo 
• Compartilhamento de recursos: 
– Pai e filhos compartilham todos os recursos. 
– Filhos compartilham um subconjunto dos recursos do pai. 
– Pai e filho não compartilham recurso algum. 
• Execução: 
– Pai e filhos são executados concorrentemente. 
– Pai espera até que os filhos terminem. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.3.1 Criação de Processo 
• Espa o de endere os: 
– Processo filho é uma duplicata do processo pai. 
– Processo filho tem um novo programa carregado nele. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.3.2 Término de processo 
• Um processo termina quando termina de executar sua 
instrução final e pede ao sistema operacional para 
removê-lo usando a chamada de sistema exit(). 
– Envia os dados de saída do filho para o pai através da 
chamada de sistema wait(). 
– Os recursos do processo são desalocados pelo sistema 
operacional. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.3.2 Término de processo 
• Um processo pode causar o término de outro 
processo por meio de uma chamada de sistema 
abort(). 
• O processo pai pode terminar a execução de um de 
seus processos filhos por diversos motivos: 
– O filho excedeu os recursos alocados a ele. 
– A tarefa atribuída ao filho não é mais necessária. 
– O pai está terminando, e o SO não permitem que o filho 
continue se seu pai terminar. 
 Todos os filhos terminaram – término em cascata. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.4 Processos Cooperativos 
• Os processos concorrentes em execução no SO 
podem ser processos independentes ou processos 
cooperativos. 
• Um processo independente não pode afetar ou ser 
afetado pela execução de outro processo no sistema. 
• Um processo cooperativo pode afetar ou ser afetado 
pela execução de outro processo no sistema. 
 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.4 Processos Cooperativos 
• Vantagens da cooperação de processos: 
– Compartilhamento de informações: diversos usuários 
podem estar interessados na mesma informação. 
– Agilidade na computação: para uma tarefa ser executada 
rapidamente, precisamos dividi-la em subtarefas, cada uma 
sendo executada em paralelo (mas é preciso ter elementos 
pra isso). 
– Modularidade: o sistema é criado de forma modular, 
dividindo as funções do sistema em processos separados. 
– Conveniência: poder trabalhar em muitas tarefas ao mesmo 
tempo. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.4 Processos Cooperativos 
• A execução simultânea que exige cooperação entre 
processos exige mecanismos para permitir que os 
processos se comuniquem entre si e sincronizem 
suas ações. 
• Surge então o problema produtor-consumidor, que é 
um paradigma comum para processos cooperativos. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.4 Processos Cooperativos 
• Um processo produtor produz informações 
consumidas por um processo consumidor. 
• Para permitir que processos produtor e consumidor 
sejam executados simultaneamente, precisamos ter à 
disposição um buffer de itens que possa ser 
preenchido pelo produtor e esvaziado pelo 
consumidor. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.4 Processos Cooperativos 
• O produtor e o consumidor precisam estar 
sincronizados, de modo que o consumidor não tente 
consumir um item que ainda não foi produzido. 
• A solução é implementar o buffer: 
– O buffer ilimitado (unbounded-buffer) não coloca qualquer 
limite prático no tamanho do buffer. 
– O buffer limitado (bounded-buffer) considera que existe um 
tamanho de buffer fixo. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.5 Comunicação entre processos 
(Interprocess Communication - IPC) 
• Outra maneira para que os processos cooperativos se 
comuniquem entre si é a comunicação entre 
processos - IPC. 
• IPC oferece um mecanismo para que os processos se 
comuniquem e sincronizem suas ações sem 
compartilhar o mesmo espaço de endereços. 
• IPC é útil em um ambiente distribuído. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
4.5 Comunicação entre processos 
(Interprocess Communication - IPC) 
• IPC aborda um sistema de mensagens: 
– Os processos se comunicam entre si sem recorrer às 
variáveis compartilhadas. 
• O recurso de IPC oferece duas operações: 
– send(mensagem) 
– receive(mensagem) 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
• O IPC cuida não somente da comunicação, mas 
também do sincronismo. 
• A troca de mensagens pode ser com bloqueio ou 
sem bloqueio 
• Com bloqueio síncrona: 
– No send com bloqueio, o processo emissor bloqueado 
at que a mensagem seja recebida pelo processo receptor. 
– No receive com bloqueio, o processo receptor bloqueado 
at que uma mensagem esteja dispon vel. 
4.5 Comunicação entre processos 
(Interprocess Communication - IPC) 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2004 
• Sem bloqueio assíncrona: 
– No send sem bloqueio, o processo emissor envia a 
mensagem e continua sua operação. 
– No receive sem bloqueio, o processo receptor recebe uma 
mensagem v lida ou uma mensagem nula. 
4.5 Comunicação entre processos 
(Interprocess Communication - IPC) 
Sistemas Operacionais com Java 
Referências 
• Capítulo 4 da referência abaixo: 
– SILBERSCHATZ, ABRAHAM; GAGNE, GREG; GALVIN, 
PETER BAES. Sistemas operacionais: com java. . Rio de 
Janeiro: Elsevier, 2004.

Continue navegando