O que você vai aprender
Definir processo e descrever o bloco de controle de processo (PCB).
Explicar os estados de um processo e suas transições.
Entender a troca de contexto e a criação/término de processos.
Reconhecer processos zumbi e órfãos.
O conceito que sustenta o SO
Se há um conceito sem o qual o SO não existe, é o de processo. Tudo o que "roda" no computador é um processo, e quase toda gerência do SO gira em torno deles.
Quando você abre o navegador, o editor e o player ao mesmo tempo, o SO mantém três (ou mais) processos vivos, cada um com seu estado, alternando-os na CPU tão rápido que parecem simultâneos. Entender como ele faz isso é o objetivo de hoje.
O que veremos nesta aula
e PCB→Estados e
transições→Troca de
contexto→Criação e
término
O que é um processo
PCB (Process Control Block). Estrutura do SO que guarda todas as informações de um processo.
Programa não é processo
O mesmo programa pode dar origem a vários processos. Abrir duas janelas do mesmo editor cria dois processos que executam o mesmo código, mas têm dados e estados independentes.
O que vive no PCB
O PCB é a "carteira de identidade" do processo. Contém, entre outros:
| Campo | Para quê |
|---|---|
| PID | Identificador único do processo |
| Estado | Pronto, executando, bloqueado... |
| Contador de programa | Próxima instrução a executar |
| Registradores | Contexto da CPU salvo |
| Prioridade / escalonamento | Decisões do escalonador |
| Memória e arquivos abertos | Recursos do processo |
Stepper: ciclo de vida de um processo
Os estados de um processo
As transições e seus gatilhos
| Transição | O que acontece |
|---|---|
| Novo → Pronto | Admissão pelo SO |
| Pronto → Executando | O escalonador escolhe o processo (dispatch) |
| Executando → Pronto | Fim do quantum ou preempção |
| Executando → Bloqueado | O processo pede E/S ou aguarda evento |
| Bloqueado → Pronto | A E/S/evento termina |
| Executando → Terminado | O processo chama exit() |
A fila do caixa
Bloqueado × Pronto
| Pronto | Bloqueado | |
|---|---|---|
| Pode rodar agora? | Sim, só falta a CPU | Não, espera um evento |
| Espera por | O escalonador escolhê-lo | Fim de E/S ou um evento |
| Vai para Executando? | Direto, ao ser escolhido | Não; primeiro vira Pronto |
A troca de contexto
de P1 no PCB→Escalonador
escolhe P2→Restaura contexto
de P2 do PCB
A troca de contexto é overhead puro: enquanto ela ocorre, nenhum trabalho útil do usuário é feito.
Criação de processos no Unix
No Unix/Linux, processos nascem de outros com fork() (cria uma cópia do pai) e exec() (substitui o programa em execução).
Verifique: destino do bloqueado
Quando a E/S de um processo bloqueado termina, ele vai para qual estado?
Zumbis e órfãos
Processo órfão. Seu pai terminou antes dele; é adotado por um processo do sistema (init/systemd).
O término normal usa exit(); o pai aguarda com wait(). Se o pai nunca chamar wait, acumulam-se zumbis.
Armadilhas com processos
• Bloqueado → Executando não existe; passa por Pronto.
• fork() retorna duas vezes: 0 para o filho e o PID do filho para o pai.
• Um processo zumbi não consome CPU, mas ocupa uma entrada na tabela de processos.
Como visualizar processos
• Use
ps aux ou top para ver processos e estados reais.• A coluna de estado (R, S, D, Z) mostra executando, dormindo, bloqueado e zumbi.
•
kill envia sinais — ligação com a Aula 6 (IPC).Revele: por que bloqueado vai a pronto
Por que um processo desbloqueado vai para Pronto e não direto para Executando?
Revisão relâmpago
Para onde isto leva
- Quem escolhe o próximo Pronto → Aula 5 (escalonamento).
- Fluxos dentro de um processo → Aula 4 (threads).
- Processos trocando dados → Aula 6 (IPC) e sinais.
- Acesso concorrente a dados → Aula 7 (sincronização).
Fechando a aula
Atividade em grupo · Diagrama de estados ao vivo
Em trios, encenem os estados de um processo.
Roteiro
- Atribuam papéis: CPU, fila de prontos e dispositivo de E/S.
- Façam um "processo" (um aluno) percorrer os estados respondendo a eventos (quantum esgotado, pedido de E/S, fim de E/S).
- Anotem cada transição e seu gatilho.
- Discutam: por que de bloqueado se vai para pronto e não para executando?
Mini-quiz · Aula 3
20 questões sobre esta aula. Escolha e veja a explicação na hora.
📌 Resumo — leve isto para a prova
- Processo é um programa em execução; o PCB guarda seu contexto (PID, estado, registradores, recursos).
- Os estados básicos: novo, pronto, executando, bloqueado e terminado.
- De bloqueado vai-se para pronto, nunca direto para executando.
- A troca de contexto salva e restaura estados; é overhead.
- No Unix, fork()/exec() criam e substituem processos; exit()/wait() encerram; há zumbis e órfãos.