El kernel (núcleo) es la parte del Sistemas Operativos que se ejecuta en modo kernel (privilegiado). Tiene acceso total al hardware: puede ejecutar cualquier instrucción, manipular la MMU, deshabilitar interrupciones y acceder a los dispositivos. Los programas de usuario sólo pueden pedirle servicios mediante Sistemas Operativos/Llamadas al sistema.
Tanenbaum describe varias formas de organizar el núcleo:
Todo el SO se ejecuta como un único programa en modo kernel. Es una colección de procedimientos enlazados que pueden llamarse entre sí libremente.
El SO se organiza como una jerarquía de capas, cada una construida sobre la inferior. El ejemplo clásico es THE (Dijkstra, 1968) con 6 capas; MULTICS generalizó la idea con anillos concéntricos de privilegio.
Sólo un núcleo mínimo corre en modo kernel (manejo de interrupciones, IPC básico, planificación de bajo nivel). Drivers, sistema de archivos y gestión de memoria corren como procesos de usuario separados.
Variante del microkernel: los procesos se dividen en servidores que ofrecen servicios y clientes que los usan, comunicándose por paso de mensajes. Escala naturalmente a sistemas distribuidos.
Un hipervisor multiplexa el hardware y ofrece varias copias exactas de la máquina, cada una con su propio SO. Tipo 1 corre sobre el hardware (VM/370, Xen, ESXi); tipo 2 sobre un SO anfitrión (VirtualBox, VMware Workstation).
El núcleo sólo asigna recursos de forma segura y deja las abstracciones a bibliotecas en espacio de usuario.
El debate Tanenbaum–Torvalds (1992) enfrentó precisamente microkernel (MINIX) contra kernel monolítico (Linux).