De Kernel
Bijna elke uitleg over hoe iets in een Linux systeem werkt verwijst ergens naar de Kernel. Voor velen is dat helaas een abstract begrip en dan springen we er overheen: dat zal wel goed zijn. Maar zo wordt het begrip niet beter. Vandaar deze Korte uitleg van de Kernel
De Kernel (het woord betekent zoiets als kern, dus het binnenste) is een stuk programma dat direct de hardware van de computer bedient. Het regelt ook het draaien van alle andere programma’s op de computer. Het is dus een laag tussen de hardware (schijven, netwerkkaarten, allerlei in/uitvoer apparaten, het geheugeni) en alle programma’s die op een systeem draaien.
Het beschermt de hardware voor verkeerd gebruik door de programma’s. Eén programmeerfoutje en je verpest iemand anders bestand.
Het verbergt veel details van de hardware voor de programma’s. De programmeur ziet geen verschil in het schrijven naar een bestand op een ext4 file systeem op een SATA schijf of op een NFS bestand op een systeem aan de andere kant van de wereld.
De draaiende programma’s (we noemen dat “processen”, zie een ander hoofdstuk) communiceren met de Kernel via een speciaal hardware commando. Bij dat commando hoort een tabel waarin staat wat gewenst wordt en hoe. Voor het opbouwen van die tabel zijn routines geschreven in C. Programmeurs roepen die routines aan, dat is makkelijker dan zelf die tabellen opbouwen. Die routines staan in bibliotheken (libraries). Die ken je vast wel van pakketten met namen als lib…
De Kernel handelt het verzoek af en geeft de resultaten in de tabel. De library routine vertaalt dat
weer in informatie die makkelijk bruikbaar is voor de programmeur. Het is gelukt, of niet!
Er is natuurlijk veel meer over de Kernel als grote scheidsrechter te vertellen. Belangrijk is nog dat bij het afhandelen van verzoeken ook gekeken wordt wie het verzoek doet. Jawel, als het verzoek van “root” komt vindt de Kernel veel meer dingen goed dan als het van een ander komt. Deze beveiliging zit dus heel diep ingebouwd.
Hoe weet de Kernel of iets van “root” komt? Dat behandelen we in Korte uitleg: Processen