Monolithische kernel

Een monolithische kernel is in de informatica een kernel waarbij alle diensten, of het merendeel ervan, door de kernel worden uitgevoerd, dus in supervisormodus. Monolithisch is afgeleid van de Oudgriekse woorden monos, alleen of eenzaam, en lithos, steen of gesteente, dit omdat de kernel het merendeel van de diensten, zoals toegang tot hardware via een bepaalde interface, geheugenbeheer, etc., zelf afhandelt, terwijl dit niet het geval is bij een microkernel, de tegenhanger van de monolithische kernel.

Verschillen met een microkernel

  • Microkernels kennen meer interprocescommunicatie (IPC) doordat de applicaties en drivers met elkaar communiceren, daardoor doet een microkernel meer aan taak- en geheugencontextveranderingen.[bron?]
  • Microkernels draaien taken zoals drivers in gebruikersmodus in plaats van in supervisormodus; hierdoor hebben deze taken minder privileges. Daarbij is het gebruikelijk dat de I/O beheerd wordt door de kernel.
  • Microkernels zijn kleiner, waardoor deze over het algemeen minder fouten bevatten.
  • Microkernels zijn beter uitbreidbaar. Dit komt doordat microkernels standaard alleen het essentiĆ«le aanbieden qua functionaliteit en modulair gebouwd zijn.

Puur en hybride

Heel veel monolithische kernels zijn echter niet geheel monolithisch. Zo laadt Linux bijvoorbeeld de drivers via modules, hoewel deze in supervisormodus gedraaid worden. Hierdoor is het onderscheid tussen puur en hybride ontstaan. Zo zullen veel kernels eerder hybride zijn en dus tussen de twee extrema (monolithisch contra micro) zitten. Pure monolithische kernels zijn vrij zeldzaam op de x86-architectuur, maar ze zijn gebruikelijk op embedded platformen zoals ARM.

Voorbeelden van monolithische kernels