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

Estrutura do SO, interrupções e chamadas de sistema

O kernel e o modo privilegiado, o mecanismo de interrupções e exceções e como os programas pedem serviços ao SO via chamadas de sistema.

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

O que você vai aprender

1

Descrever a estrutura do kernel e o significado do modo privilegiado.

2

Diferenciar interrupções, exceções e traps.

3

Explicar o fluxo de uma chamada de sistema (syscall).

4

Avaliar o custo da troca de modo e formas de reduzi-lo.

1 · Motivação

Como um app pede ajuda ao SO?

Um programa em modo usuário não pode tocar no disco, na rede ou no timer. Mesmo assim, ele precisa de tudo isso. Como pedir, sem violar a proteção que o hardware impõe?

A resposta é um conjunto de pontes controladas entre os dois mundos: interrupções (o hardware fala com o SO), exceções (a instrução fala com o SO) e chamadas de sistema (o programa fala com o SO). Esta aula é o mapa dessas pontes.

2 · Mapa

Estrutura desta aula

Kernel e
estruturas
Interrupções
e exceções
Vetor e
ISR
Syscalls

Veremos primeiro onde o SO vive (o kernel), depois como ele é acionado (interrupções/exceções/traps) e finalmente como o programa o invoca (syscalls).

3 · Conceito

O kernel

Kernel. Núcleo do SO que executa em modo privilegiado, com acesso direto ao hardware. Gerencia processos, memória, E/S e a comunicação entre eles.

Tudo o que exige privilégio passa pelo kernel: programar o controlador de disco, alterar a tabela de páginas, mascarar interrupções. Bibliotecas e aplicativos ficam em modo usuário e dependem do kernel para essas operações.

4 · Explicação

Estruturas de kernel

Há várias formas de organizar o código do kernel, com diferentes trade-offs entre desempenho e robustez:

EstruturaIdeiaTrade-off
MonolíticoTudo em um grande kernelRápido, porém menos isolado (Linux)
MicrokernelMínimo no núcleo; serviços em modo usuárioRobusto, porém com overhead de mensagens
HíbridoMistura dos doisEquilíbrio (Windows NT, macOS)
💡
Em RTOS embarcados é comum não haver separação usuário/núcleo: tudo roda em modo privilegiado para reduzir overhead, ao custo de menos isolamento.
5 · Exemplo

Monolítico vs. microkernel na falha de um driver

CenárioMonolíticoMicrokernel
Driver de rede travaPode derrubar o kernel inteiroÉ só um processo de usuário: pode reiniciar isolado
Chamar o driverFunção direta (rápido)Troca de mensagens (mais lento)
Adicionar driverMódulo no kernelNovo servidor em modo usuário

É por isso que sistemas críticos (aviônica, automotivo) frequentemente preferem microkernels: o isolamento contém falhas.

6 · 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.
7 · 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.
8 · 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.
9 · 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.
10 · 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
11 · 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.
12 · 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").

13 · Interativo

Verifique seu entendimento

Um programa acessa um endereço de memória cuja página não está na RAM. Que tipo de evento ocorre?

A falta de página é causada pela própria instrução de acesso — é síncrona. O SO a trata trazendo a página do disco.
14 · 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.

15 · Erros comuns

Onde os alunos tropeçam

⚠️
Cuidado com:
• Chamar toda falha de "interrupção" — divisão por zero é exceção, não interrupção.
• Achar que a syscall é "uma função normal" — ela cruza a fronteira de privilégio via trap, com custo real.
• Escrever ISRs longas que bloqueiam outras interrupções e arruínam a latência de tempo real.
16 · Dicas

Boas práticas de E/S

Prefira E/S em lotes: ler 4 KB de uma vez com uma syscall é muito melhor que 4096 syscalls de 1 byte. Cada syscall paga o custo da troca de modo (salvar/restaurar contexto, possível perda de cache). Buffers existem justamente para amortizar esse custo.
17 · Interativo

Revele a resposta

Por que microkernels podem ser mais lentos que monolíticos?
Porque serviços que num kernel monolítico são simples chamadas de função, num microkernel viram troca de mensagens entre processos em modo usuário — cada mensagem exige cópias de dados e trocas de contexto/modo. Ganha-se isolamento e robustez, paga-se com overhead de comunicação.
18 · 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.
19 · Conexões

Como isto se liga ao curso

Esta aula é a engrenagem central:

  • O timer que vimos na Aula 1 é a interrupção que viabiliza a preempção do escalonador (Aula 5).
  • A falta de página (exceção) é a base da memória virtual (Aulas 8–9).
  • As ISRs reaparecem nos drivers e na E/S por interrupção (Aula 10).
20 · Síntese

Resumo da aula

🔑
O kernel vive em modo privilegiado; sua estrutura varia (monolítico, micro, híbrido) com trade-offs de desempenho e robustez. Interrupções são assíncronas, exceções são síncronas e traps disparam syscalls — todas chegam ao SO via vetor de interrupções e uma ISR. A troca de modo tem custo; E/S em lotes o amortiza. A latência de interrupção é o que liga tudo isso ao tempo real.
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

  • O kernel roda em modo privilegiado; estruturas variam (monolítico, micro, híbrido).
  • Interrupções são assíncronas; exceções são síncronas; traps disparam syscalls.
  • O vetor de interrupções direciona cada evento à sua ISR.
  • Syscalls comutam para o modo núcleo de forma controlada, com custo de troca.
  • A latência de interrupção e ISRs curtas são vitais em tempo real.