Dúvida sobre modo monitor (kernel) x modo usuário

56 views
Skip to first unread message

Luks

unread,
Aug 22, 2008, 9:19:54 AM8/22/08
to Grupo de estudos de SO - CEFET-PI
Ôpa, primeira dúvida:

Tem certas instruções que por hardware são proibidas de serem
executadas em modo usuário,
tipo acesso à E/S diretamente no modo usuário, desligar o processador,
mexer nos registradores que delimitam o espaço de endereçamento de
memória de um processo e outras coisas ... P/ isso existe um
registrador ou bit sei lá indicador de modo de operação que quando é
zero, digamos, está no modo usuário e no um (1) está no modo kernel,
p/ executar instruções privilegiadas e tals. É o hardware quem
controla o status desse registrador/bit. Mais considerando uma chamada
de sistema que é necessária p/ um processo de usuário tenha acesso à
uma operação de entrada e saída, como o hardware difrencia um código
do SO p/ código do usuário ???

Fabricio Akio

unread,
Aug 22, 2008, 1:56:39 PM8/22/08
to grupo-de-estudos...@googlegroups.com
talvez esse link ajude
CPU Rings, Privilege, and Protection - http://duartes.org/gustavo/blog/post/cpu-rings-privilege-and-protection

se nao me engano o livro de arquitetura de computadores do tanenbaum tb fala sobre isso, ate com bastante detalhes, falando sobre os resgistradores e descritores usados e com o significado de cada bitzinho dos descritores etc

como diz o link sao 4 niveis de privilegio, sendo q geralmente apenas 2 sao usados, e por ai vai
qnt a essa questao de codigo do usuario necessitar de acessos privilegiados acho q a toda hora existe essa troca entre modo kernel e modo usuario, qnd o codigo no nivel do ususario necessita executar a instrucao ele chama o kernel, o kernel vai pro modo privilegiado, faz oq tem q ser feito, retorna pro nivel do usuario e retorna o comando para o codigo em nivel do usuario

como eu te disse la no cefet, o processador que fornece muito desse suporte basico para essas questoes de privilegios, protecao de memoria etc


2008/8/22 Luks <lsima...@gmail.com>

Erick Passos

unread,
Aug 22, 2008, 11:17:52 PM8/22/08
to grupo-de-estudos...@googlegroups.com
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
Reply all
Reply to author
Forward
0 new messages