Contextwisseling tussen threads op gebruikersniveau die door de kernel worden beheerd, omvat de volgende belangrijke acties:
1. Huidige discussie opschorten :De kernel start het contextwisselingsproces door de momenteel uitgevoerde thread op te schorten. Dit houdt in dat de context van de thread, inclusief de CPU-registers en programmateller, wordt opgeslagen in het Thread Control Block (TCB).
2. CPU-status opslaan :De kernel slaat vervolgens de status van de CPU op, zoals de inhoud van de algemene registers, de stapelwijzer en andere processorspecifieke registers. Dit zorgt ervoor dat de uitvoering van de thread kan worden hervat vanaf het punt waar deze was gebleven wanneer deze opnieuw wordt gepland.
3. De gegevensstructuren van de planner bijwerken :De kernel werkt zijn interne datastructuren met betrekking tot de planner bij. Dit omvat het bijwerken van de status van de thread, zoals het markeren als 'gereed' of 'geblokkeerd', en het aanpassen van de planningswachtrijen om de nieuwe threadstatus weer te geven.
4. Selecteer Volgende onderwerp :De kernel selecteert de volgende thread die moet worden uitgevoerd op basis van het planningsalgoritme dat het gebruikt (bijvoorbeeld round-robin, op prioriteit gebaseerd, enz.). De planner houdt bij het nemen van de beslissing rekening met verschillende factoren, zoals threadprioriteit, eerlijkheid en resourcevereisten.
5. CPU-status herstellen :De kernel herstelt de CPU-status voor de nieuw geselecteerde thread, waarbij de opgeslagen registers en programmateller in de juiste CPU-registers worden geladen.
6. Uitvoering hervatten :Ten slotte geeft de kernel controle over de nieuw geselecteerde thread, waardoor deze de uitvoering kan hervatten waar deze was gebleven voordat de contextwisseling plaatsvond.
Gedurende dit hele proces beheert de kernel de systeembronnen en zorgt ervoor dat threads efficiënt en eerlijk worden gepland, waardoor meerdere threads gelijktijdig kunnen worden uitgevoerd en de verwerkingstijd van de CPU effectief kan worden gedeeld. |