LRM Prof. Mantovani ← Aulas da disciplina
Revisão · Fundamentos de hardware

O hardware que sustenta o sistema operacional

Uma revisão em quatro perguntas. Cada uma tem uma resposta que não está no software: está num fio, num bit de registrador ou numa porta lógica. Ao fim, você deve conseguir explicar o sistema operacional sem usar a palavra “sistema operacional”.

📚 Sistemas Operacionais🧪 5 simuladores🎯 Engenharia de Computação📝 quiz ao final
Como usar esta revisão

Quatro perguntas, quatro mecanismos

1

Se o SO é software, quem executa o SO? → o ciclo de instrução, e o fato de que a CPU só sabe fazer uma coisa.

2

O que impede um programa de mandar no hardware? → o bit de modo e as instruções privilegiadas.

3

Como o controle volta para o SO? → interrupção, exceção e trap: três origens, um mecanismo.

4

Quanto tempo tudo isso demora? → latência, mascaramento e o custo real da memória.

🧱
Nunca cursou circuitos digitais, ou cursou e esqueceu? Comece pelo bloco 0, logo abaixo: ele monta do zero as sete peças de que um processador é feito, uma por aba. Quem tem isso fresco pode ir direto para a pergunta 1.
🧪
Cada bloco abaixo termina com um simulador. Eles não são ilustração: rodam a lógica de verdade no seu navegador. Mexa antes de ler a resposta — a revisão só funciona se você tentar errar primeiro.
0 · Ponto de partida

Antes das quatro perguntas: um processador só tem sete peças

Este bloco é dispensável para quem tem circuitos digitais fresco na memória — e é o mais importante para quem não tem. Ele responde à pergunta que a revisão inteira pressupõe sem nunca enunciar: de que, exatamente, um processador é feito?

A resposta é curta e não tem letra miúda: de portas lógicas, ligadas por fios. Não existe um oitavo tipo de componente escondido, nem uma peça “inteligente” em algum canto. Tudo o que a disciplina vai chamar genericamente de “o hardware” é uma destas sete montagens — e cada uma resolve uma pergunta:

PeçaA pergunta que ela respondeOnde ela reaparece nesta revisão
Porta lógicaQue bit sai, dados os bits que entram?Em todas as outras seis — é o átomo
Somador completoQuanto dá, e o que sobra para a casa seguinte?A ULA, no bloco 1
Somador em cascataE com vários bits de uma vez?A ULA de 8 bits, no bloco 1
DecodificadorDado um número, qual linha eu acendo?O endereço virando linha de memória (blocos 1 e 5)
CodificadorDada a linha que pediu, qual é o número dela?O vetor de interrupção, no bloco 3
MultiplexadorEntre vários, quem tem permissão de falar?O barramento, no bloco 1
Flip-flopComo um valor fica guardado?Todo registrador — inclusive o que guarda o bit de modo (bloco 2)

Repare no que essa tabela já entrega de graça: não há nada na coluna do meio que se pareça com “executar um programa”. Um processador não sabe o que é um programa, um usuário ou um sistema operacional — ele sabe somar, escolher uma linha e segurar um bit. Todo o resto da disciplina é construído em cima dessa modéstia.

Na bancada abaixo cada peça aparece isolada, uma aba de cada vez, com o valor que a porta realmente calculou — e cada aba termina apontando exatamente onde aquela peça reaparece montada no simulador do bloco seguinte. São sete desafios; faça-os antes de seguir.

🔑
Guarde a distinção que a bancada marca em laranja: alguns fios carregam dado (o valor que está sendo calculado) e outros carregam controle (a permissão de agir) — o EN do decodificador, o S1S0 do multiplexador. Essa é a mesma separação que, algumas camadas acima, vira modo usuário × modo núcleo: um bit que não é dado nenhum, e que decide o que pode acontecer.
1 · Fundamento

A CPU só sabe fazer uma coisa

Um processador não “roda programas”. Ele repete, para sempre, três passos: buscar a próxima instrução, decodificar e executar. Não há nada além disso — nem noção de programa, nem de usuário, nem de sistema operacional.

Isso tem uma consequência que organiza a disciplina inteira: o sistema operacional é apenas mais um conjunto de instruções nessa mesma fila. Quando o SO “assume o controle”, o que aconteceu no hardware foi simplesmente que o PC passou a apontar para o código dele. Todo o resto — proteção, multitarefa, memória virtual — é construído em cima desse fato modesto.

1 BUSCA — o PC diz o endereço, a memória entrega o byte
2 DECODIFICA — a unidade de controle lê o opcode
3 EXECUTA — os fios certos acendem
Barramento. O feixe de fios que liga todos os blocos. Vários podem ler ao mesmo tempo, mas só um pode escrever por vez — dois dirigindo o mesmo fio seria um curto-circuito. É por isso que a unidade de controle emite no máximo um sinal de saída por ciclo.

No simulador a seguir, a máquina está inteira exposta: registradores, memória, cache, ULA e a unidade de controle. Ande de clock em clock e observe uma coisa só — em cada ciclo, alguém dirige o barramento e alguém captura. Depois desça às abas de portas lógicas: o somador, o decodificador de endereço, o comparador da cache e a trava que guarda um bit.

🔑
Conte os ciclos gastos só na busca das instruções e compare com os gastos em trabalho útil. Essa proporção é o motivo de existirem cache de instruções, pipeline e prefetch — e é a mesma conta que reaparece quando o SO decide quanto custa uma troca de contexto.
2 · Proteção

A fronteira é um bit

Se o SO é só mais um programa, por que um aplicativo qualquer não pode fazer o que ele faz? Porque existe um bit no registrador de status que o hardware consulta antes de executar certas instruções.

AspectoModo usuárioModo núcleo
Instruções privilegiadasBloqueadas (geram exceção)Permitidas
Acesso a dispositivosIndireto, por chamada de sistemaDireto
Alterar o próprio privilégioImpossível — é privilegiadoPossível
Entrada para o outro ladoSó por evento (trap/interrupção/exceção)Retorno restaura o bit salvo

Três consequências que caem em prova, e que o simulador abaixo deixa você comprovar na marra:

  • A fechadura não abre por dentro. Escrever no bit de modo é, ela própria, uma instrução privilegiada.
  • O modo muda por evento, nunca por endereço. Saltar para dentro do núcleo não dá privilégio: o bit não acompanha o PC.
  • São duas cercas. O bit de modo barra instruções; a MMU barra endereços. As duas leem o mesmo bit.
3 · Retomada

Três origens, um mecanismo

O SO não fica “vigiando” o programa — ele está parado, sem CPU nenhuma. Só volta a executar quando um evento força o desvio. E os eventos são de três tipos, que se distinguem por uma pergunta só: de onde veio, no tempo?

InterrupçãoExceçãoTrap
OrigemDispositivo externoA própria instruçãoO programa, de propósito
No tempoAssíncronaSíncrona, involuntáriaSíncrona, voluntária
ExemploTimer, teclado, redeDivisão por zero, falta de páginaread(), write()
A instrução correnteTermina normalmenteNão se completa (pode ser refeita)É ela mesma o pedido

Os três convergem para o mesmo caminho de hardware: salvar contexto → consultar o vetor → executar o tratador em modo núcleo → retornar. Quem muda é só a causa e o número do vetor. É por isso que se estuda os três juntos.

4 · Tempo

Quanto tempo o hardware demora para chamar o SO

Em um sistema de propósito geral, a latência de interrupção é um detalhe. Em um sistema embarcado com prazo, ela é requisito de projeto — e o que a define não é a média, é o pior caso.

A conta tem quatro parcelas, e três delas dependem de decisões do sistema operacional:

  1. Terminar a instrução corrente — o hardware não interrompe no meio (a divisão longa é o pior caso clássico).
  2. Tempo com interrupções mascaradas — toda região crítica do núcleo empurra o atendimento para frente.
  3. Salvar o contexto e desviar pelo vetor — custo fixo do hardware, mas cresce com quantos registradores existem.
  4. Prioridade — se um tratador mais prioritário estiver rodando, o seu espera.
⚠️
Mascarar interrupções é a ferramenta mais barata do núcleo para proteger uma região crítica — e a mais cara em tempo real. Um trecho mascarado de 200 µs torna impossível qualquer prazo de 100 µs, por mais rápido que seja o processador.

Na bancada abaixo, dispare dispositivos, mascare linhas e observe a latência medida contra o prazo. Para projetar em sala, ela também abre em tela cheia.

5 · O custo escondido

A memória é o que decide o desempenho

Contar instruções engana. Duas execuções do mesmo programa, com o mesmo número de instruções, podem diferir muito no tempo — e a diferença mora na memória, não na ULA.

No simulador do primeiro bloco, o programa do laço roda em 216 ciclos com a cache ligada e 300 sem ela: as mesmas 35 instruções, quase 30% de diferença. E ele ainda perde acertos por conflito de mapeamento direto — dois blocos disputando a mesma linha, com o resto da cache vazio ao lado.

Isso importa para a disciplina por um motivo direto:

🔑
Uma troca de contexto não custa só os registradores salvos. O processo que entra encontra a cache e a TLB cheias do outro processo, e vai colecionar faltas até reaquecer. Esse custo não aparece em nenhuma contagem de instruções — mas é ele que impõe um piso ao quantum do escalonador e explica por que trocar de processo com frequência demais derruba a vazão do sistema.
6 · Quadro-resumo

Cada serviço do SO em cima de uma peça de hardware

Se você levar uma única tabela para a prova, leve esta. A coluna da esquerda é hardware; a da direita é o que o sistema operacional consegue prometer por causa dela — e o que aconteceria sem ela.

Peça de hardwareO que o SO constrói com elaSem ela
Bit de modo + instruções privilegiadasProteção e isolamento entre processosQualquer programa manda no hardware
Timer + interrupção periódicaMultitarefa preemptiva, escalonamentoSó cooperação: um laço infinito trava a máquina
Vetor de interrupçõesTratamento uniforme de eventos e de E/SSeria preciso consultar cada dispositivo o tempo todo
ExceçõesMemória virtual (falta de página), depuração, sinaisTodo endereço teria de ser conferido em software
Trap / syscallChamadas de sistema com ponto de entrada fixoNão haveria como pedir serviço sem abrir a porteira
MMU / tabela de páginasEspaços de endereço separados, memória virtualUm processo enxergaria e corromperia a memória dos outros
Cache e localidadeDesempenho real; define o quantum útilCada acesso pagaria o preço cheio da RAM
DMAE/S sem queimar CPUO processador copiaria byte a byte
7 · Erros clássicos

O que a turma costuma errar

Frase que parece certaPor que está errada
“O SO está sempre rodando, vigiando os programas.”Ele está parado, sem CPU. Só executa quando um evento devolve o controle a ele.
printf é uma chamada de sistema.”É função de biblioteca, em modo usuário. Só vira write() quando o buffer enche.
“Quem executa código do núcleo está em modo núcleo.”O bit não muda com o endereço. Sem um evento, não há mudança de modo.
“Exceção é sempre erro.”A falta de página é exceção e não é erro nenhum: é a memória virtual funcionando.
“Mascarar interrupção é de graça.”O evento fica pendente; em tempo real, é o pior caso desse atraso que fura o prazo.
“Cache é otimização, não muda o comportamento.”Não muda o resultado, mas muda o tempo — e em tempo real, tempo é comportamento.
“Mais núcleos resolvem.”A parte serial não paraleliza (Amdahl), e a memória continua sendo o gargalo compartilhado.
8 · Antes da prova

Consegue explicar sem consultar?

  • Descrever os passos de LDA 13 desde o PC até o acumulador, dizendo quem dirige o barramento em cada ciclo.
  • Explicar por que escrever no bit de modo precisa ser privilegiado — e o que aconteceria se não fosse.
  • Classificar oito eventos em interrupção, exceção ou trap, justificando pela origem no tempo.
  • Listar as quatro parcelas da latência de interrupção e dizer quais o SO controla.
  • Explicar por que uma troca de contexto custa mais do que os registradores salvos.
  • Dizer, para cada linha do quadro-resumo, o que o SO perderia sem aquela peça de hardware.
💡
Um bom teste: tente explicar o que é um sistema operacional sem usar a palavra “sistema operacional” — só falando de bits de registrador, fios de controle e eventos. Se você consegue, entendeu a unidade.
Teste seu conhecimento

Revisão · fundamentos de hardware

12 questões sobre tudo o que esta revisão cobriu. O comentário aparece na hora.

0/12

📌 Resumo — leve isto para a prova

  • A CPU só busca, decodifica e executa; o SO é código nessa mesma fila e só roda quando um evento o chama.
  • A proteção não é uma regra do software: é um bit que o hardware consulta antes de cada instrução privilegiada.
  • O modo muda por evento, nunca por endereço — e a porta legal tem destino fixado pelo núcleo no boot.
  • Interrupção (externa), exceção (da instrução) e trap (pedida) percorrem o mesmo caminho: contexto → vetor → tratador → retorno.
  • Em tempo real vale o pior caso da latência, não a média; mascarar interrupções é a principal fonte de atraso controlada pelo SO.
  • O desempenho real é decidido na memória: cache, localidade e o custo escondido de esfriar a cache a cada troca de contexto.