I sistemi operativi usano comunemente kernel monolitici. In Linux, per esempio, i driver dei dispositivi sono spesso parte di un kernel (in particolare Loadable Kernel Modules). Quando un dispositivo è necessario, la sua estensione viene caricata e “unita” al kernel rendendo il kernel più grande. I kernel monolitici possono causare problemi quando uno di questi driver è difettoso, ad esempio se viene scaricato un driver beta. Poiché è parte del kernel, il driver difettoso può sovrascrivere i meccanismi che trattano i programmi difettosi (vedi sopra). Questo può significare che il kernel, e quindi l’intero computer, può cessare di funzionare. Se ci sono troppi dispositivi, il kernel può anche esaurire la memoria causando un crash del sistema o rendendo il computer molto lento.
I microkernel sono un modo per risolvere questo problema. In un sistema operativo microkernel, il kernel si occupa solo di attività critiche, come il controllo della memoria e della CPU, e nient’altro. I driver e altre funzioni che i kernel monolitici normalmente includerebbero all’interno del kernel sono spostati all’esterno del kernel, dove sono sotto controllo. Invece di essere una parte incontrollabile del kernel, il driver beta non ha più probabilità di causare un crash di un browser web beta. Cioè, se un driver va male può semplicemente essere riavviato dal kernel. Sfortunatamente, creare sistemi operativi basati su microkernel è molto difficile e non ci sono sistemi operativi microkernel comuni. Minix e QNX sono entrambi sistemi operativi a microkernel.