O processo do kernel precisa salvar algo ao alternar para o modo de usuário? [fechadas]

6

De acordo com meu professor,

"while switching from user mode to kernel mode, the status of the user process has to be saved completely. But when switching from kernel mode to user mode, nothing has to be saved, as the kernel process has nothing to save."

Ele está certo? O processo do kernel não tem nada para salvar?

    
por Vishnu Vivek 07.01.2013 / 23:33

4 respostas

5

Isso é melhor compreendido se dissecarmos sua história e tentar usar uma terminologia melhor:

  • ao alternar do modo de usuário para o modo kernel

    Isso também é chamado de troca de modo.

    Quando isso acontece? Isso acontece quando um kernel rotina é chamado; que pode, por exemplo, acontecer quando é chamado a partir do modo de usuário através de elevação ou através de uma interrupção de hardware.

    O que é essa rotina ? É um pedaço de código que lida com a chamada / interrupção.

  • o status do processo do usuário deve ser salvo completamente.

    Exatamente, como o kernel estará executando uma rotina do kernel , precisamos salvar temporariamente o status do processo do usuário que estava sendo executado.

  • Mas ao mudar do modo kernel para o modo usuário, nada precisa ser salvo

    Não há nada a ser salvo desde que nós chamamos uma rotina que tem feito em execução, não há mais um status no processo do kernel desde a rotina não está mais em execução.

    O que acontece é que o status do processo do usuário precisa ser carregado novamente para continuar executando o processo do usuário.

Então, temos duas coisas diferentes aqui:

  • um processo do usuário , que precisa continuar executando em uma mudança de modo, então seu status é armazenado.

  • uma rotina do kernel , que é executada em uma troca de modo, então seu status é descartado.

Como para responder a sua pergunta " O processo do kernel não tem nada para salvar? "; não há realmente um processo kernel em execução, é apenas um shim que armazena a memória do kernel, rotinas e outras magias.

    
por 08.01.2013 / 01:40
1

Eu nunca gostei da terminologia do "processo kernel", mas isso é apenas um problema pessoal. Eu acredito que a resposta é que todos os processos são processos do usuário em sua base, e o “processo do kernel” é ativado somente quando um ponto de entrada do kernel é chamado a partir do modo de usuário. (Eu suspeito que seu professor possa dizer que não redigi isso corretamente, mas acredito que estou perto o suficiente para lhe dar uma ideia razoavelmente precisa do relacionamento.)

É como acontece em um programa comum: Se você tem uma função hypot e chama sqrt , o sistema precisa salvar as variáveis locais de hypot e o ponto de retorno (contador de programa / ponteiro de instrução de qual sqrt foi chamado). Mas quando sqrt retornar e hypot continuar, o quadro de pilha sqrt poderá ser descartado.

    
por 08.01.2013 / 00:09
1

Parece que está no contexto da multitarefa preventiva .

O sistema operacional / kernel está sempre em execução, portanto não há nada a ser salvo. Outros programas também estão sendo executados (no topo do SO), mas cada um recebe uma fração de segundo de cada vez, por sua vez. À medida que cada programa for alternando, a pilha desse programa precisa ser carregada para que o processamento possa ocorrer e, em seguida, o estado de todos os registradores precisará ser salvo de volta para a memória RAM do processador para que o próximo programa possa ser carregado.

    
por 08.01.2013 / 01:21
1

O professor está parcialmente correto.

Os dados que estão sendo salvos ao alternar do modo de usuário para o modo kernel são o estado da CPU , não o processo. O modo de usuário e o modo kernel estão relacionados à CPU, não relacionados ao processo. Quando o kernel executa alguma função em nome do usuário, o estado da CPU é salvo antecipadamente. Ou seja, o estado da CPU quando estava executando o código do modo de usuário. Em seguida, o kernel executa sua ação com base na solicitação do código do modo de usuário. Finalmente, o kernel restaura o estado da CPU de volta ao estado salvo anteriormente. O kernel pode retornar a CPU de volta ao modo de usuário, dependendo do kernel em questão.

O processo do kernel não tem nada para salvar, porque não estava sendo executado de antemão. Ele (o processo do kernel) faz um trabalho em nome do processo do modo de usuário e, em seguida, é concluído. A CPU pode retornar ao modo de usuário, no que diz respeito ao kernel.

Os componentes do sistema operacional geralmente são executados no modo kernel, também chamado de Ring 0 em processadores x86. O modo de usuário contém aplicativos e às vezes é chamado de Anel 3.

    
por 08.01.2013 / 01:44