Unidade 4: Processos
•
•
•
•
•
Conceito de Processos
Agenciamento de Processos
Operações em cima de Processos
Processos cooperativos
Comunicação entre processos
Operating System Concepts
4.1
Silberschatz and Galvin 1999
Conceito de Processos
•
•
•
•
Um sistema operacional executa uma programas variados :
– tarefas em lote (batch)
– programas de usuários em tempo compartilhado
O uso das palavras tarefa (job) e processo é quasi sinônimo.
Processo – um programa em execução; a execução deve
proceder de forma seqüencial.
Um processo inclui:
– contador de programa
– pilha
– segmentos de código e segmentos de dados
Operating System Concepts
4.2
Silberschatz and Galvin 1999
Estado de um processo
•
Enquanto um processo executa, ele muda de estado
– novo: O processo esta sendo criado.
– rodando: Instruções estão sendo executadas.
– esperando: O processo espera algum evento.
– pronto: O processo está esperando de tomar conta da
CPU.
– Terminado: O processo terminou execução.
Operating System Concepts
4.3
Silberschatz and Galvin 1999
Diagram of Process State
Operating System Concepts
4.4
Silberschatz and Galvin 1999
Segmento de Controle do Processo (PCB)
Contem informações asociados ao processo.
•
•
•
•
•
•
•
Estado do Processo
informação sobre agenciamento
Contador de Programa
registros da CPU
seletores de segmentos usados
informações estatísticas
informação sobre estado de entrada/saída
Operating System Concepts
4.5
Silberschatz and Galvin 1999
Process Control Block (PCB)
Operating System Concepts
4.6
Silberschatz and Galvin 1999
Chaveamento da CPU
de um Processo para outro Processo
Operating System Concepts
4.7
Silberschatz and Galvin 1999
Filas de Scheduling de Processos
•
•
Fila de Tarefas – conjunto de todos os processos do sistema.
•
Fila de Dispositivos – conjunto de processos esperando por um
dispositivo de entrada/saída.
•
Fila de Prontas – conjunto de todos os processos que estão na
memória, prontos para rodar.
Processos são passados de uma fila para outra.
Operating System Concepts
4.8
Silberschatz and Galvin 1999
A fila de Prontas e várias filas de Dispositivos
Operating System Concepts
4.9
Silberschatz and Galvin 1999
Representação de Scheduling de Processos
Operating System Concepts
4.10
Silberschatz and Galvin 1999
Schedulers
•
Longo prazo – seleciona qual processo é colocado na file de
Prontas.
•
Curto prazo (ou scheduler da CPU) – seleciona qual processo
deve ser o próximo a ser executado e aloca a CPU.
Operating System Concepts
4.11
Silberschatz and Galvin 1999
Adicionando Scheduling a médio prazo
Operating System Concepts
4.12
Silberschatz and Galvin 1999
Schedulers (Cont.)
•
•
•
•
Scheduler a curto prazo é chamado freqüentemente
(millisegundos)
 (deve ser rápido).
Scheduler a longo prazo é chamado com pouco freqüência
(segundos, minutos)  (pode ser devagar).
O scheduler a longo prazo controla o grão de processamento
multitarefa.
Processos podem ser descritos como:
– I/O-bound process – passa mais tempo fazendo
entrada/saída do que cálculos, muitas rajadas curtas de uso
da CPU.
– CPU-bound process – passa mais tempo fazendo cálculos;
poucas e muito longas rajadas de uso da CPU.
Operating System Concepts
4.13
Silberschatz and Galvin 1999
Troca de Contexto
•
•
•
Quando uma CPU chaveia para outro processo, o sistema tem
que preservar o estado do processo antigo e carregar o estado
do novo processo.
Troca de contexto é overhead; o sistema não faz nenhum
trabalho útil durante a troca.
O tempo de troca depende do suporte de hardware disponível.
Operating System Concepts
4.14
Silberschatz and Galvin 1999
Criação de Processos
•
•
•
Processos pai criam processos filho, as quais novamente ciram
outros processos, formando uma árvore de processos.
Compartilhamento de recursos
– Pai e filho compartilham todos os recursos;
– Filhos compartilham um subconjunto dos recursos do pai;
– Pai e filho não compartilham nenhum recurso.
Execução
– Pai e filho executam em paralelo;
– Pai espera até filho termine.
Operating System Concepts
4.15
Silberschatz and Galvin 1999
Criação de Processos (Cont.)
•
•
Espaço de endereçamento
– Filho cópia do pai;
– Filho recebe um novo programa carregado para ele.
Exemplo UNIX
– chamada ao sistema fork cria novo processo
– a chamada execve é usada depois de um fork para
substituir o espaço de memória do processo com um
programa novo.
Operating System Concepts
4.16
Silberschatz and Galvin 1999
Uma árvore típica de processos num sistema UNIX
Operating System Concepts
4.17
Silberschatz and Galvin 1999
Terminação de Processos
•
•
O processo executa a última instrução e faz a chamada de
sistema exit para o sistema operacional.
– Devolvendo dados para o pai (via wait).
– Os recursos do processo são desalocados pelo sistema
operacional.
Pai pode cancelar a execução de processos filho (abort).
– filho excedeu recursos alocados;
– a tarefa asociada ao filho não é mais necessária;
– pai termina.
 O sistema operacional não permite que o filho continue
se o pai termina;
 Terminação em cascata.
Operating System Concepts
4.18
Silberschatz and Galvin 1999
Processos cooperativos
•
•
•
Processos independentes não podem afetar a execução de outro
processo.
Processos cooperativos podem afetar or são afetados por outro
processo.
Vantagem da cooperação de processos
– compartilhar infomações
– aceleração de cáclculo
– modularidade
– simplicidade
Operating System Concepts
4.19
Silberschatz and Galvin 1999
O problema produtor-consumidor
•
Um paradigma para processos cooperativos: o produtor produz
informação que é consumida pelo consumidor.
– buffer sem limite não coloca limite prático no limite do
tamanho do buffer
– buffer limitado suponha qhe o tamanho do buffer é limitado.
Operating System Concepts
4.20
Silberschatz and Galvin 1999
Buffer limitado –
Solução com memória compartilhada
•
•
Dados compartilhados
var n;
type item = … ;
var buffer. array [0..n–1] of item;
in, out: 0..n–1;
processo produtor
repeat
…
produce an item in nextp
…
while in+1 mod n = out do no-op;
buffer [in] :=nextp;
in :=in+1 mod n;
until false;
Operating System Concepts
4.21
Silberschatz and Galvin 1999
Buffer limitado (Cont.)
•
Consumer process
repeat
while in = out do no-op;
nextc := buffer [out];
out := out+1 mod n;
…
consume the item in nextc
…
until false;
•
Solution is correct, but can only fill up n–1 buffer.
Operating System Concepts
4.22
Silberschatz and Galvin 1999
Threads
•
•
•
Um thread (ou processo leve) é uma unidade básica de
utilização da CPU; ele consiste de:
– contador de programa
– conjunto de registros
– espaço de pilha
Um thread compartilha os seguintes elementos com seus
threads pares:
– segmento de código,
– segmento de dados,
– recursos do sistema operacional.
O conjunto forma uma task.
Um processo pesado tradicional é igual a uma task com um
único thread.
Operating System Concepts
4.23
Silberschatz and Galvin 1999
Threads (Cont.)
•
•
•
•
•
Dentro de uma tarefa threadeada, enquanto um thread está
bloqueado, um outro thread da mesma tarefa pode estar
rodando.
– Cooperação de múltiplos threads dentro da mesma tarefa
resulta em vazão maior e desempenho melhor.
– Aplicações que precisam compartilhar um buffer comum
beneficiam do uso de threads (exemplo produtorconsumidor).
Threads fornecem um mecanismo que permite que processos
seqüenciais efetuem chamadas bloqueiantes ao sistema
conseguindo mesmo assim paralelismo na execução.
Threads como recurso do Kernel (Mach and OS/2).
Threads a nível de usuário: recurso em cima do kernel através
de um conjunto de chamadas de biblioteca (Project Andrew from
CMU).
Abordagem híbrida com threads do kernel ou do usuário
(Solaris2).
Operating System Concepts
4.24
Silberschatz and Galvin 1999
Multiple Threads within a Task
Operating System Concepts
4.25
Silberschatz and Galvin 1999
Threads Support in Solaris 2
•
•
•
Solaris 2 is a version of UNIX with support for threads at the
kernel and user levels, symmetric multiprocessing, and
real-time scheduling.
LWP – intermediate level between user-level threads and
kernel-level threads.
Resource needs of thread types:
– Kernel thread: small data structure and a stack; thread
switching does not require changing memory access
information – relatively fast.
– LWP: PCB with register data, accounting and memory
information,; switching between LWPs is relatively slow.
– User-level thread: only need stack and program counter;
no kernel involvement means fast switching. Kernel only
sees the LWPs that support user-level threads.
Operating System Concepts
4.26
Silberschatz and Galvin 1999
Solaris 2 Threads
Operating System Concepts
4.27
Silberschatz and Galvin 1999
Comunicação entre processos (IPC)
•
•
•
•
•
Um mecanismo para permitir processos de se comunicarem e de
sincronizarem seus ações.
Sistema de mensagens - permite comunicação sem uso de
variáveis compartilhadas.
Um mecanismo de IPC apresenta duas funções:
– send(message) – mensagem de tamanho fixo ou variável
– receive(message)
Se P e Q querem comunicar, eles precisam de:
– estabelecer uma ligação de communicação entre eles
– trocar mensagens usando send/receive
Implementação de uma ligação de comunicação
– físico (memória compartilhada, barramento)
– lógico (atributos)
Operating System Concepts
4.28
Silberschatz and Galvin 1999
Questões de Implementação
•
•
•
•
•
•
Como cria-se uma ligação?
Uma ligação pode estar asociada a mais do que dois processos?
Quantas ligações podem existir entre cada para de processos
que estão se comunicando?
Qual é a capacidade de uma ligação?
O tamanho de uma mensagem que passa pelo link é fixo ou
variável?
A ligação é unidirecional ou bidirecional?
Operating System Concepts
4.29
Silberschatz and Galvin 1999
Comunicação Direta
•
•
Processos precisam chamar um ao outro explicitamente:
– send (P, mensagem) – envie uma mensagem para
processo P
– receive(Q, message) – recebe uma mensagem de
processo Q
Propriedades de uma ligação de comunicação
– Ligação criada automaticamente;
– uma ligação é associada com exatamente um par de
processos;
– Existe exatamente uma ligação por par de processos;
– A ligação pode ser unidirecional, mas normalmente é
bidirecional.
Operating System Concepts
4.30
Silberschatz and Galvin 1999
Comunicação Indireta
•
•
•
Mensagens são direcionados a e recebidos de caixas de correio
(também chamado portas).
– Cada caixa de correio tem uma id única;
– Processos podem comunicar somente se eles
compartilham uma caixa de correio.
Propriedades de uma ligação de comunicação
– ligação existe somente se os processos compartilham uma
caixa de correiro;
– uma ligação pode ser associada a muitos processos;
– Cada para de processos pode ter vários ligações.
– Ligação pode ser unidirecional ou bidirecional.
Operações
– criar uma nova caixa de correio
– evniar e receber mensagens
– destruir a caixa de correio
Operating System Concepts
4.31
Silberschatz and Galvin 1999
Comunicação Indireta (Continuação)
•
•
Compartilhamento de caixas de correio
– P1, P2, e P3 compartilham a caixa de correio A.
– P1, envia; P2 e P3 recebem.
– Quem recebe a mensagem?
Solução
– Permitir que uma ligação seja associada com no máximo
dois processos;
– Permitir que somente um processo a cada vez executa uma
operação de recepção;
– Permitir ao sistema de selecionar um receptor
arbitrariamente. O remetente é avisado quem era o
receptor.
Operating System Concepts
4.32
Silberschatz and Galvin 1999
Enfileiramento (Buffering)
•
Uma fila de mensagens pertencendo à ligação.
1. Capacidade nula – 0 mensagens;
Remetente precisa esperar o receptor (rendezvous).
2. Capacidade limitada – tamanho finito de n mensagens
Remetente precisa esperar se fila está cheia;
3. Capacidade ilimitada – tamanho infinito
Remetente nunca espera.
Operating System Concepts
4.33
Silberschatz and Galvin 1999
Condições de excepção – Tratamento de Erros
•
•
•
Processo termina
Mensagem perdida
Mensagem bagunçada
Operating System Concepts
4.34
Silberschatz and Galvin 1999
Download

Processoss