Luks,
Vc lembra como que um codigo de usuario faz uma chamada de sistema?
R: O codigo do usuario guarda um conjunto de info num conjunt. de
rgistradores e chama uma TRAP especifica (trap de chamada de
sistema)... Isso dispara um codigo muito eficiente no SO (ja em modo
kernel) que checa nesses registradores e usa isso pra disparar o
codigo da chamada de sistema correspondente (que usa parametros nesses
registradores para acessar memoria do proc, etc).
Nesses casos de chamada de sistema, sempre rola essa sequencia:
MOD USU: proc. grava param em regs;
MOD USU: proc chama TRAP;
MOD KER: callback para TRAP especifica é chamado; // isso é quase tão
eficiente quando um JUMP em assembly...
MOD KER: chamada de sistema executavel;
MOD KER: religa modo USU;
MOD USU: volta o proc. onde tinha acionado a chamada de sistema;
Veja que NAO OCORRE troca de contexto... Isso representa um modelo de
fazer esse switch... Sistemas operacionais com MICROKERNEL devem
funcionar de maneira diferente. Isso serve como uma explicacao
simples. Vale a pena dar uma lida nos livros de organização/arq de
computadores, como o link que o fabricio indicou tb.
Lembrem tb das referencias BASICAS de SOs por dentro:
1 Linux Kernel Internals
2 Linux Device Drivers
3 Understanding the Linux Kernel
Procurem nos locais normais para PDFs...
Um outro detalhe que deve ser lembrado é que esses computadores atuais
não possuem apenas 2 modos (kernel e usuario). Eles possuem na verdade
cerca de 7 modos, que sao configuraveis no momento do boot. As
primeiras instrucoes que rodam numa CPU tem "direito" de configurar
que instrucoes e registradores sao acessiveis a cada um dos cerca de 7
modos. No caso de SOs stand-alone, a tendencia é usar só os modos 0 e
1, com configuracoes que representam esses conceitos modo kernel e
modo usuario.
Quando vc roda um sistema de VIRTUALIZACAO plena, tipo VMWare, sao
configurados mais desses modos, dependendo do tipo de virtualizacao
utilizada, mas isso é OUTRA HISTORIA...
[]'s
2008/8/22 Fabricio Akio <
fabric...@gmail.com>:
--
MSc. Erick Baptista Passos
Sertão 3D
http://sertao3d.wordpress.com