Multiprogrammering is een techniek bij het ontwerpen van besturingssystemen waarbij meerdere programma's tegelijkertijd op een computer worden uitgevoerd. Dit in tegenstelling tot enkelvoudig programmeren, waarbij slechts één programma tegelijk wordt uitgevoerd.
Multiprogrammering wordt mogelijk gemaakt door het gebruik van een geheugenbeheereenheid (MMU) , waarmee het besturingssysteem het beschikbare geheugen over meerdere programma's kan verdelen. Elk programma krijgt zijn eigen geheugengedeelte en de MMU zorgt ervoor dat geen enkel programma toegang heeft tot het geheugen van een ander programma.
Om multiprogrammering effectief te laten werken, moet het besturingssysteem ook een mechanisme bieden voor planning de programma's zodat ze op een eerlijke en efficiënte manier worden uitgevoerd. De planner gebruikt doorgaans een round-robin algoritme, dat elk programma een tijdsdeel van gelijke lengte geeft om uit te voeren. Wanneer het tijdsegment van een programma verstreken is, wordt er beslag op gelegd en krijgt het volgende programma in de wachtrij de kans om te worden uitgevoerd.
Multiprogrammering heeft verschillende voordelen ten opzichte van enkelvoudige programmering. Ten eerste verbetert het de algehele doorvoer van het systeem, omdat meerdere programma's tegelijkertijd kunnen worden uitgevoerd. Ten tweede vermindert het de hoeveelheid tijd die een gebruiker moet wachten tot een programma wordt uitgevoerd, omdat het besturingssysteem zeer snel tussen programma's kan schakelen. Ten derde maakt het het mogelijk om meerdere programma's tegelijkertijd uit te voeren, zelfs als sommige programma's meer I/O-intensief zijn dan andere.
Het grootste nadeel van multiprogrammering is dat het de hoeveelheid overhead die met het besturingssysteem gepaard gaat, kan vergroten, aangezien het besturingssysteem het geheugen en de planning van meerdere programma's moet beheren. Deze overhead is echter doorgaans klein en de voordelen van multiprogrammering wegen ruimschoots op tegen de kosten.
Hier is een vereenvoudigd voorbeeld van hoe multiprogrammering werkt:
1. Het besturingssysteem wijst een deel van het geheugen toe aan elk van de programma's die moeten worden uitgevoerd.
2. Het besturingssysteem plaatst het eerste programma in de wachtrij met kant-en-klare programma's.
3. De CPU voert het eerste programma uit gedurende een tijdsegment van een gespecificeerde duur.
4. Wanneer het tijdssegment voorbij is, neemt het besturingssysteem voorrang op het eerste programma en plaatst het aan het einde van de wachtrij met gereedstaande programma's.
5. Het besturingssysteem plaatst vervolgens het volgende programma in de wachtrij met kant-en-klare programma's vooraan in de wachtrij en geeft het een tijdsdeel van een bepaalde duur.
6. Het proces herhaalt zich totdat alle programma's zijn uitgevoerd. |