Quatro perguntas, quatro mecanismos
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.
O que impede um programa de mandar no hardware? → o bit de modo e as instruções privilegiadas.
Como o controle volta para o SO? → interrupção, exceção e trap: três origens, um mecanismo.
Quanto tempo tudo isso demora? → latência, mascaramento e o custo real da memória.
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ça | A pergunta que ela responde | Onde ela reaparece nesta revisão |
|---|---|---|
| Porta lógica | Que bit sai, dados os bits que entram? | Em todas as outras seis — é o átomo |
| Somador completo | Quanto dá, e o que sobra para a casa seguinte? | A ULA, no bloco 1 |
| Somador em cascata | E com vários bits de uma vez? | A ULA de 8 bits, no bloco 1 |
| Decodificador | Dado um número, qual linha eu acendo? | O endereço virando linha de memória (blocos 1 e 5) |
| Codificador | Dada a linha que pediu, qual é o número dela? | O vetor de interrupção, no bloco 3 |
| Multiplexador | Entre vários, quem tem permissão de falar? | O barramento, no bloco 1 |
| Flip-flop | Como 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.
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.
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.
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.
| Aspecto | Modo usuário | Modo núcleo |
|---|---|---|
| Instruções privilegiadas | Bloqueadas (geram exceção) | Permitidas |
| Acesso a dispositivos | Indireto, por chamada de sistema | Direto |
| Alterar o próprio privilégio | Impossível — é privilegiado | Possível |
| Entrada para o outro lado | Só 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.
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ção | Exceção | Trap | |
|---|---|---|---|
| Origem | Dispositivo externo | A própria instrução | O programa, de propósito |
| No tempo | Assíncrona | Síncrona, involuntária | Síncrona, voluntária |
| Exemplo | Timer, teclado, rede | Divisão por zero, falta de página | read(), write() |
| A instrução corrente | Termina normalmente | Nã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.
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:
- Terminar a instrução corrente — o hardware não interrompe no meio (a divisão longa é o pior caso clássico).
- Tempo com interrupções mascaradas — toda região crítica do núcleo empurra o atendimento para frente.
- Salvar o contexto e desviar pelo vetor — custo fixo do hardware, mas cresce com quantos registradores existem.
- Prioridade — se um tratador mais prioritário estiver rodando, o seu espera.
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.
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:
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 hardware | O que o SO constrói com ela | Sem ela |
|---|---|---|
| Bit de modo + instruções privilegiadas | Proteção e isolamento entre processos | Qualquer programa manda no hardware |
| Timer + interrupção periódica | Multitarefa preemptiva, escalonamento | Só cooperação: um laço infinito trava a máquina |
| Vetor de interrupções | Tratamento uniforme de eventos e de E/S | Seria preciso consultar cada dispositivo o tempo todo |
| Exceções | Memória virtual (falta de página), depuração, sinais | Todo endereço teria de ser conferido em software |
Trap / syscall | Chamadas de sistema com ponto de entrada fixo | Não haveria como pedir serviço sem abrir a porteira |
| MMU / tabela de páginas | Espaços de endereço separados, memória virtual | Um processo enxergaria e corromperia a memória dos outros |
| Cache e localidade | Desempenho real; define o quantum útil | Cada acesso pagaria o preço cheio da RAM |
| DMA | E/S sem queimar CPU | O processador copiaria byte a byte |
O que a turma costuma errar
| Frase que parece certa | Por 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. |
Consegue explicar sem consultar?
- Descrever os passos de
LDA 13desde 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.
Revisão · fundamentos de hardware
12 questões sobre tudo o que esta revisão cobriu. O comentário aparece na hora.
📌 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.