Verder Terug Inhoud

8. Hoe doet mijn computer verscheidene dingen tegelijkertijd?

Dat doet 't in werkelijkheid niet. Computers kunnen slechts één taak (of proces) tegelijkertijd verrichten. Maar een computer kan zeer snel van taak wisselen, en langzame menselijke wezens voor de gek houden door ze te laten denken dat het verscheidene dingen tegelijkertijd doet. Dit wordt timesharing genoemd.

Een van de taken van de kernel is het beheren van timesharing. Het heeft een onderdeel dat de scheduler wordt genoemd, die alle informatie intern bijhoudt over alle andere (niet-kernel) processen in je dierentuin. Iedere 1/60 van een seconde, gaat er in de kernel een tijdklok af die een klokinterrupt genereert. De scheduler stopt het proces welke erop dat moment ook draait, onderbreekt het op z'n plaats, en geeft de controle over aan een ander proces.

1/60 van een seconde klinkt misschien niet als veel tijd. Maar voor de tegenwoordige microprocessors is het voldoende om tienduizenden machine-instructies uit te voeren, die flink wat werk kunnen verrichten. Dus zelfs als je veel processen hebt lopen, kan ieder ervan heel wat in zijn tijdsfragment volbrengen.

In praktijk kan het zijn dat een programma niet zijn volledige tijdsfragment krijgt. Als een interrupt vanaf een I/O device binnenkomt, stopt de kernel in feite de huidige taak, draait de interrupt handler, en keert daarna terug naar de huidige taak. Een storm hoge-prioriteiten interrupts kan de normale verwerking verdringen; dit wangedrag wordt thrashing genoemd en is gelukkig onder moderne Unixes zeer moeilijk te forceren.

In feite is de snelheid van programma's slechts zeer zelden beperkt door de hoeveelheid machinetijd die ze kunnen krijgen (er zijn een paar uitzonderingen op deze regel, zoals het genereren van geluid of 3-D graphics). Veel vaker, worden vertragingen veroorzaakt als het programma op gegevens van een diskdrive of netwerkverbinding moet wachten.

Een besturingssysteem dat volgens vaste regel veel gelijktijdige processen kan ondersteunen, wordt "multitasking" genoemd. De Unix familie besturingssystemen is vanaf het begin af aan ontworpen voor multitasking en is daar erg goed in -- veel effectiever dan Windows of de Mac OS, waarbij multitasking als een latere overweging is ingesloten en ze dit nogal armzalig doen. Efficiënte, betrouwbare multitasking is een belangrijk deel van wat Linux superieur maakt voor netwerken, communicaties, en Web service.


Verder Terug Inhoud