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

Estrutura do sistema operacional

Como o SO é construído por dentro: kernel, a distinção entre modo usuário e modo núcleo, chamadas de sistema, interrupções e as principais arquiteturas.

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

O que você vai aprender

1

Diferenciar modo usuário e modo núcleo.

2

Explicar o papel das chamadas de sistema e das interrupções.

3

Comparar arquiteturas monolítica, em camadas e microkernel.

4

Descrever o caminho de uma operação do programa até o kernel.

1 · Motivação

Por que olhar para dentro do SO?

Na aula anterior vimos o que o SO faz. Agora abrimos a "caixa-preta": como ele é organizado internamente para fazer tudo isso com segurança e desempenho.

A pergunta central é: como permitir que aplicações peçam serviços poderosos (acessar disco, criar processos) sem deixá-las executar diretamente instruções perigosas que poderiam travar ou corromper a máquina? A resposta envolve modos de execução, chamadas de sistema e uma boa arquitetura.

2 · Mapa

O que veremos nesta aula

Kernel
e modos
Chamadas
de sistema
Interrupções
e traps
Arquiteturas
💡
Fio condutor: o hardware oferece dois modos de privilégio; o SO usa isso para se proteger das aplicações e ainda assim atendê-las.
3 · Conceito

Kernel e os dois modos

Kernel (núcleo). Parte central do SO que roda com privilégios totais, controlando hardware e recursos críticos.
Modo usuário. Estado restrito em que aplicações rodam, sem acesso direto ao hardware.

Um bit de status no processador indica o modo atual. Instruções privilegiadas (acessar dispositivos, mudar tabelas de memória) só executam em modo núcleo.

4 · Conceito

Por que separar os modos

A separação de modos é uma proteção de hardware. Se uma aplicação tentar executar uma instrução privilegiada em modo usuário, o processador gera uma exceção e o SO assume o controle.

Assim, um programa com bug ou malicioso não consegue, por exemplo, apagar a memória de outro processo ou desligar o disco diretamente — ele precisa pedir, e o SO decide.

5 · Exemplo

Tabela: modo usuário × modo núcleo

Modo usuárioModo núcleo
PrivilégiosRestritosTotais
Acesso a hardwareIndireto (via SO)Direto
Instruções privilegiadasProibidasPermitidas
O que rodaAplicaçõesKernel do SO
6 · Interativo

Stepper: uma chamada de sistema

Passo 1
O programa, em modo usuário, chama read(): prepara os argumentos e executa uma instrução de trap.
Passo 2
O trap muda o processador para modo núcleo e desvia para um ponto de entrada confiável do kernel.
Passo 3
O kernel identifica o serviço pedido, valida os argumentos e executa a operação (lê do disco).
Passo 4
O kernel coloca o resultado, volta ao modo usuário e o programa continua logo após o read().
7 · Conceito

Chamada de sistema (system call)

Chamada de sistema. Interface controlada pela qual um processo em modo usuário solicita um serviço ao kernel — ler um arquivo, criar um processo, alocar memória.

É a única porta legítima de entrada no kernel. Bibliotecas (como a libc) embrulham as chamadas em funções convenientes, mas, no fundo, há sempre um trap.

8 · Conceito

Categorias de chamadas de sistema

As chamadas de sistema costumam ser agrupadas por finalidade:

  • Controle de processos: fork, exec, exit, wait.
  • Arquivos: open, read, write, close.
  • Dispositivos: ioctl, read/write em dispositivos.
  • Informação: getpid, time.
  • Comunicação: pipe, socket, send, receive.
9 · Exemplo

Código: read() é uma chamada de sistema

// em C, read() parece uma função comum... int n = read(fd, buffer, 100); // pede ao kernel ler 100 bytes // ...mas por baixo ela executa um trap para o kernel, // que troca para modo núcleo, lê o dispositivo e retorna.
10 · Conceito

Interrupções e traps

Interrupção. Sinal de hardware que desvia a CPU para o kernel (ex.: chegada de dado da rede, fim de E/S). É assíncrona.
Trap (exceção). Desvio causado pela própria execução do programa (chamada de sistema, divisão por zero). É síncrono.

Ambos transferem o controle para o kernel de forma protegida, executando uma rotina de tratamento.

11 · Flow

O fluxo de uma chamada de sistema

Programa
modo usuário
Trap /
chamada
Kernel
modo núcleo
Retorno
modo usuário

Note que há duas trocas de modo: usuário→núcleo na entrada e núcleo→usuário na volta.

12 · Aprofundamento

Arquiteturas de kernel

ArquiteturaIdeiaTrade-off
MonolíticaTodo o SO em um único kernelRápida, porém difícil de manter (ex.: Linux)
Em camadasNíveis sobrepostos, cada um usa o de baixoOrganizada, mas pode ter overhead
MicrokernelKernel mínimo; serviços em modo usuárioRobusta e modular, com mais troca de mensagens (ex.: MINIX)
HíbridaMistura monolítico com ideias de microkernelEquilíbrio (ex.: Windows NT, macOS)
13 · Interativo

Verifique: onde roda o kernel

Em que modo o kernel do SO executa?

O kernel roda em modo núcleo, com acesso total ao hardware; as aplicações ficam em modo usuário.
14 · Caso prático

Microkernel e robustez

Em um microkernel, drivers e o sistema de arquivos rodam como processos em modo usuário. Se o driver de rede travar, ele pode ser reiniciado sem derrubar o kernel.

Em um kernel monolítico, esse mesmo driver roda dentro do núcleo: um bug nele pode causar uma falha geral (tela azul/kernel panic). É o preço da velocidade extra.

15 · Erros comuns

Onde a intuição falha

⚠️
Cuidado:
• A aplicação não "entra no kernel" executando código privilegiado próprio — ela faz um pedido via chamada de sistema.
• Interrupção (assíncrona, do hardware) não é o mesmo que trap (síncrono, do programa).
• Linux é monolítico (mesmo sendo modular); microkernel é a ideia do MINIX, não do Linux.
16 · Dicas

Mnemônicos úteis

Dicas:
• "Usuário pede, núcleo faz."
• Trap = Tarefa do programa (síncrono). Interrupção = vem de fora (assíncrono).
• Toda chamada de sistema tem duas trocas de modo: entrada e saída.
17 · Interativo

Revele: por que não acesso direto

Por que um programa de usuário não pode acessar o disco diretamente, mesmo que isso fosse mais rápido?
Porque acesso direto romperia a proteção: o programa poderia ler/escrever dados de outros processos, corromper o sistema de arquivos ou travar o dispositivo. Centralizar no kernel garante controle de permissões, isolamento e coordenação entre vários programas que disputam o mesmo dispositivo.
18 · Flashcards

Revisão relâmpago

Kernelvirar
Núcleo do SO; roda em modo privilegiado com acesso total ao hardware.
Chamada de sistemavirar
Porta de entrada controlada do modo usuário para os serviços do kernel.
Microkernelvirar
Kernel mínimo; serviços rodam em modo usuário e trocam mensagens.
Trapvirar
Desvio síncrono ao kernel causado pelo próprio programa.
19 · Analogia

O guichê do banco

🏦 Analogia
Você (modo usuário) não entra no cofre do banco. Faz um pedido no guichê (chamada de sistema). O funcionário autorizado (kernel, modo núcleo) vai ao cofre, executa a operação e volta com o resultado. O guichê é a única porta controlada — assim ninguém mexe no cofre por conta própria.
20 · Conexões

Para onde isto leva

  • Chamadas de controle de processos (fork/exec) → Aula 3.
  • Interrupções reaparecem no escalonamento (timer) → Aula 5.
  • Comunicação (pipe, socket) → Aula 6.
  • Proteção de modos sustenta toda a segurança do curso.
21 · Síntese

Fechando a aula

🔑
Em uma frase: o hardware oferece dois modos de privilégio; o SO mantém o kernel no modo núcleo e atende as aplicações por chamadas de sistema via trap, enquanto a arquitetura (monolítica, camadas, microkernel) decide o equilíbrio entre velocidade e robustez.
Mão na massa · colaborativo

Atividade em grupo · Mapeando uma chamada de sistema

Em duplas, sigam o caminho de uma operação até o kernel.

⏱️ 20 min👥 duplas🧩 discussão dirigida

Roteiro

  1. Escolham uma operação: abrir arquivo, criar processo ou alocar memória.
  2. Desenhem o fluxo: programa → chamada de sistema → trap → kernel → retorno.
  3. Indiquem em que pontos ocorrem as trocas de modo usuário↔núcleo.
  4. Discutam por que o programa não pode acessar o hardware diretamente.
Traçadordesenha o fluxo
Crítico de segurançaexplica a proteção
📤 Entrega: Diagrama do fluxo de uma chamada de sistema com as trocas de modo destacadas.
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 núcleo; aplicações, em modo usuário.
  • Chamadas de sistema são a interface controlada para pedir serviços ao kernel.
  • A troca de modo é protegida por hardware (trap); interrupções vêm do hardware (assíncronas).
  • Toda chamada de sistema tem duas trocas de modo: entrada e retorno.
  • Arquiteturas: monolítica (rápida), em camadas (organizada), microkernel (modular) e híbrida (equilíbrio).