1. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1
Processos e Threads
Capítulo 2
2.1 Processos
2.2 Threads
2.3 Comunicação interprocesso
2.4 Problemas clássicos de IPC
2.5 Escalonamento
2. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 2
Processos
O Modelo de Processo
• Multiprogramação de quatro programas
• Modelo conceitual de 4 processos sequenciais,
independentes
• Somente um programa está ativo a cada momento
3. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 3
Criação de Processos
Principais eventos que levam à
criação de processos
1. Início do sistema
2. Execução de chamada ao sistema
de criação de processos
3. Solicitação do usuário para criar um
novo processo
4. Início de um job em lote
4. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 4
Término de Processos
Condições que levam ao término de
processos
1. Saída normal (voluntária)
2. Saída por erro (voluntária)
3. Erro fatal (involuntário)
4. Cancelamento por um outro processo
(involuntário)
5. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 5
Hierarquias de Processos
• Pai cria um processo filho, processo filho
pode criar seu próprio processo
• Formam uma hierarquia
– UNIX chama isso de “grupo de processos”
• Windows não possui o conceito de
hierarquia de processos
– Todos os processos são criados iguais
6. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 6
Estados de Processos (1)
• Possíveis estados de processos
– em execução
– bloqueado
– pronto
• Mostradas as transições entre os estados
7. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 7
Estados de Processos (2)
• Camada mais inferior de um SO estruturado por
processos
– trata interrupções, escalonamento
• Acima daquela camada estão os processos
sequenciais
8. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 8
Implementação de Processos (1)
Campos da entrada de uma tabela de processos
9. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 9
Implementação de Processos (2)
Esqueleto do que o nível mais baixo do SO
faz quando ocorre uma interrupção
10. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 10
Threads
O Modelo de Thread (1)
(a) Três processos cada um com um thread
(b) Um processo com três threads
11. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 11
O Modelo de Thread (2)
• Items compartilhados por todos os threads em um
processo
• Itens privativos de cada thread
12. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 12
O Modelo de Thread (3)
Cada thread tem sua própria pilha
13. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 13
Uso de Thread (1)
Um processador de texto com três threads
14. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 14
Uso de Thread (2)
Um servidor web com múltiplos threads
15. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 15
Uso de Thread (3)
• Código simplificado do slide anterior
(a) Thread despachante
(b) Thread operário
16. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 16
Uso de Thread (4)
Três maneiras de construir um servidor
17. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 17
Implementação de
Threads de Usuário
Um pacote de threads de usuário
18. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 18
Implementação de
Threads de Núcleo
Um pacote de threads gerenciado pelo núcleo
19. Pearson Education Sistemas Operacionais Modernos – 2ª Edição
TU vs TN
• Criar uma thread de usuário é mais rápido
• Thread de usuário pode ser executado em
SO não preparados para threads
• Tratamento de interrupção é melhor em
threads de núcleo
19
20. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 20
Implementações Híbridas
Multiplexação de threads de usuário sobre
threads de núcleo
21. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 21
Ativações do Escalonador
• Objetivo – imitar a funcionalidade dos threads de
núcleo
– ganha desempenho de threads de usuário
• Evita transições usuário/núcleo desnecessárias
• Núcleo atribui processadores virtuais para cada
processo
– deixa o sistema supervisor alocar threads para
processadores
• Problema:
Baseia-se fundamentalmente nos upcalls - o
núcleo (camada inferior) chamando procedimentos
no espaço do usuário (camada superior)
22. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 22
Threads Pop-Up
• Criação de um novo thread quando chega
uma mensagem
(a) antes da mensagem chegar
(b) depois da mensagem chegar
23. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 23
Convertendo Código Monothread
em Código Multithread (1)
Conflitos entre threads sobre o uso de uma variável
global
24. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 24
Convertendo Código Monothread
em Código Multithread (2)
Threads podem ter variáveis globais privadas
25. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 25
Comunicação Interprocesso
Condições de Disputa
Dois processos querem ter acesso simultaneamente à memória
compartilhada
26. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 26
Regiões Críticas (1)
Quatro condições necessárias para prover
exclusão mútua:
1. Nunca dois processos simultaneamente em
uma região crítica
2. Nenhuma afirmação sobre velocidades ou
números de CPUs
3. Nenhum processo executando fora de sua
região crítica pode bloquear outros processos
4. Nenhum processo deve esperar eternamente
para entrar em sua região crítica
27. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 27
Regiões Críticas (2)
Exclusão mútua usando regiões críticas
28. Pearson Education Sistemas Operacionais Modernos – 2ª Edição
Exclusão Mutua com Espera
Ociosa
• Desabilitando interrupções: Pode-se
desabilitar as interrupções evitando o
processo de escalonamento;
• Utilizando variáveis de impedimento: Como
solução de software pode-se implementar
variáveis compartilhadas (lock), usadas para
verificar se algum processo está em uma
região crítica.
28
29. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 29
Exclusão Mútua com
Espera Ociosa (1)
Solução proposta para o problema da região crítica
(a) Processo 0. (b) Processo 1.
30. Pearson Education Sistemas Operacionais Modernos – 2ª Edição
Exclusão Mutua com Espera
Ocisoa
• Testar continuamente uma variável até que
algum valor apareça é chamado de espera
ociosa.
• Um variável que usa a espera ociosa é
chamada de spin lock.
30
31. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 31
Exclusão Mútua com
Espera Ociosa (2)
Solução de Peterson para implementar exclusão
mútua
32. Pearson Education Sistemas Operacionais Modernos – 2ª Edição
Exclusão Mutua com Espera
Ociosa
• Pode-se implementar a exclusão mútua com
ajuda do hardware utilizando a instrução
TSL;
• TSL é Teste e atualize a variável de
impedimento.
• As operações de leitura e armazenamento
são indivisíveis (garantido pelo hardware).
32
33. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 33
Exclusão Mútua com
Espera Ociosa (3)
Entrando e saindo de uma região crítica usando a
instrução TSL
34. Pearson Education Sistemas Operacionais Modernos – 2ª Edição
Dormir e Acordar
A solução de Peterson e TSL são corretas mas
ambas apresentam o defeito de precisar da
espera ociosa.
Este problema não só consome CPU como
pode causar problemas imprevistos.
Um exemplo é o problema da inversão de
prioridade.
34
35. Pearson Education Sistemas Operacionais Modernos – 2ª Edição
Dormir e Acordar
Podemos bloquear/desbloquear processos,
uma das maneiras mais simples é implementar
sleep e wakeup.
35
36. Pearson Education Sistemas Operacionais Modernos – 2ª Edição
Dormir e Acordar
• Problema do produtor-consumidor: Imagine
um problema em que dois processo estão
escrevendo e lendo dados em um buffer.
Um escreve mais informações em uma taxa
mais alta que o outro que faz a leitura
(limpa ao ler).
36
37. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 37
Dormir e Acordar
Problema do produtor-consumidor com uma condição de disputa fatal
38. Pearson Education Sistemas Operacionais Modernos – 2ª Edição
Dormir e Acordar
• Imagine se o consumidor ainda não estiver
logicamente adormecido, então o sinal para
acordar é perdido, então ele da próxima vez
que analisar o count verá 0 e dormirá. Mais
cedo o produtor encherá todo o buffer e
também dormirá. Cadê o príncipe encantado
nestas horas?
38
39. Pearson Education Sistemas Operacionais Modernos – 2ª Edição
Semáforos
• Estuda a introdução de uma nova variável
inteira para contar o número de sinais de
acordar salvos para uso futuro.
• Existe duas funções chamadas down e up
39
40. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 40
Semáforos
O problema do produtor-consumidor usando semáforos
41. Pearson Education Sistemas Operacionais Modernos – 2ª Edição
Mutexes
• Quando não é preciso usar a capacidade do
semáforo de contar, lança-se mão de uma versão
mais simples de semáforos.
• Um mutex é uma variável que pode estar em um
dos dois estados seguintes: desimpedido ou
impedido.
• Por ser muito simples os mutexes podem ser
implementados facilmente no espaço do usuário.
41
42. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 42
Mutexes
Implementação de mutex_lock e mutex_unlock
43. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 43
Monitores (2)
• Delineamento do problema do produtor-consumidor com monitores
– somente um procedimento está ativo por vez no monitor
– o buffer tem N lugares
44. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 44
Monitores (4)
Solução para o problema do produtor-consumidor em Java (parte 2)
45. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 45
Barreiras
• Uso de uma barreira
a) processos se aproximando de uma barreira
b) todos os processos, exceto um, bloqueados
pela barreira
c) último processo chega, todos passam
46. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 46
Jantar dos Filósofos (1)
• Filósofos comem/pensam
• Cada um precisa de 2
garfos para comer
• Pega um garfo por vez
• Como prevenir deadlock
47. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 47
Jantar dos Filósofos (2)
Uma solução errada para o problema do jantar dos filósofos
48. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 48
Jantar dos Filósofos (3)
Uma solução para o problema do jantar dos filósofos (parte 1)
49. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 49
Jantar dos Filósofos (4)
Uma solução para o problema do jantar dos filósofos (parte 2)
50. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 50
O Problema dos Leitores
e Escritores
Uma solução para o problema dos leitores e escritores
52. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 52
O Problema do Barbeiro Sonolento (2)
Solução para o problema do barbeiro sonolento
53. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 53
Escalonamento
Introdução ao Escalonamento (1)
• Surtos de uso da CPU alternam-se com
períodos de espera por E/S
a) um processo orientado à CPU
b) um processo orientado à E/S
54. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 54
Introdução ao Escalonamento (2)
Objetivos do algoritmo de escalonamento
55. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 55
Escalonamento em
Sistemas em Lote (1)
Um exemplo de escalonamento job mais curto primeiro
56. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 56
Escalonamento em
Sistemas em Lote (2)
Escalonamento em três níveis
57. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 57
Escalonamento em
Sistemas Interativos (1)
• Escalonamento por alternância circular (round-
robin)
a) lista de processos executáveis
b) lista de processos executáveis depois que B usou todo
o seu quantum
58. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 58
Um algoritmo de escalonamento com quatro classes
de prioridade
Escalonamento em
Sistemas Interativos (2)
59. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 59
Escalonamento em
Sistemas de Tempo-Real
Sistema de tempo-real escalonável
• Dados
– m eventos periódicos
– evento i ocorre dentro do período Pi e
requer Ci segundos
• Então a carga poderá ser tratada
somente se
1
1
m
i
i i
C
P=
≤∑
60. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 60
Política versus Mecanismo
• Separa o que é permitido ser feito do como é
feito
– um processo sabe quais de seus threads filhos
são importantes e precisam de prioridade
• Algoritmo de escalonamento parametrizado
– mecanismo no núcleo
• Parâmetros preenchidos pelos processos do
usuário
– política estabelecida pelo processo do usuário
61. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 61
Escalonamento de Threads (1)
Possível escalonamento de threads de
usuário
• processo com quantum de 50-mseg
• threads executam 5 mseg por surto de CPU
62. Pearson Education Sistemas Operacionais Modernos – 2ª Edição 62
Escalonamento de Threads (2)
Possível escalonamento de threads de núcleo
• processo com quantum de 50-mseg
• threads executam 5 mseg por surto de CPU