LRM Prof. Mantovani ← Aulas da disciplina
Semana 3 · Aula 3 de 14

Processos e contexto de execução

O conceito de processo, o bloco de controle (PCB), os estados e o custo da troca de contexto no hardware.

📚 Sistemas Operacionais📝 mini-quiz ao final
Objetivos da aula

O que você vai aprender

1

Definir processo e descrever o conteúdo do PCB.

2

Explicar o diagrama de estados de um processo.

3

Avaliar o custo de uma troca de contexto na CPU.

4

Relacionar a troca de contexto à latência de tempo real.

1 · Motivação

Como um computador faz "várias coisas ao mesmo tempo"?

Seu celular toca música, baixa um arquivo e mostra notificações — aparentemente em paralelo, mesmo com poucos cores. O truque é dividir o trabalho em processos e alternar rapidamente entre eles.

Mas alternar não é grátis. Cada vez que a CPU larga um processo e pega outro, ela precisa salvar e restaurar estado — e o hardware paga um preço escondido. Entender esse custo é essencial para projetar sistemas eficientes e de tempo real.

2 · Mapa

Roteiro da aula

Processo
e PCB
EstadosTroca de
contexto
Custo no
hardware

Definiremos processo, abriremos o PCB, percorreremos os estados e mediremos o custo da troca de contexto — incluindo o esfriamento de cache e TLB.

3 · Conceito

Processo e PCB

Processo. Programa em execução, com seu próprio espaço de endereçamento, estado de CPU e recursos.
PCB (Process Control Block). Estrutura do SO que guarda tudo sobre um processo: PID, estado, contador de programa, registradores, tabela de páginas, arquivos abertos.
4 · Explicação

Programa não é processo

Distinção fundamental: o programa é passivo — bytes em disco. O processo é ativo — uma instância em execução, com estado que muda a cada instrução.

Um mesmo programa pode originar vários processos: abrir o navegador duas vezes cria dois processos independentes, com PIDs diferentes, espaços de endereçamento separados e seus próprios PCBs. O PCB é o "RG" que o SO mantém de cada um para retomá-lo exatamente onde parou.

5 · Exemplo

Conteúdo de um PCB

// campos típicos de um PCB PID = 4127 estado = BLOQUEADO contador_prog = 0x0040_1A3C registradores = { r0..r31, sp, flags } tabela_paginas = ponteiro para o mapa lógico→físico arquivos = { 0:stdin, 1:stdout, 3:/dados.txt } prioridade = 12

Ao retomar este processo, o SO recarrega o contador de programa e os registradores a partir do PCB — e a execução continua como se nada tivesse acontecido.

6 · Interativo

Passo a passo: salvando um processo

Passo 1
A interrupção do timer dispara; a CPU desvia para o escalonador.
Passo 2
O SO salva registradores e contador de programa de P1 no PCB de P1.
Passo 3
O escalonador escolhe P2 e carrega o PCB de P2.
Passo 4
Troca-se o espaço de endereçamento; a TLB é invalidada (ou marcada).
Passo 5
A CPU retoma P2 do ponto exato em que parou. A cache começa "fria".
7 · Conceito

Troca de contexto

Troca de contexto. Salvar o estado de CPU do processo atual no seu PCB e carregar o do próximo. Envolve registradores, contador de programa e, frequentemente, a invalidação da TLB.
8 · Explicação

Por que a troca custa caro

O custo da troca de contexto tem duas parcelas:

  • Custo direto: os ciclos gastos salvando e restaurando registradores e atualizando o ponteiro da tabela de páginas. É pequeno e previsível.
  • Custo indireto: ao trocar de espaço de endereçamento, a TLB é invalidada e a cache perde localidade. Os próximos acessos do novo processo provocam faltas de TLB e de cache — o "esfriamento". Esse custo é maior e mais difícil de prever.
9 · Analogia

Trocando de mesa de trabalho

🧰 Analogia
Imagine duas pessoas compartilhando uma bancada. Cada troca exige guardar todas as ferramentas de uma (salvar registradores) e espalhar as da outra (restaurar). Pior: a bancada estava arrumada do jeito da primeira (cache quente); a segunda precisa reorganizar tudo (cache fria) antes de produzir. O tempo "guardando e arrumando" é puro overhead.
10 · Comparação

Estados de um processo

EstadoSignificadoSai para…
NovoSendo criadoPronto
ProntoApto a rodar, aguardando a CPUExecutando
ExecutandoOcupando a CPU agoraPronto, Bloqueado ou Terminado
BloqueadoEsperando um evento (E/S, semáforo)Pronto (quando o evento ocorre)
TerminadoConcluído
11 · Fluxo

O ciclo de vida do processo

NovoProntoExecutandoTerminado

Da execução, o processo pode ir a Bloqueado (esperando E/S) e voltar a Pronto quando o evento chega — nunca pula direto de Bloqueado para Executando.

💡
A transição Executando→Pronto (preempção) é provocada pelo timer; Executando→Bloqueado é voluntária (o processo pediu E/S).
12 · Aprofundamento

ASID: evitando esfriar a TLB

CPUs modernas mitigam o custo da TLB com ASIDs (Address Space Identifiers): cada entrada da TLB é etiquetada com o identificador do processo. Assim, ao trocar de processo, a TLB não precisa ser totalmente invalidada — as entradas de cada processo coexistem.

No x86, o recurso correspondente é o PCID. Threads do mesmo processo compartilham o espaço de endereçamento e, portanto, não exigem invalidação da TLB — uma das razões de threads serem mais baratas que processos (Aula 4).

13 · Interativo

Verifique seu entendimento

Por que a troca de contexto é considerada "overhead puro"?

Salvar/restaurar contexto e esfriar cache/TLB consome ciclos sem progresso da aplicação. É custo, não trabalho útil.
14 · Caso prático

Troca de contexto em RTOS

Num RTOS embarcado (ex.: FreeRTOS num Cortex-M), a troca de contexto é implementada em assembly na rotina do PendSV: ela empilha os registradores da tarefa atual, escolhe a próxima e desempilha os dela. Como não há MMU complexa nem paginação, o custo é baixo e, crucialmente, previsível.

Essa previsibilidade é o que importa em tempo real: não basta a troca ser rápida em média; ela precisa ter pior caso limitado, pois entra na conta da latência da tarefa de alta prioridade.

15 · Erros comuns

Mal-entendidos frequentes

⚠️
Evite:
• Dizer "programa" quando quer dizer "processo" — programa é estático, processo é a execução.
• Imaginar que Bloqueado vai direto a Executando — sempre passa por Pronto.
• Ignorar o custo indireto da troca — o esfriamento de cache/TLB costuma pesar mais que o salvamento de registradores.
16 · Dicas

Escolhendo o quantum

Ao dimensionar o quantum do escalonador, lembre: quantum muito pequeno multiplica as trocas (mais overhead e esfriamento); quantum muito grande prejudica a responsividade. Um bom valor mantém o overhead de troca em uma pequena fração do quantum — tipicamente bem abaixo de 5%.
17 · Interativo

Revele o cálculo

Com troca de 5 µs e quantum de 20 ms, qual o overhead? E com quantum de 1 ms?
Overhead ≈ troca / (quantum + troca). Com 20 ms: 5 µs / 20005 µs ≈ 0,025% — desprezível. Com 1 ms: 5 µs / 1005 µs ≈ 0,5% — ainda pequeno, mas 20× maior. Reduzir o quantum melhora a resposta, mas multiplica o overhead de troca e o esfriamento.
18 · Flashcards

Revisão relâmpago

Processovirar
Programa em execução, com espaço de endereçamento, estado de CPU e recursos próprios.
PCBvirar
Bloco de controle: PID, estado, PC, registradores, tabela de páginas, arquivos.
Bloqueadovirar
Esperando um evento (E/S, semáforo); volta a Pronto quando o evento ocorre.
ASID/PCIDvirar
Etiqueta de processo na TLB que evita invalidá-la inteira a cada troca.
19 · Conexões

Onde isto reaparece

O custo da troca de contexto é tema recorrente:

  • Define o trade-off do quantum no escalonamento (Aula 5).
  • Explica por que threads são mais baratas que processos (Aula 4).
  • Liga-se à TLB e à memória virtual (Aulas 8–9).
20 · Síntese

Resumo da aula

🔑
Processo é programa em execução; o PCB guarda todo o seu estado. Os estados típicos são pronto, executando e bloqueado, com transições bem definidas. A troca de contexto é overhead puro, com custo direto (registradores) e indireto (esfriamento de cache/TLB). Em tempo real, o pior caso da troca entra na latência — daí a importância de previsibilidade, ASIDs e quanta bem dimensionados.
Mão na massa · colaborativo

Atividade em grupo · Calculando o overhead

Em trios, estimem o impacto das trocas de contexto na CPU.

⏱️ 25 min👥 trios🧩 exercício quantitativo

Roteiro

  1. Suponham troca de contexto de 5 µs e quantum de 20 ms; calculem o overhead percentual.
  2. Refaçam com quantum de 1 ms; o que muda?
  3. Discutam o efeito do esfriamento da cache/TLB além do tempo puro de salvamento.
  4. Relacionem com a escolha do quantum de escalonamento.
Calculistafaz as contas de overhead
Analista de hardwareavalia cache/TLB
Relatorsintetiza as conclusões
📤 Entrega: Tabela com overhead para dois valores de quantum + análise do esfriamento de cache.
Teste seu conhecimento

Mini-quiz · Aula 3

20 questões sobre esta aula. Escolha e veja a explicação na hora.

0/20

📌 Resumo — leve isto para a prova

  • Processo é programa em execução; o PCB guarda todo o seu estado.
  • Os estados típicos são pronto, executando e bloqueado, com transições definidas.
  • A troca de contexto é overhead puro, com custo direto e indireto.
  • Trocas esfriam TLB/cache; ASIDs/PCID mitigam parte do custo.
  • Em tempo real, o pior caso da troca entra na latência do sistema.