Kernel

Uit LinuxMintNL WiKi
Ga naar: navigatie, zoeken

FF i.png Dit is het hoofdartikel over kernels. Een gerelateerd artikel is kernel versies

Een kernel is een systeem-besturing programma dat de verbinding vormt tussen de hardware van een computer en de gebruiker-omgeving. Het is het hart van een Linux systeem.

Kernels zijn een vervolg op het UNIX besturings-systeem, en de basis van GNU/Linux distributies.

Boven de kernel wordt het GNU[1] en het gebruikers-systemen gebouwd bijv. Linux Mint 17.1 Cinnamon. Het geheel bestaat dan uit de kernel, de programmatuur van GNome en Cinnamon van Linux Mint versie 17.1. Dit wordt ook wel operating systeem (OS) genoemd, maar is niet geheel juist omdat dit systeem uit drie delen bestaat.

Er zijn verschillende soorten kernels, waarvan de micro en monolithische kernel hier kort worden beschreven.
Voor een uitgebreide lijst zie Kernel op Wikipedia.

Werkgebied van kernel in computersystem

Wat is een kernel

De kernel is vergelijkbaar met alles wat onder een motorkap van een auto zit. Het zorgt er voor dat de auto (computer) en de apparatuur (hdd, monitor, printer enz. (groen)) door de gebruiker met programma's (applications (rood)) kan worden gebruikt.

In een aan de auto kunnen allerlei apparaten en handigheden worden aangebracht. Hiervoor is soms een monteur (sudo of systeem-beheerder) nodig die er voor zorgt dat alles onder de motorkap (kernel) goed wordt ingesteld en de werking en veiligheid (cpu. memory en devices) blijft gewaarborgd.

De bestuurder (systeem-gebruiker) kan zelf de auto aankleden en gebruiken (Linux Mint programma's). De airco of de ramen regelen, de radio instellen, de verlichting, een stuur- en stoelhoezen enz. en dat gebeurt met de gebruikersinterface Gnome, KDE, Xfce en Debian (LMDE) die bij Linux Mint kan worden gebruikt. (rood in de afbeelding).

De gebruikersinterface bepaalt dus de details die men kan zien en gebruiken. Een mini (xfce) is niet hetzelfde als een maxi (Cinnamon) en een automaat (Cinnamon) werkt anders dan een schakelversnelling (Debian). Daarnaast is er ook nog een hibride (KDE).

Advies: Pas op met sudo en blijf van het motorcompartiment (kernel) en besturingsonderdelen af als je niet weet wat je doet.

Micro kernel

Met een microkernel wordt in de informatica een kernel bedoeld die zeer weinig diensten uitvoert en waarbij het merendeel van de diensten wordt uitgevoerd in de gebruikersmodus (kort gezegd, programma's (diensten) die door de gebruiker zijn geïnstalleerd]. Het woord micro komt van het Oud-Griekse μικρος (micros: "klein"). Daarmee wordt vooral gerefereerd aan het feit dat microkernels zeer klein zijn, in tegenstelling tot de monolithische kernel, waarbij de diensten onder supervisormodus werken.

Servers

Een microkernel maakt gebruik van servers die de eigenlijke interface (verbinding) tussen software en hardware/drivers zijn. Ook kan er vaak een server aanwezig zijn die zorgt dat de drivers goed beheerd worden. Zo zal een driver die crasht dan herstart worden, iets dat bekend is in het Minix-systeem.

Monolithische kernel

Met een monolithische kernel wordt in de informatica een kernel bedoeld waarbij alle diensten, of het merendeel ervan, door de kernel worden uitgevoerd in supervisormodus (hoofdprogramma van een computer). De term monolithisch is afgeleid van de Oud-Griekse woorden monos ("alleen" of "eenzaam") en lithos ("steen" of "gesteente"), omdat de kernel het merendeel van de diensten, zoals toegang tot hardware via een bepaalde interface, geheugenbeheer, etc., zelf afhandelt, in tegenstelling tot de werking van de microkernel.

Linux kernel

Linux kernel

Voor de meeste gebruikers bevindt de kernel zich onder de spreekwoordelijke "motorkap": de gebruiker communiceert met de computer via een gebruikersinterface. De kernel bevat de basisfaciliteiten van Linux, zoals stuurprogramma's (drivers) en systeem-aanroepen zoals read() en write(). Deze veelgebruikte basisfuncties zijn nodig om programma's te kunnen schrijven zonder dat de software-ontwikkelaar zich zorgen hoeft te maken over details, bijvoorbeeld hoe een read()-actie (invoer van een toetsenbord of ander invoerapparaat) werkt.[2]

Een kernel is een binair bestand (bestaat enkel uit 0 en 1), maar omdat de Linux-kernel vrije software is, is de broncode ervan vrij beschikbaar. Zo kan iedereen met de nodige expertise de kernel veranderen en de veranderde versie beschikbaar stellen voor anderen.

Kwaliteit

Dat dit laatste niet op noemenswaardige schaal gebeurt, wordt gezien als een bevestiging van de kwaliteiten van Linus Torvalds, de hoofdontwikkelaar, maintainer (controleur) en leider van het project. In 1990 begon hij een terminalemulator te ontwikkelen, maar hij wilde meer functies en besefte even later dat hij in feite de kernel voor een besturingssysteem aan het schrijven was. Op 5 oktober 1991 maakte Torvalds de eerste release bekend met een memorabele Usenetposting in de nieuwsgroep comp.os.minix.

Kernel versie

Elke Linux-kernel heeft een nummer die een bepaalde versie aangeeft bij voorbeeld 2.6.39. Hierbij is de tweede een volledige uitgewerkte versie, de zes is voor verbeteringen en reorganisatie en negenendertig zijn tussentijdse aanpassing die meestal te maken hebben met reparaties die niet kunnen wachten zoals beveiliging en belangrijke aanpassingen van de kernel.

Het nummer van de in gebruik zijnde kernel kan in de Terminal worden gevonden met:

  • uname -r alleen het kernel versie nummer.
  • cat /proc/version uitgebreide kernel versie info.

De versie aanduiding is in de loop der jaren veranderd waardoor een LTS of Tussen versie niet meer direct herkenbaar is.

Aanbevolen kernel

In Updatebeheer staat een lijst met alle voor Linux Mint beschikbare kernels en is dan te vinden met de tab Tonen > Kernels.

De kernel die het best bij het systeem past is de Aanbevolen kernel en kan door aanklikken worden geïnstalleerd. Andere kernelversies kunnen het systeem minder stabiel maken.

Er kunnen meerdere kernels zijn geïnstalleerd, maar er kan er maar een Actief of Geladen zijn.

Kernel modulen

Welke kernel modules zijn geladen kan in de terminal worden bekeken met:

  • lsmod (lsmod = lees modules)

Hoe de kernel modules in het geheugen zijn geladen kan worden gevonden met:

  • dmesg | less (dmesg = display message (toon berichten) of driver message (driver berichten))

Puur en hybride

Microkernels hebben net zoals monolithische kernels het probleem dat zij soms niet geheel een microkernel zijn. Zo zijn er microkernels die de drivers in een modus draaien tussen de supervisormodus en de gebruikersmodus, er zijn er ook die hun schedulers en geheugenbeheer in gebruikersmodus afhandelen. Omdat besturingssystemenkunde niet een volledig vastgelegde kunde is, zijn de grenzen hiervan moeilijk te leggen. In deze wetenschap is het dan ook een geaccepteerde conventie dat microkernels vooral de drivers in gebruikersmodus draaien. Door hiervan af te wijken is het onderscheid tussen puur en hybride ontstaan. Pure monolithische kernels zijn vrij zeldzaam, maar gebruikelijk op embedded platformen zoals ARM.

Bronnen en referenties

  1. Wat is GNU/Linux door Richard M. Stallman
  2. De Linux kernel (@ Sjoerd Visser)