Processen en OS'en

Na het bespreken van vooral hardware zijn we aangekomen bij waar het eigenlijk allemaal om gaat: wat doen we met al die computer-hardware ? Juist: die hardware kan ons helpen onze ideeën te realiseren met behulp van software. Maar wat komt er allemaal bij kijken om een programma in een computer te laten werken ? Daarover gaat deze pagina.

Operating system

Als een computer altijd maar één programma uitvoert en telkens hetzelfde en daarbij geen gebruik maakt van allerlei apparaten zoals een harddisk of een audio-interface, dan zou je misschien zonder besturingssysteem kunnen. In veel gevallen zijn echter diverse programma's tegelijk binnen dezelfde computer actief en die gebruiken allerlei randapparatuur. Het besturingssysteem leidt dat alles in goede banen.

Een besturingssysteem (OS of Operating System) zorgt dat alle programma's die actief moeten zijn hun taken op tijd kunnen uitvoeren en daarbij de hulpmiddelen die ze nodig hebben kunnen gebruiken. Je kunt het OS zien als de schakel tussen de gebruikersprogramma's en de onderliggende hardware. Op die manier hoeven wij als gebruikers niet precies te weten hoe je op een bepaald type printer een tekening kunt uitprinten, we hoeven niet zelf te zorgen dat ons programma uitgevoerd wordt terwijl op de achtergrond een MP3-tje wordt afgespeeld en als we een mailtje willen versturen hoeven we dit niet byte voor byte aan de netwerk-interface aan te bieden.

Enkele voorbeelden van besturingssystemen:

Device drivers

Het Operating System maakt gebruik van diverse 'device drivers'. Dit zijn stukjes software (programma's) die speciaal gemaakt zijn om met één type hardware te werken. Zo heb je een device driver voor een Epson Stylus 400 printer, een andere device driver voor een Epson Stylus Pro 6100, weer een andere voor een HP Laserjet 5 en ga zo maar door.

De bediening van een device driver ziet er aan de kant van het Operating System altijd ongeveer hetzelfde uit, maar is aan de kant van de hardware heel specifiek geschikt voor die hardware. Op die manier maken ze het mogelijk om altijd op een ongeveer gelijke manier met verschillende hardware te werken. In UNIX gaat het zelfs zo ver dat vele soorten hardware zich allemaal gedragen als een file. Je kunt dan een file naar je harddisk kopieren, of naar een printer of naar een audio-interface. Het resultaat kan verschillend zijn: in het ene geval wordt de file opgeslagen, in een ander geval wordt deze afgedrukt of hoorbaar gemaakt als muziek.

Processen

Een proces is een programma dat uitgevoerd wordt. Een programma op zichzelf doet weinig. Je kunt het zien als een recept, een beschrijving van een aantal stappen die uitgevoerd moeten worden om iets te bereiken, maar om uiteindelijk die lekkere groente-curry op tafel te kunnen zetten moet je de stappen van het recept ook echt uitvoeren. Dat uitvoeren kun je het proces noemen.

In de computer werkt dat net zo. Er zijn een heleboel programma's opgeslagen op je harddisk, maar als je ze niet uitvoert zijn het gewoon files. Pas als een computerprogramma uitgevoerd wordt is het een proces.

In het algemeen zal een computer meerdere processen tegelijkertijd uitvoeren. Tenminste.... dat lijkt zo. Je kunt een mailtje typen terwijl op de achtergrond een muziekje afgespeeld wordt, je krijgt een berichtje dat iemand op MSN online komt en ondertussen wordt ook het verslag dat je moest inleveren uitgeprint. Hoe kan dat allemaal tegelijk gebeuren terwijl je toch maar één processor hebt ?

Elk proces heeft zijn eigen geheugenruimte. Dat wil zeggen dat gegevens die bij een proces horen (programma, data, stack) alleen door dat proces benaderd kunnen worden en niet bereikbaar zijn voor andere processen. Het betekent ook dat, in principe, een proces andere processen niet dwars kan zitten. Het zou zelfs volledig vast kunnen lopen terwijl de andere processen vrolijk doordraaien.

Multitasking

Ook al heb je maar één processor, toch lijkt het alsof verschillende programma's tegelijk actief zijn. Het Operating System doet dat door de programma's allemaal om de beurt een klein stukje uit te voeren. Als een programma een bepaalde tijd aan de beurt geweest is wordt het tijdelijk weer in slaap gebracht en wordt een van de slapende programma's wakker gemaakt om even wat te doen.

Een voorbeeld: een programma dat om een file van een harddisk vraagt heeft een tijdje niks te doen, tot de harddisk de file gevonden heeft en bytes kan aanleveren. In diezelfde tijd kan een ander programma de toets die de gebruiker net heeft ingedrukt in een mailtje en op het scherm zetten, waarna het programma dat de secondenwijzer op je beeldscherm een tikje verder zet weer aan de beurt is.

Omdat het overschakelen tussen programma's heel snel gaat lijkt het alsof ze tegelijkertijd actief zijn.

Multithreading

Multithreading is iets anders dan multitasking. Dit heeft betrekking op één programma dat bestaat uit meerdere processen. Een audio-server bijvoorbeeld, die audio van verschillende bronnen wil mixen. Een web-server die door verschillende browsers tegelijk benaderd wordt. Een sequencer die tegelijk audio en MIDI afspeelt en de grafische weergave ververst.

Swap

Het werkgeheugen (RAM) is meestal niet groot genoeg om alle actieve programma's met al hun data te bevatten. Dat hoeft ook helemaal niet, want een programma heeft zelden alle data tegelijk nodig. Een groot deel ervan kan op de harddisk blijven staan en pas in de RAM geladen worden als het nodig is.

Soms zijn er zoveel programma's actief dat ook de programmacode zelf niet tegelijk in het werkgeheugen past.

In beide gevallen worden delen van programma's en hun data tijdelijk op de harddisk gezet als ze niet in het werkgeheugen hoeven te staan. Dat noemen we 'swappen'. Op die manier creeër je een virtueel werkgeheugen dat veel groter is dan de echte hoeveelheid RAM die als hardware aanwezig is.

Users, Superuser en permissies

Bij een popconcert gelden allerlei privileges voor de mensen die aanwezig zijn: de sterren van de avond mogen in de kleedkamer en op het podium komen, de manager mag overal komen, de groupies alleen in de kleedkamer en het publiek alleen in de zaal. Zoiets kun je regelen met polsbandjes in verschillende kleuren.

Binnen een Operating System is ook sprake van dergelijke privileges. Er zijn processen actief van verschillende gebruikers en afhankelijk van de privileges van de gebruikers mogen die processen bepaalde dingen doen en andere dingen niet.

Als gebruiker wil je bij je eigen files kunnen en in het algemeen wil je niet dat andere gebruikers jouw files kunnen weggooien of veranderen. Daarvoor heb je privileges die bepalen dat jij alleen bij jouw files kunt en niet bij die van een ander.

Het Operating System zelf heeft echter andere privileges nodig dan de gebruikers, anders zou het bijvoorbeeld niet mogelijk zijn om programma's van verschillende gebruikers uit te voeren. Om het systeem te onderhouden moet een 'systeembeheerder' in staat zijn om allerlei dingen te doen die gewone gebruikers niet mogen. Zo'n systeembeheerder wordt wel 'Superuser' genoemd, of 'Root' of 'Administrator'.

Door bij files en devices aan te geven welke (groepen van) gebruikers ermee mogen werken kun je precies bepalen wie wat mag doen binnen het systeem. Je zegt dan bijvoorbeeld dat alleen processen met rode polsbandjes alleen bij hun eigen files kunnen, processen met groene en gele polsbandjes met de printer mogen werken en processen met witte polsbandjes alles mogen.