De CPU schakelt tussen processen met behulp van een procesplanner, die deel uitmaakt van het besturingssysteem. De omschakeling omvat het opslaan van de status van het huidige proces en het laden van de status van het volgende proces. Dit wordt vaak een contextwisseling genoemd .
Hier is een vereenvoudigde illustratie:
```
+----------------+ +----------------+ +----------------+
| Proces A | <--> | Procesplanner| <--> | Proces B |
+----------------+ +----------------+ +----------------+
^ |
| V
+--------------------------------------+
Contextschakelaar
```
Uitleg:
1. Proces A is actief: De CPU voert instructies uit voor proces A. De CPU-registers, programmateller (PC – die de volgende instructie aangeeft) en geheugenbeheerinformatie (zoals paginatabellen) weerspiegelen allemaal de status van proces A.
2. Contextwisseling gestart: Een interrupt (bijvoorbeeld een timer-interrupt, I/O-voltooiing) of een planningsbeslissing zorgt ervoor dat de planner van het besturingssysteem ingrijpt.
3. Proces A's status opgeslagen: De planner slaat de volledige status van proces A (CPU-registers, pc, geheugenbeheerinfo) op in een Process Control Block (PCB), een datastructuur in het geheugen. Beschouw de printplaat als een momentopname van het proces.
4. Proces B geselecteerd: De planner selecteert het volgende proces dat moet worden uitgevoerd, bijvoorbeeld proces B, op basis van verschillende planningsalgoritmen (bijvoorbeeld round-robin, op prioriteit gebaseerd).
5. Status van proces B geladen: De planner laadt de opgeslagen status van proces B (vanaf de PCB) in de CPU-registers, pc en geheugenbeheereenheden.
6. Proces B wordt uitgevoerd: De CPU voert nu instructies uit voor proces B.
Dit proces herhaalt zich voortdurend, waardoor meerdere processen de tijd van de CPU kunnen delen, waardoor de illusie ontstaat van parallelle uitvoering (gelijktijdigheid). Hoe sneller de contextwisseling, hoe soepeler de multitasking-ervaring. Contextwisseling heeft echter enige overhead. |