Capítulo 2
Processos e Threads
Prof. Fernando Freitas
Material adaptado de: TANENBAUM, Andrew S.
Sistemas Operacionais Modernos. 3ª edição.
Disponível em: [Link]
slide 1 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Processos
• Computadores modernos
– Várias tarefas ao mesmo tempo
– Cada instante um programa
– Cada segundo vários programas
– Pseudoparalelismo
slide 2 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
O modelo de processo
slide 3 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
O modelo de processo
• Multiprogramação
– Troca rápidas
• Processos
– Não possui taxa uniforme
– Não possui taxa reproduzível
• Diferença processo x programa
– Fabricação de um bolo
slide 4 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Criação de processos
• Eventos que causam a criação de processos:
– Inicialização de sistema.
– Execução de uma chamada de sistema de criação de
processo por um processo em execução.
– Requisição do usuário para criar um novo processo.
– Inicialização de uma tarefa em lotes.
• Linux (fork), Windows (CreateProcess)
– Espaços de endereçamento iguais (Linux)
– Espaços de endereçamento diferentes (Windows)
slide 5 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Término de processos
Eventos que causam o término de um processo:
• Saída normal (voluntária).
• Saída por erro (voluntária).
• Erro fatal (involuntário).
• Cancelamento por outro processo (involuntário).
slide 6 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Hierarquia 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
slide 7 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Estados de processos
slide 8 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Estados de processos - Escalonamento
slide 9 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Implementação de processos
slide 10 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Implementação de processos
slide 11 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Modelando a multiprogramação
slide 12 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Exercícios
1. O que é pseudoparalelismo?
2. Podemos criar programas baseados somente no
critério tempo? Justifique.
3. Cite os eventos que causam a criação de
processos.
4. Cite os eventos que causam o término de
processos.
5. Quais os estados de um processo? Comente.
slide 13 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Uso do thread
Vantagens:
• Compartilham espaço de endereçamento e dados
• São criadas e destruídas de forma mais rápida (até 100x)
• Permitem que atividades se sobreponham se houver
muita E/S
• Muito úteis em sistemas com múltiplas CPU´s
• Tornam possível manter a idéia de processos
sequenciais e mesmo assim conseguem obter
paralelismo
slide 14 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Uso do thread
Formatação do texto
slide 15 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Uso do thread
slide 16 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Uso do thread
slide 17 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Uso do thread
slide 18 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
O modelo de thread clássico
slide 19 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
O modelo de thread clássico
• Multithread = Múltiplos threads por processo
• Threads distintos em um processo não são tão
independentes quanto processos distintos
• Não há proteção entre threads
– Impossível
– Não é necessário
– Devem cooperar e não competir
• Cada thread tem sua pilha que armazena rotinas
chamadas que ainda não retornaram
slide 20 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
O modelo de thread clássico
slide 21 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
O modelo de thread clássico
slide 22 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
O modelo de thread clássico
• Threads devem ser corteses
• Complicações
– Chamadas fork() – alocação extra de memória
• Threads devem ser pensadas e projetadas com
cuidado para funcionarem corretamente
slide 23 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Threads POSIX
Pthreads = Padrão
de threads
definidos pelo
padrão IEEE
1003.1c
slide 24 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Threads
POSIX
slide 25 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Exercícios
1. Quais as vantagens de utilizarmos threads?
2. O que são processos multithreads? Cite um
exemplo.
3. Porque não há proteção entre threads?
4. O que são Pthreads?
slide 26 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Implementando threads
• Espaço do usuário
– Pode ser implementado em SO que não suporte thread
– Cada processo tem sua própria tabela de threads
– Chaveamento mais rápido – não envolve núcleo
– Vantagens
• Próprio algoritmo de escalonamento
– Desvantagem
• Falta de página bloqueia processo inteiro – SO não sabe sobre thread
slide 27 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Implementando threads
• Espaço do núcleo
– Única tabela de threads
– Núcleo pode executar uma nova thread quando a thread em
execução for bloqueada
– Alto custo de criação e destruição de threads
• reciclagem.
slide 28 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Implementando threads no espaço do
usuário e no espaço do núcleo
slide 29 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Implementações híbridas
slide 30 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
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)
slide 31 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Threads pop-up
• Chegada de uma mensagem = Criação de um novo
thread para lidar com a mensagem
• Conhecido como thread pop-up
• Não possui história = criados rapidamente
• Vantagem:
– Latência menor entre chegada da mensagem e início do
processamento
slide 32 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Threads pop-up
slide 33 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Convertendo o código monothread em código multithread
• Processo complicado. Problemas:
– Variáveis globais a um thread específico. Solução:
• Proibir o uso de variáveis globais
• Cada thread possui sua própria variável global privada
• Linguagens não possui declarações de variáveis intermediárias.
– Rotinas de bibliotecas não são reentrantes. Solução:
• Bit de proteção = elimina grande parte do paralelismo
– Tratamento de sinais
• Núcleo não sabe sobre threads = não pode tratar sinais corretamente
– Gerenciamento de pilha
• Núcleo não conhece threads = não consegue controlar transbordo de
pilha
slide 34 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Convertendo o código monothread em
código multithread
slide 35 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Convertendo o código monothread em
código multithread
slide 36 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Exercícios
1. Cite as vantagens e desvantagens de se
implementar threads no espaço do usuário.
2. Cite as vantagens e desvantagens de se
implementar threads no núcleo.
3. O que são ativações do escalonador?
4. O que são threads pop-up?
5. Cite duas dificuldades para converter códigos
monothreads em multithreads.
slide 37 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Condições de corrida
OBS:
Depuração de código
pode ser inútil para detectar
condições de corrida
slide 38 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Regiões críticas
Condições necessárias para evitar condições de
corridas:
• Dois processos não podem estar simultaneamente dentro
de suas regiões críticas.
• Nada pode ser afirmado sobre a velocidade ou
sobre o número de CPUs.
• Nenhum processo sendo executado fora de sua região
crítica pode bloquear outros processos.
• Nenhum processo deve esperar eternamente para entrar
em sua região crítica.
slide 39 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
slide 40 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Exclusão mútua com espera ociosa
Propostas para obtenção de exclusão mútua:
• Desabilitando interrupções.
• Variáveis do tipo trava.
• Chaveamento obrigatório.
• Solução de Peterson.
• A instrução TSL.
slide 41 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Desabilitando Interrupções
Não é uma solução adequada pois:
• Perigoso dar este privilégio a usuários
• Problema com múltiplos processadores
slide 42 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Variáveis do tipo trava
Solução apresenta problema de condições de
corrida
slide 43 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Chaveamento obrigatório
• Não é uma boa ideia quando
temos um processo mais lento
envolvido
• Viola a regra 3
slide 44 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Solução de Peterson
slide 45 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
A instrução TSL
slide 46 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
A instrução XCHG
slide 47 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Dormir e acordar
• Espera ociosa
– Desperdício de CPU
– Pode ter efeitos inesperados
• Inversão de Prioridade
• Solução
– Bloqueio ao invés de espera ociosa
slide 48 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
O problema produtor-consumidor
Problema:
• Bit de sinal perdido
- Pode adormecer
eternamente
• Bit de espera pelo
sinal de acordar
- Resolve para
casos simples
slide 49 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Semáforos
slide 50 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Mutexes
slide 51 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Exercícios
1. Defina condição de corrida.
2. Defina região crítica.
3. Cite e comente 3 soluções para exclusão mútua com
espera ociosa.
4. Descreva o funcionamento do chaveamento obrigatório.
5. Descreva o funcionamento da instrução TSL.
6. Qual o problema de se trabalhar com espera ociosa.
7. De forma resumida, diga no que consiste o problema do
produtor-consumidor.
slide 52 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Mutexes em Pthreads
slide 53 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Mutexes em Pthreads
slide 54 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Mutexes em Pthreads
(Continua)
slide 55 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Mutexes em
Pthreads
(Continuação)
slide 56 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Monitores
• Semáforos. Problemas:
– Cuidado!
– Controle de bloqueio por conta do programador
– Erro sutil pode por tudo a perder
• Monitores
– Somente um processo ativo por vez
– Compilador implemente exclusão mútua
– Programador precisa apenas converter regiões críticas p/
rotinas do monitor
– Solução está na introdução de variáveis condicionais (não
são contadores)
slide 57 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Monitores
slide 58 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Monitores
(Continua)
slide 59 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
(Continuação)
Monitores
slide 60 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Monitores
slide 61 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Monitores
slide 62 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Monitores
slide 63 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Semáforos x Monitores
• Monitores
– Deixam a programação paralela menos sujeita a erros
– Problema:
• Conceito de programação – O compilador deve conhecê-lo
• Semáforos
– Linguagens não apresenta semáforos
• Fácil inclusão
• Conclusão
– Semáforos: Nível muito baixo
– Monitores: Não são úteis
– Nenhum deles permite troca de informação entre máquinas. Deve-
se buscar outra solução.
slide 64 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Troca de mensagens
• Apresentam muitos problemas complexos e dificuldades
de projeto que não ocorrem com semáforos ou monitores.
Ex:
– Distinção entre nova mensagem e retransmissão
– Evitar ambiguidade em nomes de processos
– Autenticação (Evitar impostor)
– Copiar mensagens é mais lento do que realizar operações sobre um
semáforo ou monitor
– Pode utilizar caixas postais ou utilizar a estratégia Rendezvous
(Encontro marcado em francês)
• Bastante utilizada em sistemas de programação paralela.
slide 65 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
O problema produtor-consumidor com troca
de mensagens
slide 66 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
O problema produtor-consumidor com troca
de mensagens
slide 67 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Barreiras
• Nenhum processo pode
avançar p/ próxima fase
até que todos os processos
estejam prontos a fazê-lo
• Ex. de uso: Problema de
Relaxação da física ou da
engenharia
slide 68 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Escalonamento
• Sistemas em lote: Escalonamento simples
• Sistemas multiprogramados: Escalonamento
complexo
– Computadores pessoais – Escalonamento não é tão
importante.
– Servidores e estações de trabalho – Escalonamento
importante
• Escalonador deve se preocupar com uso eficiente da
CPU
slide 69 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Comportamento escalonamento-processo
• Dois tipos:
– Limitados pela CPU
– Limitados por E/S
• Evolução das CPU´s
– Processos tendem a ficar limitados por E/S
slide 70 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Comportamento escalonamento-processo
slide 71 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Escalonamento
• Quando escalonar
– Criação de um novo processo
– Término de um processo
– Bloqueio de um processo
– Interrupção de E/S
• Algoritmos divididos em duas categorias
– Preemptivos
– Não preemptivos
slide 72 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Categorias dos algoritimos de
escalonamento
• Em lote.
• Interativa.
• Tempo real.
slide 73 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Exercícios
[Link] funcionam as variáveis de condição?
2.O que são os monitores?
[Link] as vantagens e desvantagens dos monitores sobre os
semáforos.
[Link] os principais problemas enfrentados pela troca de
mensagem?
[Link] nos computadores pessoais o escalomanento não
é tão importante quanto nos servidores e estações de
trabalho?
[Link] qual(is) situação(ões) deve ser tomada a decisão de
escalonar um processo?
slide 74 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Objetivos dos algoritmos de escalonamento
slide 75 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Objetivos dos algoritmos de escalonamento
Observações:
– Melhor ter juntos na memória alguns processos
limitados pela CPU e outros por E/S, do que
somente um destes tipos.
– Maior vazão, não significa necessariamente
melhor tempo de retorno
slide 76 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Escalonamento em sistemas em lotes
• Primeiro a chegar, primeiro a ser servido
− Vantagens: Fácil de entender e programar, justo
− Desvantagem: pode atrasar processos orientados a computação
• Tarefa mais curta primeiro
− Todas as tarefas devem estar disponíveis simultaneamente
• Próximo de menor tempo restante
− Versão preemptiva do anterior
− Permite bom desempenho para novas tarefas curtas
slide 77 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Tarefa mais curta primeiro
Média 14 min
Média 11 min
slide 78 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Escalonamento em sistemas interativos
• Escalonamento por chaveamento
circular.
• Escalonamento por prioridades.
• Filas mútiplas.
• Próximo processo mais curto.
• Escalonamento garantido.
• Escalonamento por loteria.
• Escalonamento por fração justa.
slide 79 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Escalonamento por chaveamento circular
slide 80 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Escalonamento por prioridades
slide 81 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Escalonamento em sistemas de tempo real
Podem ser:
• Estáticos
• Decisão é tomada antes de iniciar a execução
• Dinâmico
• Decisão é tomada durante a execução
slide 82 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Política x Mecanismo
• Problema
• O escalonador raramente faz a melhor escolha
• Solução:
• Mecanismo de escalonamento no núcleo, mas
a política é estabelecida por parâmetros de um
processo de usuário
slide 83 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Escalonamento de threads
(Continua)
slide 84 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
(Continuação)
slide 85 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
O problema do jantar dos filósofos
Acesse o endereço a seguir para ver um exemplo prático:
[Link]
slide 86 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
slide 87 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
slide 88 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
slide 89 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
slide 90 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
O problema dos leitores e escritores
slide 91 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
slide 92 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Exercícios
1. Diferencie vazão e tempo de retorno.
2. Um dos objetivos dos sistemas interativos é a proporcionalidade. O
que vem a ser proporcionalidade?
3. O escalonador nem sempre toma as melhores decisões. Como
melhorar isto?
4. Diferencie o funcionamento dos algoritmos: menor tempo restante e
tarefa mais curta primeiro.
5. Como funciona o algoritmo de escalonamento round-robim.
6. Diferencie escalonamento por prioridade e escalonamento por filas
múltiplas.
7. Quais os tipos de escalonamento de threads possíveis?
8. Descreva no que consiste a idéia básica envolvida no problema do
jantar dos filósofos
slide 93 © 2010 Pearson Prentice Hall. Todos os direitos reservados.