Gerenciamento de Processos e Comunicação Interprocesso
1. Sistemas Operacionais
-Gerência de Processos
Ernesto Massa
(slides fornecidos pela Prentice Hall
e adaptados para esta disciplina)
1
Pearson Education Sistemas Operacionais Modernos – 2ª Edição
2. Processos e Threads
Processos
Threads
Comunicação interprocesso
Problemas clássicos de IPC
Escalonamento
Pearson Education
2
Sistemas Operacionais Modernos – 2ª Edição
3. Processos
a) Multiprogramação
b) Como vemos a multiprogramação:
processos sequenciais
independentes
a) Ocupação real do processador
Pearson Education
3
Sistemas Operacionais Modernos – 2ª Edição
4. Transições de Estado
programa
carga
novo encerrado
final de
admissão execução
em
pronto escalonamento
execução
espera por
evento ou I/O
evento ou I/O
concluído
em espera
Pearson Education
4
Sistemas Operacionais Modernos – 2ª Edição
5. Estados de Processos
Camada mais inferior de um SO em
camadas trata interrupções,
escalonamento.
Acima desta camada estão os
processos sequenciais.
Pearson Education
5
Sistemas Operacionais Modernos – 2ª Edição
6. Processos: Contexto
Implementado através dos “Blocos de
Controle de Processos” – (BCP), também
chamada de “Tabela de Processos”;
Dividido em três elementos básicos:
Contexto de Software:
Id do Processo;
Descrição dos Arquivos utilizados;
Parâmetros de Escalonamento;
Estado Corrente, etc.
Contexto de Hardware:
Registradores;
Dispositivos alocados, etc.
Espaço de Endereçamento.
Pearson Education
6
Sistemas Operacionais Modernos – 2ª Edição
7. Threads
(a) Três processos cada um com um
thread
(b) Um processo com três threads
Pearson Education
7
Sistemas Operacionais Modernos – 2ª Edição
8. Threads
Contexto do Processo
Items compartilhados por todas as threads em
um processo
Contexto da Thread
Itens privativos de cada thread
Pearson Education
8
Sistemas Operacionais Modernos – 2ª Edição
9. Threads
Cada thread tem sua própria pilha
Pearson Education
9
Sistemas Operacionais Modernos – 2ª Edição
10. Uso de Threads
Um processador de texto com três threads
Pearson Education
10
Sistemas Operacionais Modernos – 2ª Edição
11. Uso de Thread
Um servidor web com múltiplos
threads
Pearson Education
11
Sistemas Operacionais Modernos – 2ª Edição
12. Threads de Usuário
Modelo de pacote
de threads de
usuário
Vantagem
Velocidade
Desvantagem
Gerenciamento
de threads no
espaço do
usuário
O Bloqueio de
uma thread
bloqueia todo o
processo
Pearson Education
12
Sistemas Operacionais Modernos – 2ª Edição
13. Threads de Núcleo
Modelo de
pacote de
threads
gerenciado
pelo kernel
Pearson Education
13
Sistemas Operacionais Modernos – 2ª Edição
14. Threads Pop-Up
Criação de nova thread quando chega uma
mensagem
(a) antes da mensagem chegar
(b) depois da mensagem chegar
Pearson Education
14
Sistemas Operacionais Modernos – 2ª Edição
15. Comunicação entre Processos
Processos Independentes.
Não afetam nem são afetados por outros
processos.
Processos Cooperados.
Compartilham:
Memória;
Arquivos;
Dispositivos de E/S;
Etc.
Pearson Education
15
Sistemas Operacionais Modernos – 2ª Edição
16. Comunicação entre Processos
Interprocess Comunication (IPC)
Dois processos querem escrever
simultaneamente em uma memória
compartilhada
Pearson Education
16
Sistemas Operacionais Modernos – 2ª Edição
17. Condições de Corrida (Disputa)
Condições de Corrida:
Situações onde dois ou mais processos estão
acessando dados compartilhados.
O resultado final pode variar de acordo com a
ordem de execução.
Mecanismo de Sincronização.
Garante o compartilhamento de recursos e a
comunicação entre os processos.
Garante a integridade e a confiabilidade dos
dados compartilhados.
Pearson Education
17
Sistemas Operacionais Modernos – 2ª Edição
18. Condições de Corrida
Exemplo 1: 1 3
7 7
Processo Processo
A
2
7 B 4
7+1 7-1
6 5
8 6
Resultado Final: Contador = 8 (ERRO!)
Pearson Education
18
Sistemas Operacionais Modernos – 2ª Edição
19. Condições de Corrida
Exemplo 2: Processo
2 suspenso
A
8 recebe CPU
10
Y 1 9
5 6 7 8
próxima
4
entrada
3 7
6 4 5
X 7 8
Processo 3 recebe CPU
Valor armazenado pelo B 7 suspenso
processo B é perdido.
Pearson Education
19
Sistemas Operacionais Modernos – 2ª Edição
20. Condições de Corrida
Região Crítica:
Parte do código onde é feito acesso a recursos
compartilhados, e que podem levar a
condições de corrida.
Ex: Processo A.
Código normal
Início da Seção Crítica (Protocolo de Entrada)
Seção Crítica
Término da Seção Crítica (Protocolo de Saída)
Código normal
Pearson Education
20
Sistemas Operacionais Modernos – 2ª Edição
21. Concorrência em programas
Enquanto um processo estiver usando um
recurso, os outros devem aguardar até
que o recurso esteja liberado.
Exclusão Mútua.
Exclusividade no acesso a um determinado
recurso.
A exclusão mútua deve afetar os
processos concorrentes quando um deles
estiver em uma região crítica.
Pearson Education
21
Sistemas Operacionais Modernos – 2ª Edição
22. Regiões Críticas
Quatro condições são necessárias
para prover exclusão mútua:
Nunca dois processos simultaneamente
em uma região crítica
Nenhuma afirmação pode ser feita sobre
velocidades ou números de CPUs
Nenhum processo executando fora de sua
região crítica pode bloquear outros
processos
Nenhum processo deve esperar
eternamente para entrar em sua região
crítica
Pearson Education
22
Sistemas Operacionais Modernos – 2ª Edição
23. Regiões Críticas
Exclusão mútua usando regiões
críticas
Pearson Education
23
Sistemas Operacionais Modernos – 2ª Edição
24. Soluções de Hardware
Desabilitação das interrupções:
Solução mais simples para a exclusão mútua;
Falha de Proteção:
O processo precisa voltar a habilitar as
interrupções.
Não aplicável para múltiplas CPUs.
Este recurso só deve ser permitido ao SO.
Instrução Test-and-Set.
Utilização de uma variável para testar a
possibilidade de executar a região crítica.
O teste e o bloqueio é realizado através de uma
única instrução (TSL).
O processo impedido de executar sua região
crítica executa um loop de espera.
Gasto de CPU.
Pearson Education
24
Sistemas Operacionais Modernos – 2ª Edição
25. Soluções de Software
Em geral, as soluções por software
resolvem a exclusão mútua, mas geram a
espera ocupada
(Busy Wait):
Teste contínuo de uma variável até que ocorra
uma mudança no seu valor;
O processo impedido de executar sua região
crítica executa um loop de espera.
Gasto de CPU.
Pearson Education
25
Sistemas Operacionais Modernos – 2ª Edição
26. Soluções de Software
Variável de Travamento;
Uma variável é utilizada para informar se algum
outro processo está em sua respectiva região
crítica;
Gera uma nova condições de corrida.
Estrita Alternância.
Processos se alternam na execução da região
crítica;
Processos podem estar bloqueados, sem
ninguém estar em sua região crítica;
É necessário que os processos possuam
freqüência semelhante na execução da região
crítica.
Pearson Education
26
Sistemas Operacionais Modernos – 2ª Edição
27. Soluções de Software
Estrita Alternância
Solução proposta para o problema da
região crítica.
busy wait
(a) Processo 0 (b) Processo 1
Pearson Education
27
Sistemas Operacionais Modernos – 2ª Edição
28. Soluções de Software
Solução de Peterson:
Chamadas a rotinas antes de entrar e
após sair da região crítica;
A rotina de entrada só retorna quando
não houver outro processo executando
a sua região crítica.
Pearson Education
28
Sistemas Operacionais Modernos – 2ª Edição
29. Soluções de Software
Solução de Peterson:
Pearson Education
29
Sistemas Operacionais Modernos – 2ª Edição
30. Soluções de Software
Problema de Inversão de
Prioridades:
Processo com baixa prioridade em sua
região crítica;
Processo com alta prioridade em busy
waiting;
Starvation.
Pearson Education
30
Sistemas Operacionais Modernos – 2ª Edição
31. Soluções de Software
Implementações de uso das regiões
críticas sem a espera ocupada:
Semáforos (Counting Semaphores);
Semáforos Binários
Mutex (Mutual Exclusion Semaphores);
Monitores.
Pearson Education
31
Sistemas Operacionais Modernos – 2ª Edição
32. Soluções de Software
Chamadas sleep e wakeup:
Sleep:
Coloca o processo chamador no estado de
espera.
Wakeup:
Coloca um outro processo que está em
espera no estado de pronto.
Pearson Education
32
Sistemas Operacionais Modernos – 2ª Edição
33. Soluções de Software
Semáforos:
Ferramenta de sincronização criada por
Dijkstra (1965);
Características:
Variável inteira;
Não negativa.
Manipulados exclusivamente por duas
operações atômicas:
DOWN (generalização do sleep)
UP (generalização do wakeup)
Implementados como chamada ao sistema.
Pearson Education
33
Sistemas Operacionais Modernos – 2ª Edição