Kernel: verschil tussen versies

479 bytes verwijderd ,  10 jaar geleden
Artikel grotendeels herschreven.
(Artikel grotendeels herschreven.)
Een '''kernel''' isof het'''core''' meestis centralein ende meest[[informatica]] onzichtbarede onderdeelkern van een [[besturingssysteem]],. De kernel is vrij simpel gezegd de kern[[supervisor]] diein alleeen basisvoorzieningenbesturingssysteem. verzorgtHet vooris dehet anderemeest delencentrale vandeel en het besturingssysteemis het meest onzichtbaar. De kernel omvatheeft een aantal minimale taken af onderte meerhandelen:
 
* 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]]'sprocessen worden gebruikt door middeldoormiddel van een verzameling programma-[[interface]]s. dieDeze meestalwerken vrijwel altijd via ''system calls''´ oftewel systeemaanroepen. genoemdEen worden.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 ===
 
{{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 ===
 
{{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.}}
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 [[MonolitischeModulaire 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}}
33

bewerkingen