For at skifte mellem forskellige tråde på kerneniveau, der tilhører den samme proces, udfører Linux-kernen et processkifte, også kendt som en kontekstswitch. Her er en generel oversigt over de involverede trin:
1. Gem den aktuelle tråds kontekst:
- Kernen gemmer først konteksten for den aktuelle tråd. Dette inkluderer lagring af trådens registre, hukommelseshåndteringsoplysninger og enhver anden relevant tilstandsinformation.
2. Vælg den næste tråd:
- Baseret på planlægningsalgoritmen vælger kernen den næste tråd, der skal køre. Denne beslutning tager hensyn til faktorer såsom procesprioritet og CPU-belastningsbalancering.
3. Indlæs den nye tråds kontekst:
- Kernen indlæser konteksten for den valgte tråd. Dette involverer gendannelse af de gemte registre, hukommelsesstyringsinformation og andre tilstandsoplysninger.
4. Opdater hardwarekonteksten:
- Kernen opdaterer hardwarens kontekst, så den passer til den nye tråd. Dette inkluderer opdatering af programtælleren (PC) til at pege på starten af trådens kode og sikring af, at de relevante hukommelsessegmenter indlæses i CPU'en.
5. Genoptag eksekvering:
- Kernen genoptager eksekveringen af den nye tråd, startende fra det punkt, hvor den tidligere blev sat på pause eller afbrudt.
Det er vigtigt at bemærke, at processkift også kan forekomme, når en tråd frivilligt overlader CPU'en til en anden tråd, eller når et systemkald eller anden hændelse udløser en overgang på kerneniveau.
Kernen vedligeholder forskellige datastrukturer, såsom procestabellen og planlæggeren, for effektivt at administrere og planlægge tråde på kerneniveau og sikre, at de kører på en fair og effektiv måde.