För att växla mellan olika trådar på kärnnivå som hör till samma process, utför Linux-kärnan en processväxling, även känd som en kontextväxling. Här är en allmän översikt över de inblandade stegen:
1. Spara den aktuella trådens sammanhang:
- Kärnan sparar först sammanhanget för den aktuella tråden. Detta inkluderar att spara trådens register, minneshanteringsinformation och all annan relevant tillståndsinformation.
2. Välj nästa tråd:
- Baserat på schemaläggningsalgoritmen väljer kärnan nästa tråd som ska köras. Detta beslut tar hänsyn till faktorer som processprioritet och CPU-belastningsbalansering.
3. Ladda in den nya trådens sammanhang:
- Kärnan laddar kontexten för den valda tråden. Detta innebär att de sparade registren, minneshanteringsinformation och annan tillståndsinformation återställs.
4. Uppdatera hårdvarukontexten:
- Kärnan uppdaterar hårdvarans kontext så att den matchar den nya tråden. Detta inkluderar att uppdatera programräknaren (PC) så att den pekar på början av trådens kod och att se till att lämpliga minnessegment laddas in i CPU:n.
5. Återuppta exekvering:
- Kärnan återupptar exekveringen av den nya tråden, med början från den punkt där den tidigare pausades eller avbröts.
Det är viktigt att notera att processväxlingar också kan inträffa när en tråd frivilligt överlåter processorn till en annan tråd eller när ett systemanrop eller annan händelse utlöser en övergång på kärnnivå.
Kärnan upprätthåller olika datastrukturer, såsom processtabellen och schemaläggaren, för att effektivt hantera och schemalägga trådar på kärnnivå och säkerställa att de körs på ett rättvist och effektivt sätt.