Kernel Monolític vs Microkernel
Introducció
Un sistema operatiu conté sempre un kernel, que és el nucli que s’encarrega de la interacció entre hardware i software. En aquest post explicarem breument el que és un sistema operatiu, el kernel i parlarem de dues de les grans filosofies a l’hora de dissenyar kernels: els kernels monolítics i els microkernels.
Sistema Operatiu i Kernel
Un sistema operatiu és un software que gestiona els recursos d’un ordinador, els dispositius i els programes en execució. També és el responsable de la interacció entre hardware i software, i així permet als usuaris executar aplicacions.
El kernel és el nucli d’un sistema operatiu. És l’encarregat de comunicar software i hardware, a més d’altres funcions com gestió de memòria, seguretat del sistema,… Els kernels poden variar les seves funcions segons com hagin estat dissenyats, i per això poden seguir diferents filosofies.
Kernel Monolític
En aquesta filosofia, el kernel és un binari que conté pràcticament totes les funcions del sistema operatiu (gestió de processos, gestió de memòria, mòduls,…).
Això té certes avantatges, com:
- Rendiment: Al tenir totes les funcions del sistema en un mateix espai de memòria, es redueix el número de canvis de context i la latència entre processos.
- Simplicitat: Al tenir-ho tot al mateix kernel, la gestió del sistema és més simple (comunicació i control).
Però també té desavantatges:
- Estabilitat: Qualsevol error dins el kernel pot provocar una fallada de tot el sistema.
- Escalabilitat: Pot ser complex afegir o modificar components, ja que els canvis poden afectar a altres parts del sistema.
- Manteniment: Al tenir més codi, és més difícil mantenir el sistema i analitzar-lo.
Microkernel
Un microkernel té com a objectiu que el codi executat en espai de kernel sigui el més mínim possible. Això ho fa tenint només les funcions essencials al kernel, i la resta (drivers, gestió de fitxers,…) s’executaran en espai d’usuari com a serveis.
Les seves avantatges són:
- Fiabilitat: Com que les funcions corren independentment entre si i en espai d’usuari, un error en alguna d’elles no sol afectar a la resta.
- Modularitat: Es poden modificar serveis sense modificar el microkernel, fent-ho més fàcil de mantenir o escalar.
- Seguretat: Com que els serveis estan separats i corren en espai d’usuari, és més difícil atacar al kernel.
I els seus desavantatges:
- Rendiment: Com que la comunicació entre processos ha de passar pel kernel, incrementen molt els canvis de context necessaris, empitjorant el rendiment.
- Complexitat: Tot i que el kernel és mínim, la gestió de serveis independents necessita un sistema de comunicació complex i una coordinació entre components.
Exemples reals
Kernels Monolítics
És el més utilitzat en entorns corrents (ordinadors, servidors).
Alguns dels sistemes operatius que l’utilitzen són:
- Linux
- Windows
- Sistemes Unix
Microkernels
Són més minoritaris i per casos d’ús més específics.
Alguns exemples són:
- Minix
- QNX
- seL4
- Sistemes embedded i RTOS (temps real)
Cal aclarir que en els kernels moderns, la modularitat ha aparegut també als kernels monolítics. Per exemple, Linux permet carregar i descarregar mòduls en temps real, semblant a un microkernel.
Conclusió
Els microkernels, tot i que a primer cop d’ull poden semblar una bona opció, tenen un problema molt gran de rendiment, que és el factor principal pel que la balança no s’hagi inclinat a favor seu. Tot i això, tenen casos d’ús més específics com sistemes embedded, RTOS (Real-Time Operating System), sistemes d’alta seguretat,…
Per altra banda, els kernels monolítics, tot i no ser perfectes, són els que han aconseguit fer-se amb el mercat gràcies a la seva eficiència.
Tot i així, no tot és triar entre un o altre tipus de kernel. Hi ha exemples, com Windows NT (kernel monolític), que es va inspirar en els microkernels, o Linux, que, com comentat abans, té característiques de microkernels.
Al final, la decisió entre un kernel o un altre, varia segons la importància de diferents paràmetres com la seguretat o el rendiment.
Fins aquí el post d’avui. Espero que hagi estat clar i, si t’ha servit d’ajuda, pots comentar o compartir. Ens veiem al següent!