Sistemas operativos usam normalmente núcleos monolíticos. No Linux, por exemplo, os drivers de dispositivos fazem frequentemente parte de um kernel (especificamente Módulos de Kernel Carregáveis). Quando um dispositivo é necessário, a sua extensão é carregada e ‘unida’ ao núcleo, tornando o núcleo maior. Os kernels monolíticos podem causar problemas quando um destes drivers está defeituoso, como por exemplo se for descarregado um driver beta. Como faz parte do kernel, o driver defeituoso pode anular os mecanismos que lidam com programas defeituosos (ver acima). Isto pode significar que o kernel, e portanto todo o computador, pode deixar de funcionar. Se houver demasiados dispositivos, o kernel também pode ficar sem memória causando uma falha do sistema ou tornando o computador muito lento.
Microkernels são uma forma de resolver este problema. Num sistema operativo de microkernels, o kernel lida apenas com actividades críticas, tais como controlar a memória e a CPU, e nada mais. Os controladores e outras funções que os kernels monolíticos normalmente incluiriam dentro do kernel são movidos para fora do kernel, onde estão sob controlo. Em vez de ser uma parte incontrolável do kernel, o driver beta não é, portanto, mais susceptível de causar uma falha do que um navegador web beta. Ou seja, se um driver correr mal, pode simplesmente ser reiniciado pelo kernel. Infelizmente, a criação de sistemas operacionais baseados em microkernel é muito difícil e não existem sistemas operacionais comuns de microkernel. Minix e QNX são ambos sistemas operativos de microkernel.