O que é modo de usuário vs modo de kernel no Windows

O que é modo de usuário vs modo de kernel no Windows

Você deve ter ouvido falar sobre os aplicativos em execução no modo "kernel" ou "usuário". Tudo se resume a como os sistemas operacionais funcionam quando fazem seus empregos. Depois de entender isso, é fácil entender a diferença entre o modo de usuário e o modo de kernel.

Na memória eletrônica do computador, os bits são representados por células de memória com uma carga acima ou abaixo de um determinado limite. Em um disco rígido mecânico, bits são representados como flutuações magnéticas medidas em um prato giratório. Em discos ópticos, poços e terras que fazem ou não refletem a luz a laser, faça o mesmo trabalho.

Não importa como a representação física do código binário é alcançada, você pode reduzir todos os componentes de computador do consumidor para este código de máquina crua.

Então, como você passa da interface amigável ao ser humano de um computador para os processos brutos e de baixo nível no próprio computador? É aí que entra o sistema operacional. Controla diretamente o hardware do computador.

Este software traduz tudo o que os aplicativos (e, portanto, o usuário) querem nas instruções do código da máquina que a CPU e outros componentes entendem. O software mais crítico nesse processo é o kernel.

Qual é o kernel?

O kernel é, como o nome sugere, o núcleo do sistema operacional. O kernel é um software que reside na RAM e direciona tudo o que o computador faz. Quando algo é escrito em memória, é o kernel que direciona a execução.

O kernel sabe como interagir com hardware, como GPUs e cartões de rede, mas pode não saber como operá -los com todo o seu potencial, contando com padrões genéricos na indústria de computadores.

Os drivers de hardware entram em jogo aqui. Os motoristas dizem ao seu sistema operacional como trabalhar com componentes específicos, e é por isso que você precisa de diferentes drivers para NVIDIA e AMD GPUs, por exemplo.

Equipado com os motoristas certos, o kernel é a autoridade final dentro do computador, incluindo fazer coisas que podem destruir dados catastroficamente.

O papel das interfaces de programação de aplicativos (APIs)

Nos dias do MS-DOS, os desenvolvedores de software tiveram que escrever seu software especificamente para o hardware do usuário. O exemplo mais notório disso nos sistemas MS-DOS foram drivers de cartão de som.

Um determinado videogame teria que suportar os cartões mais populares (Sound Blaster, Ad-Lib, Graris Ultrasound, etc.) e espero que a maioria dos jogadores tenha sido coberta. Hoje, as coisas funcionam de maneira muito diferente, graças a APIs.

A tela de seleção de placas de som da Wolf3D

Microsoft DirectX é um ótimo exemplo. Se você deseja uma explicação detalhada, confira o que é DirectX e por que é importante? No entanto, a coisa mais importante a saber é que a API oferece uma maneira padrão para os desenvolvedores de software solicitarem recursos de hardware de componentes como a GPU. Além disso, os fabricantes de hardware devem apenas garantir que seus produtos cumpram o DirectX para garantir a compatibilidade total com qualquer software compatível da mesma forma.

As APIs oferecem uma camada de tradução entre aplicativos de software e o kernel de baixo nível com seus drivers de hardware. Sim, isso vem com uma pequena penalidade de desempenho. Ainda assim, nos computadores modernos, isso é insignificante e vem com uma variedade de vantagens, que é onde finalmente chegamos ao modo de usuário e ao modo de kernel.

Modo do usuário vs. Modo de kernel

Os sistemas operacionais modernos executam centenas ou milhares de “processos” simultaneamente, dinamicamente, dando -lhes tempo de CPU, conforme necessário com base em suas prioridades e requisitos de energia de computação.

Quando você inicia um aplicativo, ele gera processos e a CPU pode executá -los no modo de usuário ou no modo de kernel.

Um processo Windows em execução no modo de usuário tem acesso apenas ao seu próprio espaço de endereço de memória virtual privada e tabela de manuseio. O software usa essas tabelas para armazenar dados na RAM e solicitar recursos. Não há acesso direto à memória ou outro hardware, e cabe ao sistema operacional mapear esses espaços virtuais para o hardware real do computador.

Isso é bom por muitos motivos, mas o benefício mais crucial é que o aplicativo não pode substituir ou alterar dados fora de seu espaço de endereço de memória virtual. Além disso, certas funções estão fora dos limites dos processos no modo de usuário, principalmente aqueles que podem travar o sistema ou destruir dados.

Quando um processo é lançado ou é elevado ao modo de kernel, ele tem acesso total aos recursos do sistema, mesmo aqueles reservados para o sistema operacional. Portanto, em teoria, poderia substituir dados cruciais que o sistema operacional precisa ser executado corretamente.

Armadilhas e exceções

É importante entender que esses dois modos são aplicados no nível de hardware pela própria CPU. Se um aplicativo em execução no modo de usuário tentar fazer algo que requer acesso ao modo de kernel, ele gera uma "armadilha" ou "exceção.”O sistema operacional lidará com o aplicativo, geralmente desligando -o e gerando um registro de colisão para que os desenvolvedores possam ver o que aconteceu na memória quando as coisas saíram dos trilhos.

Os perigos do modo de kernel: a tela azul da morte

Se você já experimentou uma tela azul de morte (que não?) Isso forçou seu computador a desligar ou reiniciar, há uma boa chance de ser um processo de modo de kernel para culpar.

Quando um processo no modo de kernel faz algo que não deveria, o sistema operacional não pode se recuperar e todo o computador interrompe. Quando um processo no modo de usuário fica errado, apenas o aplicativo trava e o restante do software e o sistema operacional podem continuar sem problemas.

Esta é uma área em que as APIs desempenham um papel essencial, pois é a API que solicita privilégios de modo de kernel. Aplicativos no modo de usuário delegam essencialmente solicitações que exigiriam privilégios de modo de kernel à API.

É por isso que o modo de kernel geralmente é concedido apenas a processos de sistema de baixo nível que precisam acessar o hardware do computador diretamente. Geralmente, esse privilégio é estendido a um processo porque precisa de mais desempenho do que o modo de usuário pode fornecer. Algumas instruções da CPU funcionam apenas no modo kernel; portanto, se um processo precisar usar essas funções, deve ser elevado.

Se você está tendo problemas com a tela azul da morte, leia nossa tela azul da Solução de problemas de morte para o Windows 10!