Un Nucli monolític és el nucli (sovint anomenat amb la paraula alemanya kernel) d'un sistema operatiu. Com a exemples de sistema operatiu amb nucli monolític tenim UNIX i Linux.

Vista gràfica general d'un nucli monolític

Aquests sistemes tenen un nucli gran i complex, que engloba tots els serveis del sistema. Està programat de forma no modular, i té un rendiment més gran que un micronucli. No obstant, qualsevol canvi a realitzar en qualsevol servei requereix la recompilació del nucli i el reinici del sistema per aplicar els nous canvis.

Hi ha diverses ramificacions d'aquest disseny, que s'han anat adaptant a noves necessitats. Podem citar el sistema de mòduls executables en temps d'execució, que ofereix al model de nucli monolític alguns dels avantatges d'un micronucli. Aquests mòduls poden ser compilats, modificats, carregats i descarregats en temps d'execució, de manera similar als serveis d'un micronucli, però amb la diferència que s'executen en l'espai de memòria del mateix nucli (anell 0). D'aquesta forma, un bloqueig del mòdul és probable que bloquegi tot el nucli. A més a més, el mòdul passa a formar un tot amb el nucli, utilitzant-ne l'API, i no s'utilitza un sistema de missatges com en els micronuclis. Aquest és l'esquema usat per, entre d'altres, GNU/Linux, FreeBSD i diversos derivats de UNIX. Hem de destacar que el pas constant de missatges entre els serveis del micronucli és, en part, responsable dels pobres rendiments dels micronuclis.

Un sistema operatiu amb nucli monolític concentra totes les funcionalitats possibles (planificació, sistema de fitxers, xarxes, controladors de dispositius, gestió de memòria, etc.) dins d'un gran programa. Aquest pot tenir una mida considerable i cal recompilar-lo completament quan s'hi afegeix una nova funcionalitat. Tots els components funcionals del nucli tenen accés a totes les seves estructures de dades internes i a les seves rutines. Un error en una rutina pot propagar-se a tot el nucli. Tots els seus components es troben integrats en un únic programa que s'executa en un únic espai d'adreces. En aquest tipus de sistemes, totes les funcions que ofereix el sistema operatiu s'executen en mode supervisor.

Aquests sistemes operatius han sorgit, normalment, de sistemes operatius senzills i petits, als quals s'ha anat afegint un nombre més gran de funcionalitats. Això els ha fet evolucionar i créixer fins a convertir-los en programes grans i complexos formats per moltes funcions, situades, totes elles, en un mateix nivell. Clars exemples d'aquest tipus de sistemes són MS-DOS i UNIX. Ambdós van començar sent sistemes operatius petits que van anar fent-se cada cop més grans degut a la gran popularitat que van anar adquirint.

El problema que plantegen aquests tipus de sistemes radica en la complexitat de modificar el sistema operatiu per afegir-hi noves funcionalitats i serveis. És a dir, afegir una nova característica implica la modificació d'un gran programa, compost per milers de línies de codi font i funcions, cadascuna de les quals pot invocar-ne d'altres quan cal. A més a més, en aquest tipus de sistemes no se segueix el principi d'ocultació de la informació. Per solucionar aquest problema és necessari proporcionar una certa estructura al sistema operatiu.

L'alternativa és tenir una estructura de micronucli, on les parts funcionals estan dividides en unitats separades amb mecanismes de comunicació estrictes entre ells.

Exemples de nuclis monolítics

modifica

Vegeu també

modifica