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

U1 · A arquitetura de hardware vista pelo SO

O ciclo de instrução, os modos de operação da CPU e o mecanismo de interrupções e exceções — o hardware que torna o sistema operacional possível.

📚 Sistemas Operacionais🧪 3 simulador(es)📝 mini-quiz ao final
Objetivos da aula

O que você vai aprender

1

Descrever o ciclo de instrução e onde o SO se insere nele.

2

Explicar por que existem modos de operação e o que cada um permite.

3

Diferenciar interrupção, exceção e trap.

4

Avaliar o impacto de mascaramento e latência de interrupção em tempo real.

1 · Motivação

O SO também é só um programa

Se o sistema operacional é software, ele precisa da CPU para rodar. Mas se um programa de usuário está ocupando a CPU, como o SO retoma o controle? E o que impede esse programa de simplesmente ignorar o SO e mandar no hardware?

As duas respostas estão no hardware, não no software. Nesta aula descemos ao nível do processador para ver os mecanismos — modos de operação e interrupções — sem os quais nada do que veremos adiante se sustentaria.

2 · Mapa

Roteiro da aula

1 O ciclo de instrução e o lugar do SO
2 Modo usuário e modo núcleo
3 Interrupções, exceções e traps
4 Latência: o que importa em tempo real
3 · Conceito

O ciclo de instrução

Ciclo de instrução. Sequência que a CPU repete indefinidamente: buscar a próxima instrução, decodificá-la, executá-la e verificar interrupções pendentes antes de prosseguir.
Busca
fetch
Decodifica
decode
Executa
execute
Verifica
interrupções
4 · Explicação

Onde o SO entra no ciclo

O SO não roda "em paralelo" à CPU: ele é apenas mais código que a CPU executa. A janela de oportunidade do SO é a etapa final do ciclo — a verificação de interrupções.

Quando o timer dispara uma interrupção, a CPU termina a instrução atual, salva o mínimo de contexto e desvia para o código do SO. É assim que o SO retoma o controle periodicamente mesmo enquanto um programa de usuário roda. Sem esse mecanismo de hardware, um programa que entrasse em laço infinito travaria a máquina para sempre.

5 · Interativo

Passo a passo: do interruptor ao hardware

Passo 1
O aplicativo chama write() — uma chamada de sistema, não um acesso direto ao disco.
Passo 2
A CPU comuta para o modo núcleo de forma controlada; o SO assume.
Passo 3
O SO valida permissões e localiza onde os dados devem ir (sistema de arquivos).
Passo 4
O driver programa o controlador do dispositivo; a transferência ocorre por interrupção ou DMA.
Passo 5
Concluída a E/S, o SO desbloqueia o processo e devolve o controle em modo usuário.
6 · Comparação

Os dois modos de operação

AspectoModo usuárioModo núcleo/supervisor
PrivilégioRestritoTotal
Instruções privilegiadasBloqueadas (geram exceção)Permitidas
Acesso a dispositivosIndireto (via syscall)Direto
Quem roda aquiAplicaçõesO kernel
Bit de modo. Bit no registrador de status da CPU que indica o modo atual. O hardware consulta esse bit para permitir ou negar instruções privilegiadas.
7 · Fluxo

Quem protege o SO dos programas?

App tenta
instrução privilegiada
Hardware vê
modo usuário
Gera
exceção
SO assume
e trata
🔑
Instruções privilegiadas (acessar dispositivos, alterar a tabela de páginas, desabilitar interrupções) só executam em modo núcleo. É o hardware que protege o SO dos programas de usuário, não uma "boa vontade" do software.
8 · Aprofundamento

Por que dois modos não bastam às vezes

A arquitetura x86 oferece quatro rings de privilégio (0 a 3), mas a maioria dos SOs usa apenas o ring 0 (kernel) e o ring 3 (usuário). Os rings intermediários quase não são usados na prática.

A virtualização acrescentou outra camada: um hipervisor roda em um nível ainda mais privilegiado (ex.: VMX root na Intel), abaixo do kernel. Em ARM, há níveis de exceção EL0 (app), EL1 (kernel), EL2 (hipervisor) e EL3 (firmware seguro). Em microcontroladores simples, porém, pode haver um único modo — todo código roda privilegiado.

9 · Conceito

Interrupções, exceções e traps

Interrupção. Sinal assíncrono de um dispositivo (teclado, timer, rede) que desvia a CPU para uma rotina de tratamento.
Exceção/falta. Evento síncrono causado pela própria instrução (divisão por zero, falta de página).
Trap. Interrupção de software intencional, usada para chamadas de sistema.
10 · Explicação

Síncrono vs. assíncrono

A distinção-chave é quando o evento ocorre em relação à instrução:

  • Assíncrono (interrupção): chega "de fora", a qualquer momento, sem relação com a instrução em curso. Ex.: pacote de rede.
  • Síncrono (exceção): é causado pela própria instrução e ocorre sempre no mesmo ponto se a executarmos de novo. Ex.: divisão por zero, acesso a página ausente.
  • Trap: exceção provocada de propósito pelo software para entrar no kernel — a base das syscalls.
11 · Analogia

Campainha, alarme e pedido

🔔 Analogia
A interrupção é a campainha: toca quando alguém chega, independente do que você faz. A exceção é cortar o dedo cozinhando: é a sua própria ação que causou o problema, no exato instante dela. O trap é você ligar de propósito para a administração pedir um serviço.
12 · Comparação

Os três eventos lado a lado

AspectoInterrupçãoExceçãoTrap
OrigemDispositivo externoA própria instruçãoSoftware (intencional)
TempoAssíncronoSíncronoSíncrono
ExemploTimer, redeDivisão por zero, falta de páginaread(), write()
Reprodutível?Não (depende do ambiente)Sim (mesma instrução)Sim
13 · Fluxo

O caminho de qualquer evento ao SO

EventoSalva contextoVetor de
interrupção
Trata (ISR)Restaura
e retorna
🔑
A tabela/vetor de interrupções mapeia cada causa a um endereço de rotina (ISR). O hardware salva o mínimo de contexto; o SO completa o salvamento se necessário.
14 · Aprofundamento

IRQs, mascaramento e latência

Cada fonte de interrupção tem um número (IRQ). O controlador de interrupções (ex.: APIC no x86, NVIC no ARM Cortex-M) prioriza e entrega as IRQs à CPU. O SO pode mascarar (adiar) interrupções de menor prioridade enquanto trata uma crítica.

A latência de interrupção — tempo entre o sinal e o início da ISR — é métrica vital em tempo real. ISRs longas que mantêm interrupções desabilitadas aumentam essa latência; por isso o padrão é ISR curta que apenas sinaliza uma tarefa para o trabalho pesado (esquema "top half / bottom half").

15 · Interativo

Passo a passo: uma interrupção de teclado

Passo 1
O controlador do teclado sinaliza uma interrupção na linha de IRQ.
Passo 2
A CPU termina a instrução corrente e checa interrupções (fim do ciclo).
Passo 3
O hardware salva o mínimo de contexto e consulta o vetor de interrupções.
Passo 4
Desvia para a ISR do teclado, em modo núcleo; o SO lê o código da tecla.
Passo 5
A ISR retorna; o contexto é restaurado e o programa interrompido continua.
16 · Caso prático

NVIC no ARM Cortex-M

Microcontroladores ARM Cortex-M, onipresentes em embarcados, trazem o NVIC (Nested Vectored Interrupt Controller) integrado ao núcleo. Ele suporta interrupções aninhadas com prioridades configuráveis e salva automaticamente parte do contexto na pilha em hardware, reduzindo a latência.

O vetor de interrupções fica em endereço fixo no início da memória: cada entrada é o endereço da ISR. Programar firmware nessas peças é, em grande parte, escrever ISRs eficientes — exatamente o conteúdo desta aula aplicado ao metal.

17 · Interativo

Verifique seu entendimento

Um programa de usuário tenta executar a instrução que desabilita interrupções. O que acontece?

Desabilitar interrupções é instrução privilegiada. Em modo usuário, o hardware bloqueia e gera uma exceção, transferindo o controle ao SO.
18 · Interativo

Revele a resposta

Por que um RTOS embarcado às vezes dispensa o modo usuário?
Porque a separação usuário/núcleo custa trocas de modo e perda de cache/TLB a cada syscall. Em um sistema dedicado, com poucas tarefas confiáveis e sob forte restrição de tempo, o isolamento é trocado por menor overhead e maior previsibilidade: tudo roda em modo privilegiado.
19 · Flashcards

Revisão relâmpago

Kernelvirar
Núcleo do SO em modo privilegiado, com acesso direto ao hardware.
ISRvirar
Interrupt Service Routine: rotina que trata uma interrupção, apontada pelo vetor.
Trapvirar
Interrupção de software intencional; base das chamadas de sistema.
Latência de interrupçãovirar
Tempo entre o sinal e o início da ISR; crítica em tempo real.
20 · Síntese

Resumo da aula

🔑
O processador executa um ciclo eterno de buscar, decodificar e executar; o sistema operacional só ganha a CPU quando um evento a devolve a ele. Os dois modos de operação impedem que um programa comum toque no hardware, e o mecanismo de interrupções e exceções é o que faz o controle voltar ao núcleo — por vontade do programa (trap), por erro dele (exceção) ou por iniciativa do mundo externo (interrupção).
Mão na massa · colaborativo

Atividade em grupo · Anatomia de uma syscall

Em duplas, rastreiem o caminho de uma chamada de sistema do programa ao hardware.

⏱️ 20 min👥 duplas🧩 discussão dirigida

Roteiro

  1. Escolham uma syscall (read, write, fork ou nanosleep).
  2. Descrevam o que está em modo usuário e o que está em modo núcleo.
  3. Identifiquem o instante exato da troca de modo e o que a dispara.
  4. Apontem o custo dessa troca e como minimizá-lo.
Lado usuáriodescreve a preparação da chamada
Lado núcleodescreve a execução do serviço
📤 Entrega: Diagrama do fluxo da syscall com a fronteira usuário/núcleo marcada.
Teste seu conhecimento

Mini-quiz · Aula 2

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

0/20

📌 Resumo — leve isto para a prova

  • A CPU só executa o ciclo buscar-decodificar-executar; o SO só roda quando um evento lhe devolve a CPU.
  • Os dois modos de operação são a base física da proteção: sem eles não há sistema operacional confiável.
  • Interrupção é assíncrona e externa; exceção é síncrona e causada pela instrução; trap é deliberada.
  • Mascarar interrupções protege regiões críticas, mas aumenta a latência do sistema.
  • Em tempo real, o pior caso da latência de interrupção é requisito de projeto, não detalhe.