A respeito da organização estruturada de computadores, responda às seguintes perguntas:
Algumas instruções no nível do sistema operacional da máquina são idênticas a instruções em linguagem ISA. Elas são executadas diretamente pelo microprograma ou pelo hardware, e não pelo sistema operacional. À luz de sua resposta ao problema anterior, por que você acha que isso acontece?

Passo 1

Beleza, aqui o enunciado pergunta por que certas “instruções de sistema” (aquelas que o SO costuma usar) são exatamente as mesmas do ISA e rodam direto no microprograma ou no hardware, em vez de serem implementadas pelo próprio sistema operacional. O conteúdo é Organização e Arquitetura de Computadores, mais especificamente instruções privilegiadas x sistema operacional. Para resolver a gente vai precisar:
  • Entender o que é ISA (Instruction Set Architecture)
  • Saber a diferença entre instruções em modo usuário e instruções privilegiadas
  • Reconhecer por que desempenho e segurança importam na execução dessas instruções

Passo 2

Primeiro, define ISA: é o conjunto de instruções que o processador entende nativamente. Quando o hardware ou microprograma implementa uma instrução, ele faz isso num nível bem baixo, com acesso direto aos registradores, barramentos, controle de interrupção etc.
Já o Sistema Operacional (SO) geralmente roda em modo privilegiado (kernel), mas mesmo assim ele… esquece de ser tão rápido quanto o hardware puro. Se toda vez que precisássemos, por exemplo, “desligar interrupções” ou “trocar de modo usuário para kernel” fosse preciso uma rotina de software gigante, ia ficar lento e correria risco de condições de corrida.

Passo 3

Aí entra o conceito de instruções privilegiadas:
  • Só podem ser executadas em modo kernel
  • Precisam de acesso a recursos internos do processador (por exemplo, mudar a tabela de páginas ou desabilitar interrupções)
  • Precisam acontecer de forma ATÔMICA, sem chance de serem interrompidas no meio
Se você quisesse implementar isso “na unha” em código C ou Assembly comum no SO,
  1. ia dar um trap para o kernel,
  2. o kernel rodava um monte de código de software,
  3. no fim voltava pro usuário.
Isso gera pelo menos duas transições de modo (user→kernel e kernel→user) e aumenta muito a latência.

Passo 4

Por isso, o fabricante do processador inclui essas instruções diretamente no microcódigo ou no caminho de dados do hardware. Assim:
  • São executadas em um ciclo de clock ou pouquíssimos ciclos (alta performance)
  • Mantêm a atomicidade que garantem integridade do sistema
  • Evitam overhead de chamar rotina de software

Resposta

Acontece porque essas operações precisam ser rápidas, atômicas e só executáveis em modo privilegiado. Se dependêssemos do sistema operacional (código de software) para fazê-las, teríamos muitas transições de contexto, alto custo de performance e risco de inconsistência. Implementar direto no microprograma ou hardware garante velocidade e segurança.

Exercícios relacionados