Não estou aqui para criar uma discussão sobre qual dos dois paradigmas é o melhor ou qual deles deixa a desejar em algo! Provavelmente ambos possuem desvantagens e vantagens e seus defensores. Porém, esses termos por si só causam uma boa dose de dúvidas nos estudantes de Linux. Afinal, o que é um micro-kernel e kernel monolítico?

Micro-kernel, ou também chamado de microkernel, é uma designação de um Sistema Operacional que possui apenas um núcleo que provê recursos mínimos necessários ao ambiente. Outras funcionalidades são oferecidas através de programas chamados servidores, que se localizam na user-space. O Micro-Kernel basicamente provê serviços como gerenciamento do espaço de memória, gerência de threads e comunicação entre os processos (IPC - Inter-Process Communication). Serviços como rede, vídeo, são considerados não essenciais, e residem no user-space. A figura abaixo representa a interação entre os softwares que são executados sobre o sistema e sua relação com o kernel.

Representação de um Micro-Kernel

Exemplos de micro-kernel que posso citar são o Hurd e Minix. Utilizando o mesmo conceito, surgiram outras implementações, como os nanokernels e exokernels, sendo que todos utilizam o mesmo princípio minimalista.

O paradigma do Kernel Monolítico é justamente o oposto do Micro-Kernel. A principal característica do kernel monolítico é permitir que funções como rede, vídeo e acesso a outros periféricos sejam possíveis através do kernel-space. Isso é possível através do uso de módulos. O que significa que um módulo, apesar de não estar no mesmo código do kernel, é executado no espaço de memória do kernel. Sendo assim, apesar de modular, o kernel monolítico continua sendo único e centralizado. Isso pode levar a considerações errôneas sobre o conceito. Segue abaixo uma representação do kernel monolítico.

Representação de um Kernel Monol�tico

Como exemplo desse tipo de arquitetura, posso citar o Linux, BSD e alguns Windows. Em comum com a arquitetura de Micro-Kernels, o kernel define uma interface de alto nível sob o hardware do computador, com um conjunto de primitivas, ou chamadas de sistema para implementação de serviços no sistema operacional.

Há um tempo, Andrew Tanenbaum, grande professor de Sistemas Operacionais, escreveu um artigo sobre segurança e confiabilidade em ambientes críticos. Nesse artigo, descreveu que o paradigma de Micro-Kernels leva vantagem sobre o Kernel Monolítico. Linus Torvalds, grande, e esperado, defensor do Kernel Monolítico, escreveu uma resposta a esse artigo, indicando o motivo pelo qual prefere esse tipo de arquitetura. Em contrapartida, Tanenbaum escreveu uma tréplica a Linus, indicando o motivo pelo qual discorda do uso de Kernels Monolíticos, citando exemplos de sistemas operacionais que implementam, como o próprio Minix3.

Enfim, como o povo diz, se nem os “deuses” se entendem, como os pobres mortais podem acreditar em algo? :P

Até mais! :)


Fonte: localdomain.wordpress.com