Núcleos Monolíticos e os Micronúcleos.
Segundo MAZIERO (2008, p. 9), núcleo é o coração do sistema operacional, responsável pela gerência dos recursos do hardware usados pelas aplicações, que também implementa as principais abstrações utilizadas pelos programas aplicativos.
Conforme a evolução da tecnologia e dos hardwares diversos modelos de sistemas baseado em núcleos foram criados, dentre os quais serão mencionados os Núcleos Monolíticos e os Micronúcleos.
1.1. SISTEMAS MONOLÍTICOS
Segundo MAZIERO (2008, p. 18), em um Sistema Monolítico, todos os componentes do núcleo operam em modo núcleo e se inter-relacionam conforme suas necessidades, sem restrições de acesso entre si, pois o código no nível núcleo tem acesso pleno a todos os recursos e áreas de memória.
A grande vantagem dessa arquitetura é seu desempenho, pois qualquer componente do núcleo pode acessar os demais componentes, toda a memória ou mesmo dispositivos periféricos diretamente, pois não há barreiras impedindo esse acesso. A interação direta entre componentes leva a sistemas mais compactos.
Contudo, o elevado desempenho é compensado pela baixa robustez e facilidade de desenvolvimento. Caso um componente do núcleo perca o controle devido a algum erro, esse problema pode se alastrar rapidamente por todo o núcleo, levando o sistema ao colapso (travamento, re-inicialização ou funcionamento errático). Além disso, a manutenção e evolução do núcleo se tornam mais complexas, porque as dependências e pontos de interação entre os componentes podem não ser evidentes: pequenas alterações na estrutura de dados de um componente podem ter um impacto inesperado em outros componentes, caso estes acessem aquela estrutura diretamente.
1.2. SISTEMAS MICRONÚCLEO
Segundo MAZIERO (2008, p. 20), afirma que outra possibilidade de estruturação pode consistir em retirar do núcleo todo o código de alto nível (normalmente associado às políticas de gerência de recursos), deixando no núcleo somente o código de baixo nível necessário para