De kernel + een klein stukje geschiedenis over Unix & GNU/Linux

By Machiel, 16 november 2012

Ter inleiding?

Op een bepaald moment leende ik een heel interessant boek (UNIX het standaard operating systeem) bij de bibliotheekwaar heel helder in werd uitgelegd wat een kernel is en wat het doet. Ik had al wel vaker van het woord kernel gehoord maar wat het precies inhield geen idee, laat staan wat het deed. Tot ik dus het boek van H.J.Thomassen las. Hierin werden tal van zaken heel helder uitgelegd m.b.t tot UNIX en GNU/Linux

auteur H.J.Thomassen

GNU/Linux distribution timeline

Een klein stukje geschiedenis ter verheldering?Embarassed

Als u de computer heeft opgestart en u wilt een programma starten dan dient het programma van de hardeschijf naar het werkgeheugen (RAM) verplaatst te worden. Er wordt een kopie geladen in het werkgeheugen. De harde schijf, schrijft (laadt) informatie naar het werkgeheugen waarin meerdere kopieën van verschillende programma`s naast elkaar functioneren. U snapt het al hoe meer geheugen uw pc bevat hoe sneller programma`s opstarten en hoe meer programma`s u tegelijkertijd op uw pc kunt draaien zonder dat er enige vorm van vertraging optreedt. We spreken dan van multitasking, de computer werkt aan meerdere taken tegelijkertijd.

Even terug nog naar wat er precies gebeurd als er een kopie in het werkgeheugen geladen is doordat u een programma heeft opgestart. U heeft dan een proces/taak geladen naar het werkgeheugen. In het werkgeheugen heeft de kernel standaard een eigen gebied tot de beschikking, dit geeft al aan hoe belangrijk (lees onmisbaar) de rol van de kernel is binnen een besturingssysteem.

Linus Torvalds de innitiele ontwikkelaar van de Linux kernel

Als we het strikt bekijken dan zouden we kunnen zeggen dat Linux de naam van de kernel is. Linus Thorvalds

is de initiële ontwikkelaar van deze kernel. Deze kernel is grotendeels gebaseerd op de UNIX kernel die aanvankelijk ontwikkeld is door Bell Labs. Hoewel de huidge linux kernel voor meer dan 95% door vele duizenden andere ontwikkelaars over de hele wereld wordt bijgehouden, blijft Torvalds wel de uiteindelijke autoriteit. Hij bepaald welke nieuwe code opgenomen wordt in de standaard Linux kernel. Torvalds is dan ook de eigenaar van het handelsmerk “Linux” en bewaakt het gebruik ervan middels het Linux Mark Institute. Hij werkt via de Linux Foundation zodat hij zich fulltime bezig kan houden met Linux. Als we het echter goed zouden willen uitspreken zouden we moeten spreken van GNU/Linux want zoals u al hierboven las is Linux strikt genomen de kernel (weliswaar volledig onmisbaar) maar  is er veel meer nodig om te kunnen spreken van een volwaardig besturingssysteem.

founder of GNU project and the Free software Foundation

oprichter van GNU project en van de Free software Foundation

Wat vaak met ”Linux” wordt bedoeld, is een Linux-distributie. Dit is een samengesteld geheel van zowel de kernel als andere software. Samen vormt dit een volledig OS (operating systeem). De meeste linux distributies met Linux als kernel zijn veelal varianten op het GNU besturingssysteem. Richard Stallman  begon met de ontwikkeling van GNU in 1984. Een stuk eerder dan dat Linus Torvalds startte met de ontwikkeling van zijn kernel. Het doel was een compleet vrij besturingssysteem te ontwikkelen. Hoewel natuurlijk niet alles zelf ontwikkeld is werd het meeste van de centrale onderdelen ontwikkeld door GNU en de grootste bijdrage aan het Linux systeem geleverd. De visie van een vrij besturingssysteem kwam bij de Free software Foundation vandaan. GNU is een recursief acroniem dat staat voor GNU’s Not Unix. Een set utility’s die is gemaakt door de FSF (Free Software Foundation) en een alternatief vormt voor de utility’s die bij Unices te vinden zijn. Bij deze utility’s hoort ondermeer een shell, een stuk software dat een commando lijn toont net zoals bij MS-DOS.

Samen vormen de kernel en GNU-utility’s een volledig functionerend operating systeem voor uw pc. Omdat de software van het GNU-project net zo belangrijk is als de kernel, is het eigenlijk correcter het systeem GNU/Linux te noemen.

Een praktijk voorbeeldje:

Stel u opent een terminal op uw pc (ctrl+alt+t) en typt het commando ls  (staat voor list vertaald in het Nederlands geef het dus een lijst weer) in uw home directory. U krijgt nadat u dit commando hebt ingetoetst netjes de gegevens in tabel vorm te zien. Te weten een lijstje met resultaten omtrent de directories die zich bevinden in dit geval in uw /home directory (let wel uitvoerbare bestanden met een . ervoor worden niet getoond. Wilt u alle bestanden zien die in uw /home/<gebruikersnaam> directory staan dan toetst u ls -a in)

OKe? maar wat gebeurt er nou echter allemaal precies vanaf het begin dat u dit commando intoetst op uw toetsenbord tot en met het moment waarop de gegevens van het commando weer terug op uw beeldscherm verschijnen? En welke rol heeft de kernel (kern) hier dan precies in? Dat gaan we in stapjes hieronder eens kort bekijken:

 U tikt ls in op uw terminal en toen? En welke rol heeft de terminal dan?: Leest u even mee ?Innocent

  1. De letters ls worden in de terminal door u ingetikt en arriveren in de kernel. De kernel weet dat de shell deze letters graag weer gegeven wilt zien omdat de shell namelijk na elk proces of er op zijn terminal ook weer een regel tekst is getypt.
  2. De kernel transporteert een kopie naar de geheugen ruimte waar de shell zich bevindt.
  3. De shell analyseert de beide letters en vraagt aan de kernel om het programma ls van het schijfgeheugen (uw harde schijf) naar het werkgeheugen (RAM geheugen in uw pc) te kopiëren.
  4. De kernel doet dit vervolgens waarna het een eigen proces is geworden in het RAM geheugen.
  5. Het shell proces geeft aan dat het geen beurten meer hoeft te hebben tot dat het ls proces klaar is.
  6. De kernel geeft nu vervolgens beurten aan het ls proces zodat het zijn werk kan afronden. Dat gaat in dit geval om het verzamelen van de beschikbare informatie omtrent welke categorieën zich en er in de /home map bevinden. Deze informatie bevindt zich in bestanden op het schijfgeheugen. Het ls proces vraagt om daarvan een kopie te krijgen.
  7. Als ls die gegevens heeft ordent het dit in tabelvorm waarna het vraagt aan de kernel de gegevens weer te geven op uw terminal. Dit gebeurd vervolgens ook.
  8. het ls proces geeft vervolgens aan de kernel aan dat het klaar is waarna de kernel het werkgeheugen (RAM) geheugen leeg maakt waar ls zat. Daarna geeft de kernel weer een beurt aan de shell, waar de shell om vroeg (zie punt 5)
  9. De kernel geeft vervolgens weer een beurt aan het shell proces dat weet dan dat het van u weer een nieuwe commando moet vragen. Daarom geeft de shell eerst de tekentjes (blinkende blokje achter uw $ teken in Ubuntu) van de prompt aan de kernel om deze op uw terminal weer te laten geven. En pas daarna vraagt de shell om de volgende regel tekst die u intypt weer op te gaan halen. <– “Waarna de stappen 1 t/m 9 weer opnieuw doorlopen worden”

Bronvermeldingen voor dit artikel en links naar de websites:

What do you think?

What are you waiting for join the conversation!

%d bloggers liken dit: