Transição do espaço do usuário para o espaço do kernel

Transição do espaço do usuário para o espaço do kernel

Tanto fisicamente (hardware, anéis) quanto logicamente (software), qual é a transição do espaço do usuário para o espaço do kernel? E vice versa.

Ou, de maneira mais geral, o que acontece quando ocorre uma transição de "espaço" (ou anel)? E o que o torna caro (um dos principais problemas do Minix)?

Esta questão segue para comentários emesseresponder.

Responder1

Da perspectiva do sistema operacional, o espaço do usuário é a execução do código de um processo e o espaço do kernel é a execução do código do kernel. Uma transição do espaço do usuário para o espaço do kernel é a entrada em umchamada de sistema, e uma transição do espaço do kernel para o espaço do usuário é o retorno de uma chamada do sistema.

Da perspectiva do processador, o espaço do usuário e o espaço do kernel são níveis de privilégio. “Anel 3” e “anel 0” são os nomes usados ​​nos processadores Intel x86 (existem os anéis 1 e 2, mas a maioria dos computadores não os utiliza, porque não há muita utilidade para eles). Outros tipos de CPU usam nomes diferentes, por exemplo modo de usuário e modos privilegiados (ou de sistema) no ARM.

A transição entre os modos é feita por instruções que alteram o modo do processador e saltam para um endereço diferente; o detalhe destas instruções depende muito do tipo de CPU. Além de mudar o modo do processador e saltar para um endereço diferente, as instruções de transição de modo normalmente executam algumas outras tarefas, como trocar o valor de alguns registros (novamente, isso depende muito da CPU).

Uma transição do modo de usuário para o modo kernel deve saltar para um endereço fixo, que foi definido pelo kernel. Para manter a segurança do sistema, o código no modo de usuário não pode mudar o processador para o modo kernel, exceto para invocar um trecho de código (o ponto de entrada da chamada do sistema) que foi especialmente criado para funcionar com segurança, não importando o que seja. o código do modo de usuário tem feito. O ponto de entrada da chamada do sistema primeiro salva os valores do registro em uma área de memória designada e executa qualquer outra contabilidade necessária, depois lê os parâmetros da chamada do sistema e despacha a chamada do sistema para a função apropriada. Dependendo do tipo de processador, a escrituração contábil pode envolver a configuração doMMUtabelas adequadamente. O kernel pode decidir a qualquer momento pausar o processo de chamada e agendar outro processo.

Uma transição do modo kernel para o modo usuário pode acontecer em qualquer lugar que o kernel considere adequado. O kernel restaura os registros salvos, a configuração do MMU e tudo o mais que for necessário, e grava o valor de retorno da chamada do sistema e, finalmente, volta para a instrução no processo após a chamada do sistema.

informação relacionada