O kernel Linux é tanto um kernel monolítico quanto um kernel modular :) Essas coisas não são mutuamente exclusivas.
O kernel monolítico refere-se a um kernel em que todas as partes compartilham um espaço de endereço comum:
Isso reduz a quantidade de comutadores de contexto e mensagens envolvidas, tornando o conceito mais rápido que um Microkernel. No lado negativo, o quantidade de código em execução no espaço do kernel torna o kernel mais propenso a erros fatais.
O oposto de "kernel monolítico" é " microkernel ", onde o kernel é responsável apenas pela coordenação dos serviços em execução no espaço do usuário que fazem todo o trabalho real.
" Kernel modular " significa que
alguma parte do núcleo do sistema será localizada em arquivos independentes chamados módulos que podem ser adicionados ao sistema em tempo de execução. Dependendo sobre o conteúdo desses módulos, o objetivo pode variar, como:
- carregando apenas drivers se um dispositivo for realmente encontrado
- carregue apenas um sistema de arquivos se for realmente solicitado
- carregue apenas o código para uma política específica (agendamento / segurança / qualquer outra) quando ela deve ser avaliada
Esses módulos ainda estão rodando no espaço do kernel e não no espaço do usuário, então a arquitetura do kernel ainda é monolítica.