Esse provavelmente será o primeiro artigo de uma série. Nessa série pretendo esclarecer todos os mitos e polêmicas envolvendo o Hurd e mostrar o motivo do seu desenvolvimento ainda hoje e quais as possibilidades que ele pode abrir no futuro. Nessa primeira parte pretendo mostrar os conceitos básicos que envolvem esse polêmico kernel.
Microkernel é um termo usado para caracterizar o sistema
cujas funcionalidades do sistema saíram do kernel e foram para
servidores, que se comunicam com um núcleo mínimo, usando o mínimo
possível o "espaço do sistema" (nesse local o programa tem acesso
à todas as instruções e a todo o hardware) e deixando o máximo de
recursos rodando no "espaço do usuário" (no espaço do usuário, o
software sofre algumas restrições, não podendo acessar alguns
hardwares, nem tem acesso a todas as instruções).
Muitos autores já escreveram sobre os kerneis monolíticos, eles
são mais simples de se fazer, mais da metade dos grandes sistemas
usam sua arquitetura. Mesmo com essas e tantas outras qualidades,
os kerneis monolíticos tem seus problemas, e por isso se procura
outros meios de se criar um kernel, dentre os mais famosos, se
destaca o microkernel. Abaixo vai uma pequena lista de problemas
dos kerneis monolíticos em geral:
Escrever para o "espaço do sistema" é difícil, já que você
não pode usar a maioria das bibliotecas existentes, como a GlibC
ou a libC5;
É complexo "debugar" (É extremamente difícil de se usar um
debugger em nível de fonte, como o GDB);
Graças às duas primeiras desvantagens, o kernel se torna mais suscetível a bugs;
Reiniciar o computador é necessário freqüentemente (principalmente quando é necessário atualizar o kernel ou adicionar novas funções ao mesmo);
Bugs tendem a ser mais danosos, já que como todas as funções do kernel têm todos os privilégios, um bug em uma função é capaz de afetar áreas, mesmo que sem nenhuma relação direta.
A maioria dos microkerneis de hoje são mono-servidores, ou seja,
possuem apenas um programa no espaço do usuário fazendo todas as
funções do kernel. Isso dá um pouco mais de segurança, já que o
código não tem acesso direto ao hardware e permite que o mesmo
seja portado para outras arquiteturas mais facilmente, mesmo assim
isso não faz com que eles não sejam muito diferentes dos kerneis
monolíticos atuais.
O Hurd traz consigo não tão somente o conceito de microkernel,
mas o conceito de multi-servidor, onde cada serviço tem seu próprio
servidor que se comunica com os demais para formar o kernel. Isso
permite que você possa trocar uns servidores por outros facilmente;
torna mais fácil de se desenvolver servidores; Um "crash" em um dos
servidores somente derruba os servidores que dependem dele, jamais
o sistema todo e traz liberdade ao usuário (a liberdade citada no
começo desse artigo).
[1] Comentário enviado por Ragen em 28/03/2005 - 23:05h
Olá Leonardo,
Eu a um tempo atras estava discutindo com alguns amigos a sobre utilização de tecnologia *academica* na vida real. É espantoso pensar que muita das tecnologias *base* que utilizamos hoje foram desenvolvidas em sua maioria a quase 2 decadas atras.
Mas o Hurd é um ponta-pé inicial pra que eu Particularmente acho ser um marco na história computacional
[3] Comentário enviado por agk em 29/03/2005 - 16:52h
Está de parabéns, muito bem escrito o artigo. O projeto do Hurd é bastante interessante, no futuro quem sabe não estaremos usando GNU/Hurd ao invés de usar GNU/Linux.
[ ]'s