ti-enxame.com

O que significa quando o código é executado no modo [Kernel | Usuário]?

O que significa quando o código é executado no modo kernel ou usuário?

14
Luc M

A resposta curta é: apenas informa onde os programas estão gastando seu tempo.

Para uma resposta mais longa, vou explicar isso em dois passos. Primeiro:

1. Entrando no modo Kernel

Todo código regular que você escreve, é executado no "modo de usuário".

Os programas podem usar bibliotecas para fazer tarefas comuns para eles. Este também é o código do usuário.

Em algum momento, o programa pode exigir uma função central do sistema. Por exemplo:

  • acessando o conteúdo do arquivo do disco
  • reservando uma parte a memória livre
  • obtendo o quadro de vídeo de um driver da webcam
  • envio de dados de imagem para a placa gráfica.
  • enviando um pacote de rede.

Este essencial - perto de hardware - a funcionalidade é parte do kernel. Esse é o programa central por trás de tudo no seu computador. Ele gerencia tudo que programas precisam para funcionar.

Para usar uma função no kernel, o caminho de execução do programa literalmente faz um salto do modo de usuário para o código do kernel. O kernel faz o seu trabalho e dobra o caminho de execução de volta ao modo de usuário.

Quando um programa gasta muito tempo no modo Kernel, muitas vezes significa que está fazendo muita atividade relacionada ao hardware. Por exemplo, o disco procura ou streaming de vídeo. O hardware também pode estar com defeito; Fazendo o processamento lento e fazendo com que o programa gaste uma quantidade incomum de tempo no espaço do kernel.


2 a diferença

Código no espaço do kernel é alto desempenho. As outras partes do kernel podem chamá-lo diretamente, e o código tem acesso direto a cada recurso do sistema, sem qualquer verificação de limite. A alternação entre o modo kernel/usuário também é uma operação cara, que é completamente evitada executando tudo no código do kernel.

Dentro do kernel No entanto, não há muito espaço para a verificação de segurança, proteção contra acidentes, ou escrevendo para as partes erradas da memória. Estes são serviços que o kernel pode fornecer a outros programas. Ele trouxe programas para acreditar que o mundo parece diferente (programas vivem em um ambiente virtual, de areia/restrito) e, portanto, tudo o que vem/sem saída de programas pode ser traduzido e guardado.

O kernel em si não pode ter muita proteção, porque não há nada atrás dele para protegê-lo. É o coração do sistema, e quando isso pára, tudo termina. Você recebe um pânico de kernel, ou no Windows, o famoso BSOD.

Esse também é o risco de código baseado em kernel, e o motivo mais subsistemas com requisitos de baixo desempenho estão sendo movidos para o Usepace. Peças relacionadas ao hardware essencial No entanto, são tipicamente o código do kernel que não vai mudar nada em breve.

3
vdboor