Nucli monolític

De Viquipèdia
Dreceres ràpides: navegació, cerca
Vista gràfica general d'un nucli monolític

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.

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 l'hi ofereix al model de nucli monolític algunes de les 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 de que s'executen en l'espai de memòria del mateix nucli (anell 0). D'aquesta forma, un bloqueig del mòdul, es probable que bloquegi tot el nucli. A més a més, el mòdul passa a formar un tot amb el nucli, utilitzant l'API del mateix, i no s'utilitza un sistema de missatges com en els micronuclis. Aquest es 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 haurà de ser recompilat per complet a l'afegir 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 executa en un únic espai de direccions. 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 que se'ls 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 a 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 aquest tipus de sistemes radica amb la complexitat de modificar el sistema operatiu per afegir 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, cada una de les quals pot invocar a d'altres quan així ho requereixi. A més a més, en aquest tipus de sistemes no es segueix el principi d'ocultació d'informació. Per solucionar aquest problema és necessari proporcionar certa estructura al sistema operatiu.

L'alternativa es 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 | modifica el codi]

Vegeu també[modifica | modifica el codi]