Comunidade OSDevBrasil.net
Maio 22, 2012, 06:14:11 *
Bem-vindo, Visitante. Por favor faça o Login ou Registro.

Login com nome de usuário, senha e duração da sessão
Notícias: Anuncie a nossa comunidade a amigos, fóruns...
 
   Home   Ajuda Pesquisa Login Registrar  
Páginas: [1]
  Imprimir  
Autor Tópico: Comunicação entre o kernel-programas  (Lida 526 vezes)
jao.carlos
OS Newbie
*

Karma: 0
Mensagens: 1


Ver Perfil Email
« : 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.
Registrado
Mounter
Administrador
OS Sr. Member
*****

Karma: 12
Mensagens: 432


mrjostz@hotmail.com
Ver Perfil WWW Email
« Responder #1 : Agosto 04, 2009, 04:10:39 »

No SOmBRA, estou para fazer assim, o page dir do programa contem a área do kernel, assim quando é necessário o kernel pegar algum dado do programa, é só ele ir no endereço e pegar o dado.

As páginas do kernel vão ser marcadas como globais, assim na troca de page dir, essas páginas vão continuar lá e somente as páginas do programa vão ser mudadas!
Registrado

╔╗╔╦══╦╗╔╦══╦╗
║╚╝║╔╗║╚╝║╔╗║║
║╔╗║╠╣║╔╗║╠╣╠╣
╚╝╚╩╝╚╩╝╚╩╝╚╩╝

Projeto SOmBRA - http://code.google.com/p/projeto-sombra

S.O.: Ubuntu 10.04
Browser: Google Chrome 10

Páginas: [1]
  Imprimir  
 
Ir para:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2006-2009, Simple Machines XHTML 1.0 Válido! CSS Válido!