jao.carlos
OS Newbie
Karma: 0
Mensagens: 1
|
 |
« : Agosto 03, 2009, 05:18:02 » |
|
Olá a todos, meu nome é João Carlos, essa é a primeira pergunta que faço nessa comunidade. Venho somente estudando teoria sobre sistemas operacionais, mas não comecei nada ainda. Como estou aprendendo, quero entender bem como eles funcionam para a partir daí eu tentar fazer algo.
Mas uma coisa que tá difícil de eu entender é a comunicação entre o kernel e os programas. Supondo, eu tenho um kernel com várias chamadas de sistema. Dentre as várias chamadas, tenho 2 em especial: READ e WRITE.
Elas servem para ler e escrever de um arquivo. O que não consigo entender é como eu posso pegar os dados do programa e passar para o kernel.
Eu sei que a maioria dos SO's trabalham com paginação. Eles deixam sempre um espaço do kernel visível para os programas. Tipo, os primeiros 1GB de memória, pertencem ao kernel, e os 3GB restantes ficam para os programas.
Se eu faço uma chamada WRITE, passo o ponteiro de onde eu quero que ele pegue os dados. Mas, se um programa fica num endereço acima de 1GB, como o kernel vai ver esses dados?
Eu teria que definir o mesmo diretório de páginas do programa para o kernel enxergar os dados do programa?
Ou eu deve criar um buffer no espaço de memória do kernel, e fazer o programa copiar os dados para esse espaço?
Desde já obrigado.
|