Baixe SO - Processos e Threads e outras Notas de estudo em PDF para Informática, somente na Docsity!
1
Sistemas Operacionais I
2
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
4
Criação de Processos
Principais eventos que levam à criação de
processos
1. Início do sistema
2. Execução de chamada ao sistema para
criação de processos por um processo
em execução
3. Solicitação do usuário para criar um
novo processo
4. Início de um job em lote
5
Término de Processos
Condições que levam ao término de
processos
- Saída normal (voluntária)
- Saída por erro (voluntária)
- Erro fatal (involuntário)
- Cancelamento por um outro processo
(involuntário)
7
Estados de Processos (1)
- (^) Possíveis estados de processos
- (^) em execução
- (^) bloqueado
- pronto
- Mostradas as transições entre os estados
8
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
10
Implementação de Processos (2)
Esqueleto do que o nível mais baixo do SO faz
quando ocorre uma interrupção
11
O Modelo de Thread
• Processo: agrupamento de recursos (memória, arquivos
abertos, processos filhos, tratadores de sinais, etc)
• Threads: controle da execução (múltiplos fluxos em um
mesmo processo - multithread)
• Lightweight process : processos leves
• Threads executam sobre uma CPU virtual (mais lenta)
• Não há proteção entre threads (1. é impossível, 2. não
seria necessário)
• Threads também possuem vários estados: execução,
bloqueada, pronta, finalizada.
13
O Modelo de Thread (2)
- (^) Items compartilhados por todos os threads em um
processo
- (^) Itens privativos de cada thread
14
O Modelo de Thread (3)
Cada thread tem sua própria pilha
16
Uso de Thread – exemplo 1
Um processador de texto com três threads
17
Uso de Thread – exemplo 2
Um servidor web com múltiplos threads
19
Uso de Thread
Três maneiras de construir um servidor
20
Implementação de Threads de Usuário
Um pacote de threads de usuário