[10]. Descreva a razão para existência de dois modos de execução (modo supervisor ou modo usuário). Explique de que forma a utilização de dois modos de execução - supervisor e usuário - auxilia na implementação de mecanismos de proteção.

Passo 1

O enunciado pede duas coisas claras:
  • Descrever a razão para a existência de dois modos de execução (modo supervisor e modo usuário).
  • Explicar de que forma a utilização desses dois modos auxilia na implementação de mecanismos de proteção.
Informações fornecidas: apenas essa pergunta (não há números, figuras nem restrições adicionais).

Passo 2

O que são, em palavras simples: existe um modo “chefe” (modo supervisor, também chamado kernel ou modo privilegiado) e um modo “normal” (modo usuário). Pense assim: o computador tem operações que são como “chaves mestras” (acessar dispositivos, mudar tabelas de memória, desligar a máquina). Essas operações só podem ser feitas por quem tem autorização — o modo supervisor. Programas comuns rodam no modo usuário e não têm essas chaves.

Passo 3

Por que isso foi criado (razão geral)?
O objetivo principal é proteger o sistema contra erros e ações maliciosas. Se todo processo pudesse executar instruções sensíveis, um erro ou um programa ruim poderia parar o sistema, corromper dados, acessar outros programas ou controlar hardware diretamente. Separar em dois modos cria uma barreira: o usuário só faz operações “seguras”, o kernel faz operações “perigosas” com controle.

Passo 4

Como o hardware torna a separação real (mecanismo básico)?
  • O processador tem um bit ou nível que indica o modo atual (modo supervisor ou modo usuário).
  • Existem instruções privilegiadas que o CPU só permite executar quando esse bit diz “supervisor”. Se um processo em modo usuário tentar executar, o hardware gera uma exceção/trap.
  • O hardware também controla a tradução/limites de memória (MMU / tabela de páginas): páginas do kernel podem ser marcadas inacessíveis para modo usuário. Assim o acesso à memória do kernel é impedido pelo próprio hardware.

Passo 5

Mostre passo a passo: como um programa usuário solicita uma operação privilegiada sem violar a proteção (syscall/trap)
  1. O programa usuário precisa, por exemplo, escrever num ficheiro (recurso protegido). Ele chama uma função de biblioteca que faz uma chamada de sistema (syscall).
  2. A chamada de sistema executa uma instrução especial (soft interrupt / trap). Essa instrução faz com que o hardware salve o contexto do processo, altere o modo para supervisor e pule para o código do kernel.
  3. O kernel (já em modo supervisor) valida parâmetros, checa permissões, executa a operação privilegiada (acesso a disco, manipular tabela de páginas, etc.).
  4. Quando termina, o kernel restaura o contexto e o hardware troca de volta para modo usuário, retornando o controle ao processo.
    Esse fluxo garante que todo acesso privilegiado passe por verificações do kernel.

Passo 6

Como isso ajuda exatamente na implementação de mecanismos de proteção (exemplos concretos)?
  • Controle de instruções privilegiadas: tarefas perigosas só são executadas pelo kernel (ex.: habilitar/desabilitar interrupções, instruções I/O direto, instruções de gerenciamento de MMU). Usuário tenta -> trap -> bloqueio.
  • Isolamento de memória: com tabelas de páginas controladas pelo kernel, processos usuários não podem mapear ou acessar páginas do kernel nem de outros processos; tentativas geram page fault.
  • Interface controlada (syscalls): o kernel valida argumentos (endereços, tamanhos) antes de tocar no recurso, evitando que usuário passe ponteiros inválidos.
  • Proteção de dispositivos e I/O: acesso a registradores de hardware fica restrito; driver no kernel realiza a interação segura.
  • Tolerância a falhas: se um processo faz algo errado, só ele morre (ou é bloqueado); o kernel continua ativo, mantendo o sistema vivo.
  • Segurança: impedimento de escalonamento direto de privilégios — para ganhar privilégios é preciso passar pelos mecanismos do kernel (auditoria, autenticação, checagens).

Passo 7

Mecanismos que usam esses dois modos (palavras que caem bem na prova, explicadas de forma simples):
  • Bit de modo no CPU: impede execução de instruções privilegiadas em modo usuário.
  • Exceções/traps/interrupts: pontos controlados de entrada no kernel; garantem que transições aconteçam somente por caminhos previstos.
  • MMU / tabelas de páginas com bits de proteção (read/write/executable e acesso kernel/user): bloqueiam acessos indevidos.
  • Stacks separados (stack do kernel vs stack do usuário): evita que overflow do usuário corrompa stack do kernel.
  • I/O permission bitmap ou instruções I/O privilegiadas: controlam quais processos podem acessar portas de I/O (normalmente nenhum, só drivers no kernel).

Passo 8

Pequeno exemplo didático (imagina na prova): “Por que um programa usuário não pode desligar a máquina?” Resposta curta que mostra entendimento: porque a instrução de desligar é privilegiada; se fosse permitida a qualquer processo, um programa com bug ou malicioso desligaria o computador quando quisesse. Com dois modos, essa instrução só roda em modo supervisor; para pedir desligar, o usuário faz um syscall que o kernel valida (por exemplo, verifica permissões administrativas) e só então executa a ação.

Passo 9

Resumo de como você pode responder num enunciado de prova (frases prontas e diretas): dizer que os dois modos existem para separar privilégios, proteger recursos e isolar falhas; que o hardware impõe essa separação (bit de modo, instruções privilegiadas, MMU) e que transições só ocorrem por traps/syscalls/interrupts, permitindo ao kernel validar e controlar todas as operações sensíveis.

Resposta

Os dois modos existem para separar privilégios: o modo supervisor (kernel) tem acesso total ao hardware e recursos críticos, enquanto o modo usuário tem acesso limitado. Essa separação, imposta pelo hardware (bit de modo, instruções privilegiadas, MMU), obriga que todas as operações sensíveis passem por pontos controlados (traps/syscalls/interrupts) onde o kernel valida permissões e parâmetros; assim evita-se que programas usuários acessem diretamente dispositivos, corrompam memória alheia ou executem instruções perigosas, permitindo isolamento de falhas, controle de recursos e implementação segura dos mecanismos de proteção.

Exercícios relacionados