Nucli

De la Viquipèdia, l'enciclopèdia lliure.
Saltar a la navegació Saltar a la cerca
Nota de desambiguació.svg Desambiguació : si busqueu altres significats, consulteu Kernel (desambiguació) .
Abstracció del programari al maquinari mitjançant el nucli

Un nucli (pronunciació anglesa en IPA : [ˈkəːnəl] ), en informàtica, constitueix el nucli o nucli d’un sistema operatiu , és a dir, el programari que proporciona accés segur i controlat del maquinari als processos que s’executen a l’ ordinador [1] . Com que més d'un pot executar-se simultàniament, el nucli també pot ser responsable d'assignar una part del temps de màquina ( programació ) i accés de maquinari a cada programa ( multitasca ) [2] .

Descripció

No és estrictament necessari un nucli per executar un ordinador. De fet, els programes es poden carregar i executar directament a la màquina, sempre que els seus desenvolupadors considerin necessari prescindir del suport del sistema operatiu.

Aquest era el mode de funcionament típic dels primers equips, que es van restablir abans d’executar un nou programa. Més tard, alguns programes accessoris com ara carregadors de programes i depuradors es van llançar des d'una memòria de només lectura o es van fer residir a la memòria durant les transicions de l'ordinador d'una aplicació a una altra: van constituir la base de facto per a la creació dels primers sistemes operatius. .

Una altra situació on l'absència d'un sistema operatiu és desitjable és l'exemple de microcontroladors minimalistes. L'accés directe al nucli per part d'un usuari / administrador pot tenir lloc en mode d'usuari o en mode de nucli .

Classificació

Comparació entre els diferents nuclis

L'accés directe al maquinari també pot ser molt complex, de manera que el nucli sol implementar un o més tipus d'abstracció de maquinari, l'anomenat nivell de capa d'abstracció de maquinari ( capa d'abstracció de maquinari o HAL). Aquestes abstraccions serveixen per "amagar" la complexitat i proporcionar una interfície neta i uniforme al maquinari subjacent per facilitar el treball dels desenvolupadors.

Els nuclis es poden classificar en quatre categories, segons el grau d'abstracció del maquinari:

  • Nuclis monolítics , que implementen directament una abstracció completa del maquinari subjacent.
  • Microkernels , que proporcionen un conjunt estret i senzill d’abstracció de maquinari i utilitzen programari (anomenats controladors de dispositiu o servidors ) per proporcionar més funcionalitat.
  • Nuclis híbrids (o micro- nuclis modificats ), que difereixen dels micro- nuclis purs per a la implementació d'algunes funcions addicionals per tal d'augmentar el rendiment.
  • Esokernel , que elimina totes les limitacions relacionades amb l’abstracció de maquinari i es limita a garantir-ne l’accés simultani, permetent a les aplicacions individuals implementar independentment les abstraccions tradicionals del sistema operatiu mitjançant biblioteques especials.

Nuclis monolítics del primer tipus

Representació gràfica d’un nucli monolític

L’enfocament monolític defineix una interfície virtual d’alt nivell en maquinari i programari, amb un conjunt de primitives o trucades al sistema per implementar serveis del sistema operatiu com la gestió de processos , la multitarea i la gestió de memòria , en diferents mòduls que s’executen en mode supervisor .

Tot i que cada mòdul que serveix aquestes operacions és separat de la resta, la integració del codi és molt estreta i difícil de fer correctament i, com que tots els mòduls funcionen al mateix espai, un error en un d’ells pot bloquejar tot el sistema. No obstant això, quan la implementació és completa i segura, la integració interna estreta dels components fa que un bon nucli monolític sigui extremadament eficient.

El desavantatge més notable dels nuclis monolítics, però, és que no és possible afegir un nou dispositiu de maquinari sense afegir el mòdul al nucli, cosa que requereix que es recompileixi . Com a alternativa, podeu compilar un nucli amb tots els mòduls de suport de maquinari, a costa d’augmentar-ne molt la mida. No obstant això, els nuclis monolítics més moderns com el nucli Linux i el FreeBSD poden carregar mòduls en temps d'execució, si es preveuen en la fase de configuració (la fase de configuració és la fase anterior a la fase de compilació, durant la qual podeu triar quines funcions o controladors han de ser ser part del nou nucli), permetent així ampliar el nucli quan sigui necessari, mantenint al mateix temps la mida del codi a l’espai del nucli.

Exemples de nuclis monolítics:

Microkernel

Arrows-folder-categorize.svg Les entrades individuals es mostren a la categoria: Microkernel
Representació gràfica d'un micro nucli

L’enfocament del microcernel consisteix a definir un nucli central que proporcioni exclusivament un conjunt de primitives o trucades al sistema per implementar serveis mínims del sistema operatiu com ara la gestió de fils , espais d’adreces o comunicació entre processos . A sobre d'aquest nucli mínim (d'aquí el prefix "micro") s'insereixen alguns servidors, és a dir, programes separats del nucli que es comuniquen amb ell mitjançant les trucades del sistema esmentades per implementar les diverses funcions del sistema.

L’objectiu principal és la separació de les implementacions de serveis bàsics de les estructures operatives del sistema. Per exemple, el procés de bloqueig d'entrada / sortida es pot implementar com a mòdul de servidor a nivell d'usuari. Aquests mòduls de nivell d’usuari, que s’utilitzen per proporcionar serveis d’alt nivell al sistema, són modulars i simplifiquen l’estructura i el disseny del nucli. Un servei de servidor que deixa de funcionar no fa penjar tot el sistema i es pot reiniciar independentment de la resta.

Hi ha alguns tipus de micro nuclis que no es poden definir exactament com a tals, perquè no implementen algunes funcions en forma de servidors, tot i que tenen altres característiques que defineixen els micro nuclis. El més conegut és Exec , abreviatura de Executive Multitasking (i el seu successor directe ExecSG ), que és el nucli AmigaOS .

Exemples de sistemes operatius basats en microcernel i microcernel:

Logotip AIX (sistema operatiu) , sistema operatiu, basat en el microkernel
BeOS , un altre sistema operatiu basat en microkernel

Nuclis i microcerns monolítics: comparació

Sovint es prefereixen els nuclis monolítics sobre els micro nuclis a causa del menor nivell de complexitat en la comprovació dels codis de control en un espai d’adreces. Per exemple, XNU , el nucli macOS , es basa en un nucli Mach 3.0 i components BSD en el mateix espai d'adreces per tal de reduir els temps de latència típics dels micro nuclis. Per tant, XNU és un nucli d’alt rendiment, ja que es basa parcialment en una solució híbrida i no es pot considerar en cap cas un micro nucli. A la documentació oficial d'Apple, XNU es coneix clarament com el nucli modular monolític.

Els nuclis monolítics es consideren obsolets des de principis dels anys noranta . El nucli Linux com a nucli monolític en lloc de micro nucli va ser un dels temes de la famosa guerra religiosa entre Linus Torvalds (el creador de Linux ) i Andrew Tanenbaum (famós professor de sistemes operatius, autor de Minix ): hi ha més detalls disponibles en línia .

En realitat, hi ha raons per ambdues parts.

Els nuclis monolítics solen ser més fàcils de dissenyar correctament i, per tant, poden evolucionar més ràpidament que un sistema basat en microcerns. Hi ha casos d’èxit a banda i banda. Els micro nuclis s’utilitzen sovint en sistemes incrustats en aplicacions mèdiques d’automatització robotitzada de missió crítica , a causa del fet que els components del sistema resideixen en zones de memòria separades, privades i protegides. Això no és possible amb nuclis monolítics, ni tan sols amb mòduls carregables moderns.

A part del nucli Mach , que és el nucli de propòsit general més conegut, s’han desenvolupat molts altres nuclis amb finalitats específiques. En particular, el nucli L3 es va crear per demostrar que els micro nuclis no són necessàriament lents. La família de micro nuclis L4, successors de L3, té una implementació anomenada Fiasco que pot executar el nucli Linux junt amb altres processos L4 en espais d’adreces separats.

QNX és un sistema operatiu que ha estat en escena des de principis dels anys vuitanta i que té una implementació de microkernel realment minimalista. Aquest sistema ha tingut molt més èxit que Mach a l’hora d’assolir els objectius del paradigma del micro nucli. S'utilitza en situacions en què el programari no pot cometre errors, per exemple en els braços robòtics del transbordador espacial o en màquines de processament de vidre, on fins i tot un petit error pot costar centenars de milers d'euros.

Nuclis híbrids

Representació gràfica d’un nucli híbrid

Els nuclis híbrids són essencialment micro nuclis que tenen un codi "no essencial" a nivell d'espai del nucli, de manera que aquest codi pot funcionar més ràpid que si s'implementés a un nivell alt. Aquest va ser un compromís adoptat per molts desenvolupadors de sistemes operatius abans de provar que els microcerns purs podrien tenir un alt rendiment. Molts sistemes operatius moderns pertanyen a aquesta categoria; Microsoft Windows és l’exemple més conegut. XNU , el nucli Mac OS X, també és un micro nucli modificat, a causa de la inclusió del codi BSD en un nucli basat en Mach. DragonFly BSD va ser el primer sistema BSD no basat en Mach que va adoptar l'arquitectura del nucli híbrid.

No confongueu el terme "nucli híbrid" amb nuclis monolítics que poden carregar mòduls després de l'arrencada, ja que "híbrid" implica que el nucli en qüestió comparteix conceptes i mecanismes arquitectònics propis tant del monolític com dels micro nuclis, especialment el pas de missatges. de codi "no essencial" a un nivell superior, mantenint només el codi requerit al nivell del nucli per motius de rendiment.

Exemples de nuclis híbrids:

Esokernel

Representació gràfica d'un Exokernel

Exokernels, o Exokernels, també coneguts com a "sistemes operatius verticals", són un enfocament radicalment diferent al disseny del sistema operatiu. La idea principal és "separar la seguretat de la gestió".

Ningú sap millor que un desenvolupador com fer un ús eficient del maquinari disponible, de manera que l’objectiu és donar-los el poder de prendre decisions. Els esokernels són extremadament petits i compactes, ja que la seva funcionalitat es limita expressament a la protecció de recursos i al multiplexat.

Els nuclis "clàssics" (tant monolítics com microcernel) fan servir maquinari abstracte, que amaga recursos darrere d'una capa d'abstracció de maquinari ) o darrere de servidors "segurs". En aquests sistemes "clàssics", si per exemple s'assigna memòria, el programa no pot saber en quina pàgina física reservarà el sistema operatiu i, si s'escriu un fitxer, no hi ha manera de saber directament en quin sector del disc s'ha assignat. Aquest és el nivell d'abstracció que un exokernel intenta evitar. Permet a una aplicació sol·licitar àrees específiques de memòria, sectors específics al disc, etc., i només garanteix que els recursos necessaris estiguin disponibles i que les aplicacions hi puguin accedir.

Atès que un esokernel proporciona una interfície de molt baix nivell al maquinari, que no disposa de cap funcionalitat d’alt nivell típica d’altres sistemes operatius, s’acompanya d’una biblioteca de sistema operatiu (libOS en argot) que s’interface amb l’exokernel. desenvolupadors amb la funcionalitat d’un sistema operatiu complet.

Tot això té una implicació important: és possible tenir diverses libOS al sistema. Per exemple, si instal·leu un libOS que exporta una API Unix i una que exporta una API de Windows, podeu executar simultàniament aplicacions compilades per a UNIX i Windows. El desenvolupament de libOS es realitza a nivell d'usuari, sense reiniciar-se, depurant a la consola i amb protecció completa de memòria.

Actualment, els esokernels són principalment projectes de recerca i no s’utilitzen en sistemes operatius comercials. Un exemple de sistema basat en esokernel és Nemesis , desenvolupat per la Universitat de Cambridge , la Universitat de Glasgow , Citrix Systems i l’ Institut Suec d’Informàtica . El MIT també ha desenvolupat diversos sistemes basats en esokernel.

Cap nucli

L'anomenat programari "sense nucli" no ha de limitar-se a un únic punt d'entrada que també està centralitzat. Un exemple és donat per projectes com TUNES i UnununiumOS, que pretenien crear un sistema operatiu sense nucli (ambdós projectes s’han deixat).

Nota

  1. ^ (EN) Brian Bagnall, On the Edge: The Spectacular Rise and Fall of Commodore, Variant Press, 2006, pàg. 202, ISBN 978-0-97-386490-8 .
    ( EN )

    "El nucli és la part més fonamental d'un programa, normalment un sistema operatiu, que resideix a la memòria en tot moment i proporciona els serveis bàsics. És la part del sistema operatiu més propera a la màquina i que pot activar el maquinari directament o interfície amb una altra capa de programari que el condueixi. "

    ( IT )

    "El nucli és la part més fonamental d'un programa, generalment un sistema operatiu, que resideix a la memòria tot el temps i que proporciona serveis bàsics: és la part del sistema operatiu més propera a la màquina i que pot activar maquinari directament o interfície amb una altra capa de programari que gestioni el maquinari. "

  2. ^ (EN) LifeV, Gestió de tasques múltiples al nucli del sistema operatiu , a kukuruku.co. Consultat l'1 de novembre de 2016 .
    ( EN )

    "Com que només es pot executar una instrucció en un nucli de processador en un moment, només es pot activar un fil. El procés d’elecció del fil de càlcul actiu s’anomena planificació. Al seu torn, el mòdul que s’encarrega de l’elecció s’anomena planificador. "

    ( IT )

    “Com que cada processador gestionat pel nucli només pot executar una instrucció a la vegada en un moment donat, només hi pot haver un fil actiu. El procés mitjançant el qual s’escull el fil de càlcul actiu s’anomena planificació. Al seu torn, el mòdul encarregat de fer aquesta tria s’anomena planificador. "

  3. ^ Inicialment s'utilitza a GNU Hurd i no a MacOS , que utilitza XNU , que és un nucli híbrid modular nascut de la unió de Mach i el nucli FreeBSD .

Bibliografia

Articles relacionats

Altres projectes

Control de l'autoritat GND ( DE ) 4338679-9
Informàtica Portal de TI : accediu a les entrades de Viquipèdia relacionades amb TI