Wat is de Linux-kernel en wat doet het?


Afbeelding door ingridtaylar

Met meer dan 13 miljoen regels code is de Linux-kernel een van de grootste open source-projecten ter wereld, maar wat is een kernel en waarvoor wordt deze gebruikt?

Dus wat is de kernel?

Een kernel is het laagste niveau van gemakkelijk vervangbare software die in verbinding staat met de hardware in uw computer. Het is verantwoordelijk voor de koppeling van al uw toepassingen die in gebruikersmodus worden uitgevoerd tot aan de fysieke hardware, en zorgt ervoor dat processen, ook wel servers genoemd, informatie van elkaar kunnen krijgen met behulp van inter-procescommunicatie (IPC).



Verschillende soorten pitten

Er zijn natuurlijk verschillende manieren om een ​​kernel te bouwen en architectonische overwegingen wanneer je er een vanaf het begin bouwt. Over het algemeen vallen de meeste kernels in een van de drie typen: monolithisch, microkernel en hybride. Linux is een monolithische kernel, terwijl OS X (XNU) en Windows 7 hybride kernels gebruiken. Laten we een korte rondleiding door de drie categorieën maken, zodat we later meer in detail kunnen treden.


Afbeelding door uptown popcorn

Microkernel
Een microkernel hanteert de aanpak om alleen te beheren wat het moet: CPU, geheugen en IPC. Vrijwel al het andere in een computer kan worden gezien als een accessoire en kan worden afgehandeld in de gebruikersmodus. Microkernels hebben het voordeel van draagbaarheid omdat ze zich geen zorgen hoeven te maken als je je videokaart of zelfs je besturingssysteem verandert, zolang het besturingssysteem nog steeds op dezelfde manier toegang probeert te krijgen tot de hardware. Microkernels hebben ook een zeer kleine footprint, voor zowel geheugen als installatieruimte, en ze zijn meestal veiliger omdat alleen specifieke processen in de gebruikersmodus worden uitgevoerd die niet de hoge machtigingen als supervisormodus heeft.

Pluspunten

  • Draagbaarheid
  • Kleine installatievoetafdruk
  • Kleine geheugenvoetafdruk
  • Veiligheid

nadelen

  • Hardware is meer geabstraheerd door middel van stuurprogramma's
  • Hardware reageert mogelijk langzamer omdat stuurprogramma's in gebruikersmodus staan
  • Processen moeten in een wachtrij wachten om informatie te krijgen
  • Processen kunnen geen toegang krijgen tot andere processen zonder te wachten

Monolithische Kernel
Monolithische kernels zijn het tegenovergestelde van microkernels omdat ze niet alleen de CPU, het geheugen en de IPC omvatten, maar ook zaken als apparaatstuurprogramma's, bestandssysteembeheer en systeemserveraanroepen. Monolithische kernels hebben de neiging om beter toegang te krijgen tot hardware en multitasking, want als een programma informatie uit het geheugen of een ander lopend proces moet halen, heeft het een directere lijn om toegang te krijgen en hoeft het niet in een wachtrij te wachten om dingen voor elkaar te krijgen. Dit kan echter problemen veroorzaken, want hoe meer dingen er in de supervisormodus worden uitgevoerd, hoe meer dingen je systeem kunnen laten crashen als je je niet goed gedraagt.

Pluspunten

  • Meer directe toegang tot hardware voor programma's
  • Gemakkelijker voor processen om met elkaar te communiceren
  • Als je apparaat wordt ondersteund, zou het moeten werken zonder extra installaties
  • Processen reageren sneller omdat er geen wachtrij is voor processortijd

nadelen

  • Grote installatievoetafdruk
  • Grote geheugenvoetafdruk
  • Minder veilig omdat alles in de supervisormodus draait

wat-is-de-linux-kernel-en-wat-doet-het-doen foto 3
Afbeelding via schoschie op Flickr

Hybride kernel
Hybride kernels hebben de mogelijkheid om te kiezen wat ze willen draaien in de gebruikersmodus en wat ze willen uitvoeren in de supervisormodus. Vaak worden zaken als apparaatstuurprogramma's en bestandssysteem-I/O uitgevoerd in de gebruikersmodus, terwijl IPC- en serveroproepen in de supervisormodus worden gehouden. Dit geeft het beste van twee werelden, maar vereist vaak meer werk van de hardwarefabrikant omdat alle verantwoordelijkheid van de bestuurder bij hen ligt. Het kan ook enkele van de latentieproblemen hebben die inherent zijn aan microkernels.

Pluspunten

  • Ontwikkelaar kan kiezen wat er in de gebruikersmodus en wat in de supervisormodus wordt uitgevoerd
  • Kleinere installatievoetafdruk dan monolithische kernel
  • Flexibeler dan andere modellen

nadelen

  • Kan last hebben van dezelfde procesvertraging als microkernel
  • Apparaatstuurprogramma's moeten (meestal) door de gebruiker worden beheerd

Waar zijn de Linux-kernelbestanden?

wat-is-de-linux-kernel-en-wat-doet-het-doen foto 4

Het kernelbestand, in Ubuntu, wordt opgeslagen in uw /boot-map en wordt vmlinuz-versie genoemd. De naam vmlinuz komt van de unix-wereld waar ze hun kernels gewoon unix noemden in de jaren 60, dus Linux begon hun kernel linux te noemen toen het voor het eerst werd ontwikkeld in de jaren 90.

Toen virtueel geheugen werd ontwikkeld voor eenvoudigere multitasking-mogelijkheden, werd vm vooraan in het bestand geplaatst om aan te tonen dat de kernel virtueel geheugen ondersteunt. Een tijdje heette de Linux-kernel vmlinux, maar de kernel werd te groot om in het beschikbare opstartgeheugen te passen, dus het kernel-image werd gecomprimeerd en de uitgang x werd veranderd in een z om aan te geven dat het was gecomprimeerd met zlib-compressie. Deze zelfde compressie wordt niet altijd gebruikt, vaak vervangen door LZMA of BZIP2, en sommige kernels worden gewoon zImage genoemd.

De versienummering heeft de indeling A.B.C.D, waarbij A.B waarschijnlijk 2.6 is, C uw versie is en D uw patches of fixes aangeeft.

wat-is-de-linux-kernel-en-wat-doet-het-doen foto 5

In de /boot map zullen er ook andere zeer belangrijke bestanden zijn genaamd initrd.img-version, system.map-version en config-version. Het initrd-bestand wordt gebruikt als een kleine RAM-schijf die het eigenlijke kernelbestand uitpakt en uitvoert. Het bestand system.map wordt gebruikt voor geheugenbeheer voordat de kernel volledig wordt geladen, en het configuratiebestand vertelt de kernel welke opties en modules in de kernelafbeelding moeten worden geladen wanneer deze wordt gecompileerd.

Linux Kernel Architectuur

Omdat de Linux-kernel monolithisch is, heeft deze de grootste footprint en de meeste complexiteit ten opzichte van de andere typen kernels. Dit was een ontwerpfunctie waarover in de begindagen van Linux nogal wat discussie bestond en die nog steeds enkele van dezelfde ontwerpfouten met zich meebrengt die monolithische kernels inherent hebben.

Een ding dat de Linux-kernelontwikkelaars deden om deze fouten te omzeilen, was het maken van kernelmodules die tijdens runtime konden worden geladen en verwijderd, wat betekent dat je functies van je kernel on-the-fly kunt toevoegen of verwijderen. Dit kan verder gaan dan alleen het toevoegen van hardwarefunctionaliteit aan de kernel, door modules op te nemen die serverprocessen uitvoeren, zoals virtualisatie op laag niveau, maar het kan er ook voor zorgen dat de hele kernel wordt vervangen zonder dat u in sommige gevallen uw computer opnieuw hoeft op te starten.

Stel je voor dat je zou kunnen upgraden naar een Windows-servicepack zonder ooit opnieuw te hoeven opstarten...

Kernelmodules

wat-is-de-linux-kernel-en-wat-doet-het-doen foto 6

Wat als Windows alle beschikbare stuurprogramma's al had geïnstalleerd en u alleen de stuurprogramma's hoefde aan te zetten die u nodig had? Dat is in wezen wat kernelmodules doen voor Linux. Kernelmodules, ook wel bekend als een laadbare kernelmodule (LKM), zijn essentieel om de kernel te laten functioneren met al je hardware zonder al je beschikbare geheugen te verbruiken.

Een module voegt doorgaans functionaliteit toe aan de basiskernel voor zaken als apparaten, bestandssystemen en systeemaanroepen. LKM's hebben de bestandsextensie .ko en worden doorgaans opgeslagen in de directory /lib/modules. Vanwege hun modulaire karakter kun je je kernel gemakkelijk aanpassen door modules in te stellen om te laden, of niet te laden, tijdens het opstarten met het menuconfig commando of door je /boot/config bestand te bewerken, of je kunt modules on-the-fly laden en verwijderen met de modprobe opdracht.

Modules van derden en closed source zijn beschikbaar in sommige distributies, zoals Ubuntu, en worden mogelijk niet standaard geïnstalleerd omdat de broncode voor de modules niet beschikbaar is. De ontwikkelaar van de software (d.w.z. nVidia, ATI, onder andere) leveren niet de broncode, maar bouwen hun eigen modules en compileren de benodigde .ko-bestanden voor distributie. Hoewel deze modules gratis zijn zoals in bier, zijn ze niet gratis zoals in spraak en zijn ze dus niet opgenomen in sommige distributies omdat de beheerders vinden dat het de kernel aantast door niet-vrije software aan te bieden.

Een kernel is geen magie, maar het is absoluut essentieel voor elke computer die goed werkt. De Linux-kernel is anders dan OS X en Windows omdat deze stuurprogramma's op kernelniveau bevat en veel dingen direct uit de doos ondersteunt. Hopelijk weet je iets meer over hoe je software en hardware samenwerken en welke bestanden je nodig hebt om je computer op te starten.

Kernel.org

Meer verhalen

Brengen uw kinderen te veel tijd voor het scherm door?

Hoeveel tijd brengen uw kinderen voor het scherm door? Als het meer dan twee uur per dag is, lopen ze volgens nieuw onderzoek een groter risico op gedragsproblemen.

Beveilig uw Windows Live-account op een openbare pc met een aanmeldingscode

Hoewel de meesten van ons hier de voorkeur geven aan Google, heeft Windows Live één geweldige functie die Gmail nog niet biedt: een beveiligingscode voor eenmalig gebruik waarmee u kunt inloggen op een openbare computer zonder dat uw wachtwoord wordt gestolen. Dit is hoe het werkt.

Aan de slag met het nieuwe Windows Live Mesh 2011

Onlangs is Microsoft besluiteloos geweest met zijn Live Mesh / Sync cloudgebaseerde services. Na de introductie van Live Mesh Public Beta en wat hernoemen, heet het nu Live Mesh 2011 en laten we je zien hoe je ermee aan de slag kunt.

Vrijdagpret: Road of the Dead

Na een lange week is het tijd om wat plezier te hebben terwijl je wacht tot het tijd is om te stoppen. Deze week hebben we iets om je adrenaline te laten pompen terwijl je probeert te ontsnappen uit een stad die wordt overspoeld door zombies.

Livescribe-pennen sturen nu handgeschreven notities naar Evernote

Als je een Evernote-gebruiker bent, maar toch liever pen en papier gebruikt, kun je nu je digitale Livescribe-pen gebruiken om je notities rechtstreeks naar Evernote te sturen, waar ze doorzoekbaar en overal beschikbaar zijn.

Verborgen toetsenbordtruc maakt niet-krullende aanhalingstekens in Windows Live Writer

Ben je het zat dat Windows Live Writer al je dubbele en enkele aanhalingstekens naar de gekrulde versies schakelt? Natuurlijk kun je het uitschakelen in het optiepaneel, maar er is eigenlijk een coole truc om ze te gebruiken die je misschien niet hebt opgemerkt.

Opera 11 krijgt extensies

Vanaf de alfa-releases van Opera 11 kunt u extensies in Opera gaan gebruiken. De extensies zijn gebaseerd op de W3C Widget-specificaties en worden overwogen voor een Open Standaard-inspanning.

Beginner: taken toewijzen aan andere mensen in Outlook 2010

De functie Taken in Outlook is een geweldige manier om bij te houden wat u moet doen, maar het is ook een goede manier om met anderen samen te werken en taken aan hen toe te wijzen. Hier leest u hoe u gemakkelijk taken aan andere mensen kunt toewijzen.

Groepen foto's in batch wijzigen met XnView

Nadat ik enkele tientallen grote foto's met meerdere megapixels heb gemaakt, is het laatste wat ik wil doen voordat ik ze upload, ze handmatig verkleinen. In plaats van met lange uploadtijden om te gaan, komt de freeware-applicatie XnView te hulp, de grootte van batches wordt in een paar eenvoudige stappen aangepast.

Wat is cloud computing en wat betekent dit stomme modewoord?

Laatst schreef een lezer met de vraag of cloud computing zou kunnen helpen om ruimte op zijn harde schijf te besparen, waardoor ik me realiseerde dat het tijd is om te praten over wat dit idiote modewoord precies betekent.