Kernel: verschil tussen versies

Uit Wikipedia, de vrije encyclopedie
Verwijderde inhoud Toegevoegde inhoud
SilvonenBot (overleg | bijdragen)
Artikel grotendeels herschreven.
Regel 1: Regel 1:
Een '''kernel''' is het meest centrale en meest onzichtbare onderdeel van een [[besturingssysteem]], de kern die alle basisvoorzieningen verzorgt voor de andere delen van het besturingssysteem. De kernel omvat onder meer:
Een '''kernel''' of '''core''' is in de [[informatica]] de kern van een [[besturingssysteem]]. De kernel is vrij simpel gezegd de [[supervisor]] in een besturingssysteem. Het is het meest centrale deel en het is het meest onzichtbaar. De kernel heeft een aantal minimale taken af te handelen:


* Het beheren en afhandelen van onderbrekingsignalen ''(interrupt handler)''. Dit zijn signalen die van zowel hardware als software kunnen komen ter notificatie of ter aanvraag.
* een voorziening voor de afhandeling van onderbrekingssignalen ''(interrupt handler)'', die alle aanvragen en uitvoeringen van invoer/uitvoer-bewerkingen bijhoudt;
* Het beheren van het fysiek geheugen waarmee de kernel [[werkgeheugen (computer)|werkgeheugen]] kan ontlenen aan processen.
* een ''scheduler'', een soort dienstregeling die bepaalt welk programma op welk moment uitgevoerd mag worden;
* Het beheren van het virtueel geheugen, indien een [[MMU|geheugenbeheereenheid]] op de processor aanwezig is. Hiermee kan de kernel indivuduele virtuele ruimtes scheppen voor de processen, opdat zij elkaar niet schaden.
* een geheugenbeheerder, die aan programma's [[werkgeheugen (computer)|werkgeheugen]] toewijst en ervoor zorgt dat zij niet elkaars geheugenruimte kunnen beschadigen.
* Het beheren van processen, ook wel scheduling. Hierbij wordt bepaald welke taak op welk tijdstip mag uitgevoerd worden.


De diensten van de kernel kunnen door andere delen van het besturingssysteem en [[computerprogramma]]'s worden gebruikt door middel van een verzameling programma-[[interface]]s die meestal ''system calls'' oftewel systeemaanroepen genoemd worden.
De diensten van de kernel kunnen door processen worden gebruikt doormiddel van een [[interface]]. Deze werken vrijwel altijd via ''system calls´ oftewel systeemaanroepen. Een kernel kan naast de bovenstaande taken ook nog optionele taken uitvoeren:


* Het beheren van [[I/O]]. Hierbij wordt door de kernel bepaald welke processen gebruik kunnen maken van I/O.
== Microkernels, monolitische- en hybride-kernels ==
* Het beheren van [[BIOS]]-toegang. Hierbij wordt door de kernel bepaald welke processen de BIOS kunnen gebruiken en hierbij zal de kernel deze aanvragen afhandelen.
* De kernel kan zelf ook hardware besturen en deze toegankelijk maken via een interface.


== Soorten kernels ==
Kernels worden onderverdeeld in drie categorieën: ''[[microkernel]]s'', ''[[monolitische kernel]]s'' en ''[[hybride-kernel]]s''. Ieder type kernel heeft een andere toepassing.

In het algemeen zijn er drie soorten van kernels. De twee extrema: ''[[monolithische kernel]]s'' en ''[[microkernel]]s'' en de daartussen liggende ''[[hybride kernel]]''. Ook zijn er nog subtypes zoals de ''[[exokernel]]'', de ''[[nanokernel]]'' en de ''[[modulaire kernel]]''.


=== Monolitische kernel ===
=== Monolitische kernel ===

{{Zieook|Zie het artikel [[Monolitische kernel]] voor het hoofdartikel over dit onderwerp.}}
{{Zieook|Zie het artikel [[Monolithische kernel]] voor het hoofdartikel over dit onderwerp.}}
Bij een monolitische kernel wordt de complete kernel in één geheugensegment geladen en vanuit dat segment uitgevoerd. Het voordeel hiervan is dat de kernel sneller te ontwikkelen en onderhouden is. Bovendien is de prestatie van dit type kernel vaak hoger. Een nadeel is de stabiliteit: wanneer een deel van de kernel gestoord raakt, crasht meestal de hele kernel en daarmee de hele computer. Een ander nadeel is de onmogelijkheid om (een deel van) de kernel te vervangen zonder de pc opnieuw te starten. [[Linux]] en [[FreeBSD]] zijn twee voorbeelden van monolitische kernelbesturingsystemen.

Een monolithische kernel is een kernel waarbij het merendeel of al de diensten afgehandeld worden in supervisormodus. Zo zullen drivers één geheel vormen met de kernel, doch zijn zij geen onderdeel van de kernel.


=== Microkernel ===
=== Microkernel ===

{{Zieook|Zie het artikel [[Microkernel]] voor het hoofdartikel over dit onderwerp.}}
{{Zieook|Zie het artikel [[Microkernel]] voor het hoofdartikel over dit onderwerp.}}
Een microkernel gooit het helemaal over een andere boeg: de diensten die de kernel biedt worden zoveel mogelijk uitgesplitst in verschillende losstaande processen. Elk proces draait in zijn eigen beschermde geheugengebied. De uitsplitsing van diensten bevordert de stabiliteit enorm: wanneer een deel van de kernel crasht draait de rest door. Het gecrashte onderdeel kan vervolgens simpelweg opnieuw worden gestart. Ook is het mogelijk een deel van de kernel te vervangen zonder de computer opnieuw te hoeven starten. Er kleeft echter ook een nadeel aan dit type kernel: complexiteit. Omdat alle kernel-diensten helemaal opzichzelf staan, gaat er veel ontwikkeltijd zitten in de onderlinge communicatie. De prestaties liggen meestal ook lager dan bij een monolitische kernel, omdat er continu moet worden geschakeld tussen de diensten. Voorbeelden van microkernels zijn: [[QNX]], [[Symbian OS]] en [[Machkernel]].


Een microkernel is een kernel waarbij het merendeel van de diensten in gebruikersmodus worden afgehandeld. Zo zullen drivers als aparte processen werken in het systeem.
=== Hybride-kernel ===

=== Hybride kernel ===

{{Zieook|Zie het artikel [[Hybride kernel]] voor het hoofdartikel over dit onderwerp.}}
{{Zieook|Zie het artikel [[Hybride kernel]] voor het hoofdartikel over dit onderwerp.}}
Een hybride-kernel is een combinatie van bovengenoemde twee kernels die bepaalde eigenschappen van de twee werelden combineert.
Hybride-kernels zijn doorgaans 'gegroeide' microkernels, waarbij er meer functionaliteit in een microkernel is geplaatst.
[[Windows NT]], [[BeOS]], [[Darwin_(kernel)|Darwin]] (de kernel van [[Mac OS X]]) en [[DragonFly BSD]] zijn een paar voorbeelden van hybride kernelbesturingsystemen.


Een hybride kernel is een kruising tussen een monolithische kernel en een microkernel. Zo zullen een aantal diensten afgehandeld worden in gebruikersmodus en een aantal in supervisormodus.
Anderzijds werden door de komst van multi-processors, hyper-thread en multi-core de klassieke (vooral Unix-achtige) kernels verplicht te evolueren naar een hybridekernel teneinde SMP (Symmetric Multi Processing) te ondersteunen. Dit was een van de grote veranderingen toen SUN van SUNOS overstapte naar Solaris rond 1993. De Linux kernels zijn slechts sinds een paar jaar in staat om op een efficiënte manier SMP systemen te draaien.

=== Exokernel ===

{{Zieook|Zie het artikel [[Exokernel]] voor het hoofdartikel over dit onderwerp.}}

Een exokernel is een kernel die tracht abstractie van beveiliging te scheiden. Deze zorgt dat er zo weinig mogelijk abstractie is, waardoor applicaties zelf de abstractie kunnen afhandelen via interfaces.

=== Picokernel/Nanokernel ===

{{Zieook|Zie het artikel [[Nanokernel]] voor het hoofdartikel over dit onderwerp.}}

Een picokernel of nanokernel is een exokernel die ontzettend klein is, vaak zelfs kleiner dan een microkernel.

=== Modulaire kernel ==


{{Zieook|Zie het artikel [[Modulaire kernel]] voor het hoofdartikel over dit onderwerp.}}
== Zie ook ==


Een modulaire kernel is een hybride kernel waarbij de kernel is opgedeeld in kleinere stukken, die modules worden genoemd.
* [[Machkernel|Mach]], een in veel systemen gebruikte microkernel.
* [[Linuxkernel|Linux]], een populaire monolitische kernel.
* [[Windows]], een populaire hybride kernel.


{{Commonscat|Operating system kernels}}
{{Commonscat|Operating system kernels}}

Versie van 26 mei 2010 18:29

Een kernel of core is in de informatica de kern van een besturingssysteem. De kernel is vrij simpel gezegd de supervisor in een besturingssysteem. Het is het meest centrale deel en het is het meest onzichtbaar. De kernel heeft een aantal minimale taken af te handelen:

  • Het beheren en afhandelen van onderbrekingsignalen (interrupt handler). Dit zijn signalen die van zowel hardware als software kunnen komen ter notificatie of ter aanvraag.
  • Het beheren van het fysiek geheugen waarmee de kernel werkgeheugen kan ontlenen aan processen.
  • Het beheren van het virtueel geheugen, indien een geheugenbeheereenheid op de processor aanwezig is. Hiermee kan de kernel indivuduele virtuele ruimtes scheppen voor de processen, opdat zij elkaar niet schaden.
  • Het beheren van processen, ook wel scheduling. Hierbij wordt bepaald welke taak op welk tijdstip mag uitgevoerd worden.

De diensten van de kernel kunnen door processen worden gebruikt doormiddel van een interface. Deze werken vrijwel altijd via system calls´ oftewel systeemaanroepen. Een kernel kan naast de bovenstaande taken ook nog optionele taken uitvoeren:

  • Het beheren van I/O. Hierbij wordt door de kernel bepaald welke processen gebruik kunnen maken van I/O.
  • Het beheren van BIOS-toegang. Hierbij wordt door de kernel bepaald welke processen de BIOS kunnen gebruiken en hierbij zal de kernel deze aanvragen afhandelen.
  • De kernel kan zelf ook hardware besturen en deze toegankelijk maken via een interface.

Soorten kernels

In het algemeen zijn er drie soorten van kernels. De twee extrema: monolithische kernels en microkernels en de daartussen liggende hybride kernel. Ook zijn er nog subtypes zoals de exokernel, de nanokernel en de modulaire kernel.

Monolitische kernel

Zie het artikel Monolithische kernel voor het hoofdartikel over dit onderwerp.

Een monolithische kernel is een kernel waarbij het merendeel of al de diensten afgehandeld worden in supervisormodus. Zo zullen drivers één geheel vormen met de kernel, doch zijn zij geen onderdeel van de kernel.

Microkernel

Zie het artikel Microkernel voor het hoofdartikel over dit onderwerp.

Een microkernel is een kernel waarbij het merendeel van de diensten in gebruikersmodus worden afgehandeld. Zo zullen drivers als aparte processen werken in het systeem.

Hybride kernel

Zie het artikel Hybride kernel voor het hoofdartikel over dit onderwerp.

Een hybride kernel is een kruising tussen een monolithische kernel en een microkernel. Zo zullen een aantal diensten afgehandeld worden in gebruikersmodus en een aantal in supervisormodus.

Exokernel

Zie het artikel Exokernel voor het hoofdartikel over dit onderwerp.

Een exokernel is een kernel die tracht abstractie van beveiliging te scheiden. Deze zorgt dat er zo weinig mogelijk abstractie is, waardoor applicaties zelf de abstractie kunnen afhandelen via interfaces.

Picokernel/Nanokernel

Zie het artikel Nanokernel voor het hoofdartikel over dit onderwerp.

Een picokernel of nanokernel is een exokernel die ontzettend klein is, vaak zelfs kleiner dan een microkernel.

= Modulaire kernel

Zie het artikel Modulaire kernel voor het hoofdartikel over dit onderwerp.

Een modulaire kernel is een hybride kernel waarbij de kernel is opgedeeld in kleinere stukken, die modules worden genoemd.

Zie de categorie Operating system kernels van Wikimedia Commons voor mediabestanden over dit onderwerp.