As próximas lições cobrem conceitos mais teóricos. Se você prefere prática, sinta-se à vontade para pular e retornar a esses tópicos mais tarde.
Um aspecto fundamental da arquitetura Linux é a separação entre o espaço do usuário (user space) e o kernel. Mas por que não podemos combinar seus poderes em uma única camada? A razão é a segurança e a estabilidade, o que é alcançado fazendo com que operem em modos diferentes.
Qual é a Diferença Entre Modo Kernel e Modo Usuário
O sistema opera em dois modos distintos: modo kernel e modo usuário. Essa separação é crucial para proteger o hardware e os recursos do sistema contra acesso direto e descontrolado por aplicações.
Em modo kernel, o kernel tem acesso completo e irrestrito ao hardware; ele controla tudo. Este é o nível mais alto de privilégio.
Em modo usuário, as aplicações têm acesso muito limitado a uma pequena e segura porção da memória e dos recursos da CPU.
Quando uma aplicação de usuário precisa realizar uma ação envolvendo hardware — como ler de um disco, enviar dados pela rede ou acessar um periférico — ela não pode fazer isso diretamente. Essas operações devem ser tratadas pelo kernel em modo kernel. Esse design impede que um programa com falha ou malicioso comprometa todo o sistema. Por exemplo, você não gostaria que um spyware tivesse acesso direto ao hardware, pois ele poderia ler todos os seus dados ou controlar sua webcam.
Anéis de Proteção e Acesso Privilegiado
Esses modos diferentes são frequentemente descritos como níveis de privilégio ou anéis de proteção. Imagine uma fortaleza com paredes concêntricas: a área mais interna é a mais segura e possui a maior autoridade. Os anéis de proteção em um computador funcionam de forma semelhante, com o anel mais interno correspondendo ao nível de privilégio mais alto.
Em uma arquitetura de computador x86 padrão, existem dois níveis principais:
- Anel 0 (Ring 0): É onde o kernel é executado. Ele possui o mais alto nível de privilégios de kernel, pode executar qualquer instrução do sistema e recebe total confiança para gerenciar o hardware. Este é o cerne do acesso privilegiado.
- Anel 3 (Ring 3): É o nível onde as aplicações em modo usuário são executadas. É o anel com menos privilégios e não tem acesso direto ao hardware.
Este modelo de segurança baseado em anéis garante que as aplicações de usuário fiquem isoladas dos componentes críticos do sistema. Mas se as aplicações estão sempre em um modo diferente do kernel, como elas podem realizar as operações de hardware necessárias?
Chamadas de Sistema e Privilégios de Kernel
A ponte entre o modo usuário e o modo kernel é a chamada de sistema (system call). Quando uma aplicação de usuário precisa realizar uma tarefa privilegiada, ela faz uma chamada de sistema para solicitar que o kernel execute a ação em seu nome.
Esse processo permite que a aplicação transite temporária e seguramente do modo usuário para o modo kernel para executar uma instrução específica e controlada. Assim que a tarefa é concluída, o sistema retorna ao modo usuário. Esse mecanismo garante que as aplicações possam obter os serviços de que precisam sem ganhar acesso privilegiado direto e perigoso ao hardware.