Un Megakernel, a menudo sinónimo de Monolithic Kernel, es una arquitectura de sistema operativo caracterizada por la ejecución de todos los servicios principales del sistema (gestión de procesos, gestión de memoria, sistema de archivos, red y controladores de dispositivos) dentro del mismo espacio de direcciones del kernel. Esto significa que todos estos componentes comparten el mismo contexto de ejecución privilegiado, lo que permite una comunicación interna muy eficiente entre ellos, ya que las llamadas a funciones son directas y no requieren cambios de contexto entre espacios de usuario y kernel.

El ejemplo más prominente de un Megakernel en el mundo real es Linux. Otros sistemas operativos como los de la familia BSD (FreeBSD, OpenBSD, NetBSD) y versiones anteriores de Microsoft Windows (hasta Windows NT 3.1) también emplean o emplearon esta arquitectura. En estos sistemas, los controladores de dispositivos se cargan dinámicamente en el espacio del kernel, y servicios como la pila de red o el sistema de archivos se ejecutan como parte integral del kernel, lo que contribuye a su reputación de alto rendimiento en tareas intensivas de E/S y computación.

Para un Arquitecto de Sistemas, la elección de un Megakernel implica trade-offs significativos. Su principal ventaja es el rendimiento, debido a la mínima sobrecarga en la comunicación entre componentes y la ausencia de cambios de contexto costosos. Esto es crucial para sistemas con requisitos de baja latencia y alto throughput. Sin embargo, presenta desafíos en estabilidad y seguridad; un fallo en cualquier controlador o servicio dentro del kernel puede comprometer la estabilidad de todo el sistema. La depuración es más compleja, y la evolución del kernel puede ser más lenta debido a la interdependencia de los componentes. La escalabilidad horizontal y la resiliencia ante fallos de componentes individuales son áreas donde otras arquitecturas (como los Microkernels) pueden ofrecer ventajas, aunque a costa de un mayor overhead de comunicación.