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?
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,
- ia dar um trap para o kernel,
- o kernel rodava um monte de código de software,
- 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.