O que acontece mais, comutadores de contexto ou comutadores de modo?

2

O que acontece mais, comutadores de contexto ou comutadores de modo?

Eu mesmo tenho duas respostas, mas não sei qual delas está correta:

  1. As alternâncias de contexto acontecem no modo de usuário, mas isso não significa que seja necessária uma chamada de sistema; portanto, as mudanças de modo não acontecem quando ocorre uma troca de contexto.

  2. As alternâncias de contexto significam que um despacho é necessário. Eu acho que isso é privilegiado, então uma mudança de modo do usuário para o modo kernel é necessária para fazer uma mudança de contexto. O que significa que um comutador de contexto acompanha um comutador de modo.

Alguém tem uma resposta definitiva para isso?

    
por Lucas Kauffman 23.06.2011 / 16:54

1 resposta

3

Uma alternância de contexto entre processos sempre envolve a entrada do modo supervisor no nível do processador. O planejador precisa acessar a tabela de processos e o mapa de memória do próximo processo, ambos os quais não são acessíveis ao processo antigo e, portanto, requerem a elevação de privilégios; e, em seguida, o planejador precisa apontar a MMU para o mapa de memória do novo processo, que ainda requer privilégios elevados.

Uma mudança de contexto entre threads do mesmo processo não precisa envolver o kernel.

Então, o que acontece com mais frequência depende de você ter muitos threads leves no seu sistema.

Leitura em segundo plano: além de Wikipedia , este artigo (opções de contexto no Linux Information Project) . E, claro, Entendendo o Kernel do Linux (capítulo 3).

    
por 24.06.2011 / 01:10