Wat is een Kernel
Lijst van de verschillende Linux Kernels
Een kernel is een computerprogramma dat het hart en de kern vormt van een besturingssysteem. Omdat het besturingssysteem controle heeft over het systeem, heeft de kernel ook controle over alles in het systeem. Het is het belangrijkste onderdeel van een besturingssysteem. Telkens wanneer een systeem opstart, is de kernel het eerste programma dat na de bootloader wordt geladen, omdat de kernel de rest van het systeem voor het besturingssysteem moet afhandelen. De kernel blijft in het geheugen totdat het besturingssysteem wordt afgesloten.
De kernel is verantwoordelijk voor taken op laag niveau, zoals schijfbeheer, geheugenbeheer, taakbeheer, enz. Het biedt een interface tussen de gebruiker en de hardwarecomponenten van het systeem. Wanneer een proces een verzoek doet aan de kernel, wordt dit systeemaanroep genoemd.
Functies van een kernel
Hieronder volgen de functies van een kernel:
- Toegang tot computerbronnen: een kernel heeft toegang tot verschillende computerbronnen, zoals de CPU, I/O-apparaten en andere bronnen. Het fungeert als een brug tussen de gebruiker en de bronnen van het systeem.
- Resource Management: Het is de plicht van een kernel om de resources tussen verschillende processen te delen op een zodanige manier dat er voor elk proces uniforme toegang tot de resources is.
- Geheugenbeheer: elk proces heeft wat geheugenruimte nodig. Geheugen moet dus worden toegewezen en ongedaan worden gemaakt voor de uitvoering ervan. Al deze geheugenbeheer wordt gedaan door een Kernel.
- Apparaatbeheer: De randapparatuur die in het systeem is aangesloten, wordt gebruikt door de processen. De toewijzing van deze apparaten wordt dus beheerd door de kernel.
Kernelmodus en gebruikersmodus
Er zijn bepaalde instructies die alleen door Kernel moeten worden uitgevoerd. De CPU voert deze instructies dus alleen in de kernelmodus uit. Geheugenbeheer moet bijvoorbeeld alleen in de kernelmodus worden uitgevoerd. In de gebruikersmodus voert de CPU de processen uit die door de gebruiker in de gebruikersruimte zijn opgegeven.
Soorten kernel
Over het algemeen zijn er vijf soorten kernels. Zij zijn:
Monolithische kernels
Monolithische kernels zijn die kernels waarbij de gebruikersservices en de kernelservices in dezelfde geheugenruimte zijn geïmplementeerd, d.w.z. in dit geval wordt geen ander geheugen voor gebruikersservices en kernelservices gebruikt. Door dit te doen, wordt de grootte van de kernel vergroot en dit vergroot op zijn beurt de grootte van het besturingssysteem. Omdat er geen aparte gebruikersruimte en kernelruimte is, zal de uitvoering van het proces sneller zijn in monolithische kernels.
Voordelen:
Het biedt CPU-planning, geheugenplanning, bestandsbeheer alleen via systeemaanroepen.
De uitvoering van het proces is snel omdat er geen aparte geheugenruimte is voor gebruiker en kernel.
Nadelen:
Als een service faalt, leidt dit tot systeemstoringen.
Als er nieuwe services moeten worden toegevoegd, moet het hele besturingssysteem worden aangepast.
Microkernel
Een Microkernel verschilt van Monolithische kernel omdat in een Microkernel de gebruikersservices en kernelservices zijn geïmplementeerd in verschillende ruimtes, d.w.z. we gebruiken User Space en Kernel Space in het geval van Microkernels. Omdat we User Space en Kernel Space afzonderlijk gebruiken, verkleint het de grootte van de kernel en dit verkleint op zijn beurt de grootte van het besturingssysteem.
Omdat we verschillende ruimtes gebruiken voor gebruikersservices en kernelservice, wordt de communicatie tussen applicatie en services gedaan met behulp van berichtparsing en dit vermindert op zijn beurt de uitvoeringssnelheid.
Voordelen:
Als er nieuwe services moeten worden toegevoegd, kunnen deze eenvoudig worden toegevoegd.
Nadelen:
Omdat we User Space en Kernel Space afzonderlijk gebruiken, kan de communicatie tussen deze de algehele uitvoeringstijd verkorten.
Hybride kernel
Een Hybrid Kernel is een combinatie van zowel Monolithic Kernel als Microkernel. Het maakt gebruik van de snelheid van Monolithic Kernel en de modulariteit van Microkernel.
Hybride kernels zijn microkernels die “niet-essentiële” code in de kernelruimte hebben, zodat de code sneller kan worden uitgevoerd dan in de gebruikersruimte. Dus sommige services, zoals netwerkstack of bestandssysteem, worden uitgevoerd in kernelruimte om de prestatieoverhead te verminderen, maar toch draait het kernelcode als servers in de gebruikersruimte.
Nanokernel
In een Nanokrnel is, zoals de naam al doet vermoeden, de hele code van de kernel erg klein, d.w.z. de code die wordt uitgevoerd in de geprivilegieerde modus van de hardware is erg klein. De term nanokernel wordt gebruikt om een kernel te beschrijven die een klokresolutie van nanoseconden ondersteunt
Exokernel
Exokernel is een besturingssysteemkernel die is ontwikkeld door de MIT parallel en de Distributed Operating Systems-groep. Hier in dit type kernel is de bronbescherming gescheiden van het beheer en dit resulteert er op zijn beurt in dat we applicatiespecifieke aanpassingen kunnen uitvoeren.
In de Exokernel is het niet de bedoeling om alle abstracties te implementeren. Maar het idee is om zo min mogelijk abstracties op te leggen en door dit te doen mag de abstractie alleen worden gebruikt wanneer dat nodig is. Er zal dus geen krachtabstractie zijn in Exokernel en dit is de functie die het anders maakt dan een Monolithische Kernel en Microkernel. Maar het nadeel hiervan is het complexe ontwerp. Het ontwerp van de Exokernel is zeer complex.