Follow falcon_dark on Twitter
Google

quinta-feira, outubro 06, 2005

A natureza do kernel do FreeBSD

Em setembro falei sobre um artigo que visava comparar as plataformas PC e PPC enquanto servidores mas que acabou identificando algo muito curioso: o fraco desempenho do MacOSX enquando servidor. A melhor resposta para a performance ruim do Mac foi o uso de microkernel, um tipo de kernel sabidamente mais lento que o monokernel (kernel monolítico) que é a arquitetura usada no Linux.

O artigo causou alguma repercução e uma outra dúvida. Se o Mac é lento por ser um microkernel, porque então o FreeBSD, supostamente também um sistema microkernel não sofre do mesmo problema, tendo um desempenho muito próximo (e muitas vezes superior) ao do Linux? Aliás, as informações correntes dão conta de que o kernel do MacOSX teria sido inspirado no kernel do FreeBSD, então como o kernel pai poderia ser tão rápido e seu filho tão lento?

Essas perguntas me torturaram por algum tempo e a melhor resposta que consegui, sobre a qual comentei em um artigo posterior, ainda não me convencia. A idéia de que o MacOSX descendia de uma versão mais antiga, e supostamente lenta, do FreeBSD me parecia estranha, pois significaria que em pouco mais de 5 anos o pessoal do FreeBSD teria que ter descober um jeito de deixar os microkerneis muito rápidos, mas isso seria uma espécie de santo graal da ciência da computação. Teriam eles feito em 5 anos o que todo o resto do mundo tentara por quase duas décadas sem sucesso? Difícil de engolir.

Outra resposta possível era que o FreeBSD teria sua arquitetura baseada em uma evolução do conceito do microkernel Mach, o microkernel L4, que resolveu alguns dos problemas de desempenho do Mach violando alguns dos princípios básicos e elegantes do desenho microkernel, como entregando toda a verificação de permissões das mensagens para os servidores. Mas assim mesmo não havia um bom motivo para a Apple não beneficiar seu MacOSX com esse mesmo subterfúgio. Ainda assim não fazia sentido o MacOSX ser descendente direto do FreeBSD e ambos terem desempenhos tão distintos.

Para resolver esse dilema continuei buscando informações sobre o kernel do FreeBSD, mesmo que no blog o assunto já tenha sido encerrado. Eu simplesmente queria saber porque o FreeBSD, sendo microkernel, conseguiria sem tão ou mais rápido que um Linux monokernel quando todo o material sobre microkernel que eu encontrei sempre afirmou que microkerneis sempre são, no mínimo 5% mais lentos que seus equivalentes monokerneis.

Pra começar fui ao site do FreeBSD procurar informações sobre seu kernel. E você ficará espandado ao saber que no site do FreeBSD, se você procurar por "microkernel" na caixinha de busca a única página que retornará é uma que fala sobre projetos em desenvolvimento. Isso me despertou fortes suspeitas.

Como não consegui encontrar informações no site do FreeBSD, voltei-ma para o google. Ao buscar por "FreeBSD microkernel" obtive como resposta uma centena de resultados, muitos inúteis, mas alguns interessantes:
-Em uma lsita de desenvolvimento do FreeBSD essa pergunta é feita: O FreeBSD é microkernel ou monolítico? A resposta é clara: Monolítico. Veja você mesmo.
-Fui à página do FreeBSD na wikipedia, em inglês, e lá consta essa mesma informação: Kernel Type: Monolithic.
-Fui então à pagina sobre kernel da wikipedia, em inglês, onde são descritos os tipos de kernel e suas diferenças: monolítico, micro e nano. Na seção sobre microkernel alguns sistemas operacionais são citados como exemplo, e o FreeBSD não está entre eles, mas o MacOSX está.

Essas páginas e a ausência de qualquer informação sobre microkernel no site do FreeBSD levam à uma forte suspeita de que, ao contrário do que muita gente acredita, o FreeBSD é um sistema com kernel monolítico, e que portanto ele não foi a principal base para o MacOSX. Isso é uma suspeita, apenas. Mas no google eu não encontrei uma única referência à possibilidade do FreeBSD ser um sistema microkernel. Nenhuma mesmo.

Isso faz todo o sentido do mundo, pois explica todas as dúvidas que eu ainda não havia conseguido resolver dentro de minha cabeça. O FreeBSD ser monokernel explica perfeitamente porque seu desempenho é tão bom perto do Linux e do Windows. Explica porque o desempenho do MacOSX é tão ruim perto de Linux e FreeBSD, mas muito próximo do NeXTSTEP, enfim é a explicação mais sensata para todas as questão que haviam ficado penduradas.

Mas eu gostaria mesmo que houvesse uma fonte mais segura para isso do que apenas páginas da wikipedia e listas de discussões, ainda que elas sejam sobre FreeBSD e portanto feitas por quem provavelmente entenda e use FreeBSD. Gostaria que aqueles que tenham informações confiáveis sobre o assunto possam trazê-las à público para o esclarecimento geral sobre isso.

Follow falcon_dark on Twitter
Google
Comments:
Interessante, cara.
Eu mesmo não tinha tido a manha de ir buscar saber que tipo de kernel roda no FreeBSD.

Legal sua persistência, se souber de algo te digo! Abraços...
 
Pois é, como descrevi no artigo é uma coisa que ficou atormentando meus pensamentos por dias. Aliás, no OSnews.com achei mais um comentário atestando que o FreeBSD é monolítico, como o Linux. O lance do microkernel com Mach do MacOSX foi piração da Apple mesmo, ela apenas usa servidores DSB compatíveis com o FreeBSD. http://img.osnews.com/comment.php?news_id=8086&limit=no
 
Fala ai Grande Falcon estamos sintendo a sua falta no Forum, Cara, té mais
Epero vc lá,

Blz

Adrian
Moderador-Xavante GNU/Linux
 
O FreeBSD é monolítico sim. Acho que o exemplo de microkernel mais rápido é o QNX, mas ele tem muitos anos de estrada. Tipo, pra ter uma idéia, ele só é usado em usinas nucleares, trens, robôs cirúrgicos, etc... já tendo sido inclusive matéria de revistas como Fortune.
 
Pois é pessoal. O taq nos trouxe a palavra final: http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-custom-kernel.html
Ali está a resposta, uma página do FreeBSD afirmando que seu kernel é monolítico! Caso encerrado ;-)

Então vamos lá:
1- FreeBSD usa um kernel monolítico, assim como o Linux, por isso esses sistemas tem desempenho semelhante;
2- A crença de que o FreeBSD usaria um microkernel me parece ter vindo do fato do MacOSX ser microkernel e ter sido inspirado no kernel do FreeBSD. Acontece que isso não é uma verdade completa. O FreeBSD é monolítico, e o MacOSX é microkernel, inspirado em Mach3. Portanto o kernel do MacOSX não é inspirado no kernel do FreeBSD, como muita gente acredita. O microkernel do MacOSX tem um servidor de aplicações BSD inpirado no código do FreeBSD, só isso. Isso explica porque o MacOSX tem compatibilidade binária com BSD mas um desemepnho ruim de doer quando servidor, ainda que seu desempenho como desktop seja bom. Isso fecha tudo que vínhamos descutindo há algum tempo.
3- WindowsXP não é microkernel. Ele é um híbrido de mono e micro, misturando os conceitos de ambos. Ainda que seu kernel obedeça à muitos conceitos de microkernel ele tem muito mais coisas rodando sobre o kernel-space o que impede que ele possa ser classificado como microkernel, coisa que ele não é de fato. O engraçado é que se o WindowsXP/2003 fosse microkernel teria uma boa desculpa para seu desemepnho regular em servidores perto de sistemas como o FreeBSD e até o Linux. Mas com todas as otimizações para melhorar sua performance, que impedem ele de ser classificado como um microkernel mesmo, ele ainda desempenha pior que os outros sisitemas monolíticos concorrentes, que feio! hehe ;-)

O QNX é um sistema real-time realmente muito conceituado, microkernel de fato. Segundo informações que estão por aí na web o braço mecânico dos ônibus espaciais da NASA usa QNX. Foi também QNX o sistema usado para posicionar corretamente o espelho do telescópio espacial Hubble. São aplicações onde o software não pode falhar, a até onde pude chegar, aplicações que usaram QNX, muito legal!
 
O OS X nao eh baseado no FreeBSD... ele é baseado no Darwin (outro *NIX BSD). O Darwin é opensource e microkernel... e é baseado OpenNeXT, adquirido pela Apple do próprio Steve Jobs que era dono da empresa.

Qdo saiu da Apple Jobs fundou a NeXT que competiu durante um tempo com a Microsoft para ser padrao de OS dos PCs. Mas perdeu qdo o funcionario da IBM pro-UNIX saiu da empresa.

Hj o OS X ajuda o desenvolvimento do FreeBSD prq algumas das cabeças do projeto FreeBSD são funcionários da Apple (como Hubbard). A Apple é responsavel pela parte de memória virtual e multiprocessamento simetrico do FreeBSD 5.x, por exemplo!!

A Apple utiliza microkernel prq permite idependencia de hardware! E uma empresa que vive de fabricar hardware nao pode correr o risco de ficar sem OS se precisar mudar de plataforma. Isso ocorreu qdo passaram de 68k para PPC... e por conta do microkernel nao esta ocorrendo o mesmo problema agora do PPC para Intel 64bits.

Falar tbm q o OS X eh mais lento vc precisa especificar no que... pois eh sabido q nenhum OS eh responde tao rapidamente para aplicacoes java, incluindo servidores. Java eh nativo no OS X e toda a parte de gerenciamento do java atual foi desenvolvido pela Apple e incorporado pela SUN.

A primeira experiência *NIX da Apple foi o A/UX... depois o MkLinux (qdo a Apple convidou o proprio Linus para trabalhar na empresa). Servidores Apple tbm rodaram AIX (da IBM)... ou seja, é uma empresa com longa experiência em microkernel e *NIX.

As infos acima vc pode buscar no Google q vai encontrar. ;o)

[[ ]].
 
Postar um comentário



<< Home

This page is powered by Blogger. Isn't yours?