Wat gebeurt er nu écht on de motorkap van een stuk software?

Je computer werkt. Je kan er dingen mee doen. Meerdere dingen zelfs, zoals gamen of spreadsheets maken in Excel. Dat lijkt voor de hand liggend, maar is het niet: zelfs een dure computer weet geen raad met zichzelf zonder een softwarebrein: het besturingssysteem. Inzoomen op het besturingssysteem als chauffeur van je computer heeft pas zin wanneer je weet waar het kadert in het totaalplaatje. Een laptop kan als voorbeeld dienen. Je koopt het ding in de winkel, je schakelt het aan, en je krijgt een Windowslogo te zien.

Een casual gebruiker kan dan ook volkomen begrijpelijk vermoeden dat Windows en de laptop onafscheidelijk zijn, maar niets is minder waar. In feite zijn laptopverkopers schuldig aan koppelverkoop: ze leggen een toestel in de winkelrekken en bieden dat vaak uitsluitend aan met bijgeleverde Windows-software. Die software, afkomstig van Microsoft, is niet gratis en je kan er van op aan dat de aanschaf er van verwerkt zit in de aankoopprijs.

Opstarten zonder Windows

In de praktijk is dat geen ramp. Hoewel er voldoende alternatieven voorhanden zijn onder de vorm van Linuxdistributies, is Windows voor de meesten de de facto standaard die je sowieso op je systeem wil. Toch is het interessant om even stil te staan bij wat de computer net is, en waar de software van derden begint. Je kan een pc perfect opstarten zonder dat daar Windows op staat. In de eerste seconden ziet alles er zelfs vertrouwd uit. Een lampje gaat ongetwijfeld branden bij de aan- uitknop, het scherm floept aan en als het goed is zie je zelfs het logo van de fabrikant passeren. Na even denkwerk en een optioneel tuutsignaal wordt je tot slot getrakteerd op de volgende melding: “Operating System not found”.

Bios: het instinct

De computer zelf bevat alle hardware en een beperkte hoeveelheid software: de bios. De Bios zorgt er voor dat je systeem begrijpt wat het is. Hij geeft de computer als het ware een basisbesef van al z’n ‘ledematen’ (scherm, harde schijf, dvd-station, processor, RAM…). De Bios stelt het systeem bovendien in staat om een aantal instinctieve handelingen uit te voeren. De belangrijkste van al: op zoek gaan naar een besturingssysteem. Dat besturingssysteem (Operating System in het Engels of kortweg OS) kan Windows zijn maar ook Linux, OS X, Remix OS, Chrome OS of zelfs MS DOS voor wie de nostalgische toer wil opgaan.

OS: het hogere brein

Is de Bios het instinct van je computer, dan is het besturingssysteem de rest van het brein. Het bevat de hogere functies en interpreteert invoer zoals gegevens afkomstig van je muis en toetsenbord,  naar analogie met de manier waarop je eigen hersenen visuele of auditieve input van je ogen of oren interpreteren. Die hogere functies vertaalt het dan weer naar eenvoudige gegevens: elektrische signalen waarmee de eigenlijke hardware raad weet. Een hedendaags OS is op die manier een soort doorgeefluik en een tolk: het vertaalt het potentieel van je hardware in een mooie visuele interface waar jij mee om kan, maar begrijpt net zo goed wat jouw gecompliceerde instructies willen zeggen in machinetaal.

Een besturingssysteem doet echter meer dan naar jouw luisteren om te zien waar je met je muis zal klikken. Sterker nog: een visuele interface is helemaal geen vereiste om de noemer ‘besturingssysteem’ te krijgen. Om te begrijpen wat een OS echt is, moeten we even terug de tijd in.

Multitasken zonder solderen

De eerste computers, de grote uit de kluiten gewassen rekenmachines uit het midden van de vorige eeuw, gebruikten geen besturingssysteem. De toestellen waren in staat één functie uit te voeren. Met wat knoppen, hendels of de occasionele ponskaart kon je het gedrag van het systeem sturen, maar in essentie waren de grote kasten fysieke versies van één enkel programma of, om wat recentere taal te gebruiken, een app. Waar je nu één app hebt om je financiën bij te houden, had het leger destijds één app die een vijandige code kon kraken. Het grootste verschil: de app nam een kamer in beslag. De computers van weleer waren verwoven met het programma dat ze moesten draaien, en een andere functie zou een nieuwe bekabeling vereisen. Vandaag zou dat systeem impliceren dat je je laptop moet openhalen en aan het solderen mag gaan wanneer je Word wil sluiten en Excel wil openen. Niet echt handig dus.

Om de beurt

De computer werd stilaan krachtiger maar ook slimmer. Al snel draaiden de machines meer dan één programma: hulpprogramma’s vertaalden vereenvoudigde input, ingevoerd door een mens, naar machinetaal. Een dergelijk programma noemen we een Compiler. De compiler is een tolk pur sang: het stuk software draait zelf rechtstreeks op de hardware, maar het laat programmeurs toe om in eenvoudigere programmeertalen hun wensen neer te pennen. Die worden door de compiler omgezet naar machinetaal, erg ingewikkelde code die rechtstreeks door de processor begrepen wordt, waarna de pc ze kan uitvoeren. Taken werden echter nog steeds sequentieel uitgevoerd, multitasking was een gevaarlijk sciencefictionverhaal.

Supercomputer Atlas

In 1962 zag het oer-besturingssysteem het levenslicht in het Engelse Manchester. Dat OS werd geboren op de Ferranti Atlas: de krachtigste supercomputer ter wereld in zijn tijd. Atlas was honderd keer sneller dan zijn voorgangers, en bevatte meer computerpk’s dan de rest van het Verenigd Koninkrijk samen.

Atlas vs wasmachine

Hoewel je wasmachine vandaag meer computerkracht heeft dan de Atlas, was het computersysteem destijds zo krachtig dat onderzoekers een nieuwe manier moesten bedenken om er mee om te gaan. Ze schreven een code waarbij geheugen (RAM) gevirtualiseerd werd. Een programma zou het virtuele geheugen aanspreken in de plaats van het fysieke geheugen.

Heb je ter illustratie een computer met 4 GB aan RAM, die alle vier volzet zijn door bijvoorbeeld je browser, Office en een fotobewerkingsprogramma, dan zal je pc niet crashen wanneer je een nieuw programma opent dat het geheugengebruik over de 4 GB trekt. Een deel van het geheugen, in casu het deel dat even niet actief gebruikt wordt, verdwijnt tijdelijk naar een bestand op de harde schijf. Het programma waarvan de gegevens van de RAM naar de harde schijf verbannen zijn zal even trager reageren wanneer je het vervolgens gebruikt, maar de programmacode weet niet wat er gebeurd is: die code spreekt immers met het virtuele geheugen en niet met het echte RAM-geheugen. Speciale programmacode managet dat virtuele geheugen en bepaalt wat er in de RAM moet blijven, en wat naar de harde schijf moet.

Toezichtshouder

Langs de andere kant bedachten de softwareingenieurs van Atlas een systeem waarbij meerdere programma’s door elkaar konden draaien op dezelfde computer. Echt tegelijk werkten ze nooit, maar voor een gebruiker zou dat wel zo lijken. Het oer-programma dat onder andere het geheugengebruik regelde en andere programma’s naast elkaar hun ding liet doen, kreeg de naam Atlas Supervisor mee. De Supervisor is onmiskenbaar het allereerste besturingssysteem, en de technieken die de ingenieurs in 1962 gebruikten zijn ook vandaag nog fundamenteel.

Meer dan wat dan ook zorgt een besturingssysteem er dus voor dat één computer meerdere programma’s kan draaien zonder dat alles in het honderd loopt. Virtueel geheugen, ook vandaag nog een bouwsteen van een besturingssysteem, is daarvoor essentieel. De andere essentiële bouwsteen is de interrupt. Zowat alle pc’s maar ook grotere systemen werken met besturingssystemen gebaseerd op interrupts. Zij geven je als gebruiker het idee dat er gemultitasked wordt.

Jongleren met de cpu

Hedendaagse processors bestaan uit meerdere cores, die ieders programmacode kunnen draaien. Oudere computers hadden een processor met één kern. Iedere processor verwerkte sequentieel instructies, één per één. Zonder OS zou een computer eerst één programma tot op het einde draaien, en dan pas aan het volgende beginnen. Je kan in zo’n geval (bij wijze van illustratie) niet uit Word totdat je het programma afsluit, waarna je naar Excel kan navigeren en daarin vast zit tot je dat afsluit.

Om dat te voorkomen werkt een processor met interrupts, of onderbrekingen. De cpu zal de code van één programma uitvoeren totdat hij ofwel instructies krijgt om naar een ander programma te luisteren, of totdat het onderbroken wordt door het besturingssysteem. Een prachtig voorbeeld is de toetsencombinatie Control + Alt + Delete, waarbij de pc alles laat vallen en een nieuw menu opent van waaruit je taakbeheer kan starten. Interrupts komen echter de hele tijd voor, ze staan de cpu toe om van programmacode naar programmacode te springen en zo Word, Excel, het besturingssysteem zelf en ieder programma dat je verder op je systeem hebt staan naast elkaar te draaien.

Dirigent

Meer dan een vertaler voor jouw input naar machinetaal, is een besturingssysteem dus een manager die de kracht van de hardware verdeelt over alle verschillende programma’s die draaien, zij het op de voorgrond zoals je browser, of op de achtergrond zoals je antivirus. Een gebruiksvriendelijk besturingssysteem zorgt er dan weer voor dat jij op een eenvoudige en grafische manier dirigent kan spelen, programma’s kan gebruiken en de computer over de ganse lijn kan bedienen.

Een OS dat wij als gebruikers als goed ervaren, moet langs de ene kant zijn administratieve taken zo goed mogelijk uitvoeren. Het systeem mag zich niet verslikken, en het mag niet te veel van de rekenkracht van je computer opeisen om de rest van de rekenkracht te verdelen over de programma’s die je wil draaien. Langs de andere kant moet het, in het geval van een pc, eenvoudig te gebruiken zijn. Al naargelang het type gebruiker dat je bent, weegt pure kracht misschien meer door dan gebruiksvriendelijkheid of andersom. Daarom bestaan er zoveel verschillende besturingssystemen en gebruikt niet iedereen Windows.

Microsoft zelf wil niet al te veel kwijt over het raderwerk van zijn besturingssysteem, dus praten we met Jasper Nuyens, Managing Director van Linux Belgium. Hij ademt Linux en is op de hoogte van de onderliggende werking er van. Door dat besturingssysteem even te bekijken, krijg je een goed beeld van de manier waarop een OS er in de praktijk in slaagt op je computer te draaien, alsook de manier waarop Linux verschilt van het immer populaire Windows.

De kernel: de essentie

Alles begint bij het opstarten, waar je computer op zoek gaat naar de bootloader. Vind hij niets, dan krijg je de ‘Operating System not found’-melding, maar idealiter vindt je computer wel de nodige bestanden. In Windows zit het hele opstartproces netjes geïntegreerd, in Linux niet. Zo zie je wat er allemaal op de achtergrond gebeurt voor je zelf aan de slag kan gaan.

Eerst wordt de kernel ingeladen. De kernel is het echte hart van het besturingssysteem. Het bestand is essentieel, en zorgt er voor dat de rest van het besturingssysteem maar ook de applicaties die je wil draaien met de hardware kunnen praten. Een programma heeft geen boodschap aan het type hardware dat je draait. Het wil gewoon een bestand openen, of dat nu op een HDD, USB of SSD staat, en dat misschien doormailen ongeacht de fabrikant van je netwerkkaart. Het programma verwacht verder dat de programmacode begrepen wordt door de cpu, of dat nu een exemplaar van Intel of AMD is.

Abstractie

De kernel doet dienst als het centrale aanspreekpunt voor alle software. Hij voorziet een abstractielaag van de onderliggende hardware. Die abstractielaag zorgt er voor dat je programma’s werken op zoveel verschillende computers met zoveel verschillende hardwarecombinaties. De apps praten immers met de kernel, en die ziet er voor hen op iedere computer hetzelfde uit. De kernel vertaalt de instructies, wat ze ook zijn, vervolgens naar taal die de specifieke hardware wel kan begrijpen.

Om dat te doen moet het bestandje natuurlijk weten hoe je computer in elkaar zit. Bij Linux gebeurt dat door een detectie van de hardware. Alle computeronderdelen worden geïdentificeerd, waarna het besturingssysteem er zonder problemen mee aan de slag kan. Bij een Windowssysteem werkt dat iets anders. Je het misschien gemerkt hebben bij een upgrade naar Windows 10: soms werkt er een stuk hardware niet. Dat kan dan gaan om specifieke knopjes op je laptop, maar ook je scherm dat in een verkeerde resolutie staat. Windows heeft drivers nodig voor specifieke hardware. De kernel alleen heeft niet de nodige kennis om juist met alle hardwarecomponenten om te gaan. Ongeacht het type besturingssysteem is de kernel dus het allerbelangrijkste bestand op je systeem.

Divers allegaartje

Zodra dat bestand geladen is en aan de slag kan is het de beurt aan andere processen en services. Een modern besturingssysteem bestaat uit heel veel afzonderlijke zaken die naast elkaar draaien en er voor zorgen dat alles werkt. Ga als Windowgebruiker maar eens naar taakbeheer, en navigeer naar de tab Services. Je zal zien dat er heel wat op de achtergrond werkt, zelfs wanneer je zelf nog geen programma opstartte.

Linux toont ook hier aan hoe een besturingssysteem meer een allegaartje van processen dan één echt programma is. Bij dit OS is het immers perfect mogelijk om de grafische schil niet te laden. In dat geval kijk je als gebruiker naar lijnen code en instructies, naar analogie met MS DOS vroeger. Voor professionele gebruikers is dat interessant. Wie ergens een server wil plaatsen om één of andere taak uit te voeren, heeft geen nood aan een mooi bureaublad.

Vensters

In Windows is de grafische schil wel verweven met het geheel. Je kan je computer aanspreken met code via bijvoorbeeld de command prompt (typ cmd in het zoekvenster bij Start) of PowerShell (typ Powershell in het zoekvenster), maar het is niet echt de bedoeling om het OS te draaien zonder vertrouwde vensters. In oude versies van Windows kon je je systeem nog opstarten zonder grafische schil, maar intussen is dat een erg ingewikkelde procedure geworden. Je moet er voor in het herstelmenu duiken, en in de praktijk heeft het draaien van Windows zonder de bijhorende grafische overlay weinig praktisch nut. Het is desalniettemin interessant om te beseffen dat het hele visuele aspect van Windows maar een klein deel van het besturingssysteem is: het echte werk gebeurt achter de schermen.

Teamwork

In de praktijk is een besturingssysteem een bijzonder ingewikkeld gegeven. Voor Linux zijn er tienduizenden mensen dagelijks bezig met de verdere ontwikkeling, en hoewel Microsoft niet in detail wil gaan over het ontwikkelingsproces van Windows mag het duidelijk zijn dat ook daar vele honderden mensen jaren lang iedere dag zwoegen om het systeem klaar te krijgen. Ze doen dat dezer dagen meer dan ooit met de hulp van feedback van gebruikers: optimalisatie en het toevoegen van nieuwe functies is één ding, die functies op een gebruiksvriendelijke manier naar de voorgrond brengen een ander.

Samengevat

Je besturingssysteem is dus niet zozeer één programma, maar een verzameling van programmacode die zich over het beheer van je hardware en je software ontfermt. De visuele interface is slechts één van die programma’s, terwijl het hart van het hele systeem de kernel is. Die zorgt er voor dat een OS en alle software die daarvoor beschikbaar is, kan draaien op een heleboel computers met een verschillende configuratie. De manier waarop zo’n kernel en de programma’s daarrond werken, groeide voort uit vernieuwingen in de jaren ’60 en de basisconcepten bleven hetzelfde: een abstractie van hardware en geheugen ontneemt programma’s zoals Office maar ook Candy Crush de nood om zelf met de echte componenten van je computer te spreken, en interrupts zorgen er voor dat je systeem meerdere taken door elkaar kan uitvoeren.

In werkelijkheid is er natuurlijk nog veel meer te vertellen, maar met al het bovenstaande heb je alvast een goed algemeen idee van wat er nu eigenlijk gaande is op je computer, of dat nu een laptop met Windows, een Mac of zelfs een smartphone is.