Je streamt muziek, downloadt een bestand en codeert op de achtergrond. Het voelt gelijktijdig. Dat is het niet.
Je CPU jongleert deze taken met chirurgische precisie en schakelt duizenden keren per seconde tussen deze taken. Deze goocheltruc heet contextwisseling. Zonder dit zou uw computer vastlopen totdat één enkele taak is voltooid. Je wacht tot een pagina is geladen voordat je zelfs maar je e-mail kunt checken.
Contextwisseling is het mechanisme waarmee een besturingssysteem meerdere processen kan beheren zonder dat er extra hardware nodig is. Het houdt de illusie van parallellisme levend door de tijd op te delen in microscopisch kleine intervallen.
De werking van een contextschakelaar
In de kern gaat een contextwisseling over het opslaan en herstellen van de staat.
Wanneer de CPU overschakelt van taak A naar taak B, moet hij onthouden waar taak A was gebleven. Anders heeft het, wanneer het terugkeert, geen idee welke instructie het vervolgens moet uitvoeren. Deze opgeslagen toestand is de ‘context’.
Twee hoofdregisters bevatten de kritische gegevens:
- De programmateller: Deze verwijst naar het exacte geheugenadres van de volgende instructie die moet worden uitgevoerd. Bewaar dit, en je weet waar je verder moet gaan.
- De registers: Deze bevatten tijdelijke gegevens en huidige opdrachten. Ze leggen de momentopname vast van de mentale toestand van de CPU op dat precieze moment.
Bij oudere pc’s was dit vaak een operatie op hardwareniveau. De fysieke circuits verzorgden de swap. Tegenwoordig gebruiken de meeste moderne CPU’s softwaregestuurde contextschakelaars. Dankzij deze flexibiliteit kan één enkele processor honderden van deze schakelaars per seconde uitvoeren. Het resultaat? Je ziet meerdere apps parallel draaien, ook al wisselt de CPU technisch gezien met razend tempo tussen deze apps.
Waarom contextwisseling belangrijk is
Waarom heeft uw besturingssysteem deze complexiteit nodig?
Omdat de hulpbronnen eindig zijn. Je hebt niet voor elk achtergrondproces een speciale processor. In plaats daarvan heb je één (of enkele) cores die de werklast delen. Contextwisseling maakt multitasking mogelijk op beperkte hardware.
Het gaat niet alleen om het uitvoeren van meerdere apps. Het is essentieel voor de stabiliteit en het reactievermogen van het systeem.
Overweeg deze scenario’s:
Multitasking-eisen
Wanneer u in uw browser van tabblad wisselt, pauzeert de CPU het huidige proces, slaat de status ervan op en laadt de status van het nieuwe proces. Zonder dit zou het schakelen tussen vensters vereisen dat de huidige app wordt afgesloten.
Kernel/Gebruikersmodusschakelaars
Uw apps worden voor de veiligheid in de “gebruikersmodus” uitgevoerd. Taken op systeemniveau worden uitgevoerd in de ‘kernelmodus’. Wanneer een app iets van het besturingssysteem vraagt (zoals toegang tot een bestand), moet de CPU van modus wisselen. Deze overgang omvat vaak een contextwisseling om ervoor te zorgen dat de kernel de juiste gegevens heeft en dat de app daarna correct kan worden hervat.
Onderbrekingen afhandelen
Schijflezingen gebeuren niet onmiddellijk. Wanneer uw CPU gegevens van een harde schijf opvraagt, blijft deze niet inactief. Tijdens het wachten schakelt hij over naar een andere taak. Zodra de gegevens arriveren, geeft een interrupt de CPU het signaal om terug te schakelen, de vorige status te herstellen en de binnenkomende bytes te verwerken.
De verborgen kosten
Contextwisseling is niet gratis.
Elke keer dat de CPU van context wisselt, verspilt hij cycli bij het opslaan en laden van gegevens. Het leegt ook de CPU-cache, wat de prestaties kan vertragen als dit te vaak wordt gedaan. Als uw systeem te vaak van context verandert, zult u vertraging opmerken. De CPU is bezig met het beheren van taken in plaats van ze uit te voeren.
Daarom is een efficiënte planning belangrijk. Hoe beter het besturingssysteem deze schakelaars beheert, hoe soepeler uw ervaring aanvoelt.
Dus de volgende keer dat uw computer alles in één keer lijkt af te handelen, onthoud dan: het is geen magie. Het is een snelle reeks van swaps, saves en herstelingen. De CPU is nooit echt aan het multitasken. Het is gewoon heel goed in schakelen.
En het gaat nog steeds.































