Implementações de Kernel
Implementações de Kernel
Definições e características:
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.
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.
Já 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.
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.
Diferenças:
Muita se tem discutido sobre o assunto quando o assunto é