Hvad er kontekstskifte i operativsystemer?
Kontekstskifte indebærer lagring af konteksten eller tilstanden for en proces, så den kan genindlæses, når det er nødvendigt, og udførelsen kan genoptages fra det samme punkt som tidligere. Dette er en funktion i et multitasking-operativsystem og giver mulighed for, at en enkelt CPU kan deles af flere processer.
Et diagram, der demonstrerer kontekstskifte, er som følger –
I ovenstående diagram kører proces 1 i første omgang. Proces 1 skiftes ud, og proces 2 skiftes ind på grund af en afbrydelse eller et systemopkald. Kontekstskiftet indebærer, at process 1’s tilstand gemmes i PCB1 og process 2’s tilstand indlæses fra PCB2. Efter et stykke tid sker der igen et kontekstskifte, og proces 2 slukkes, mens proces 1 går ind igen. Dette indebærer, at tilstanden for proces 2 gemmes i PCB2 og tilstanden for proces 1 indlæses fra PCB1.
Context Switching Triggers
Der er tre hovedudløsere for kontekstskifte. Disse er angivet som følger –
-
Multitasking: I et multitasking-miljø skiftes en proces ud af CPU’en, så en anden proces kan køres. Tilstanden i den gamle proces gemmes, og tilstanden i den nye proces indlæses. I et præemptivt system kan processer skiftes ud af scheduleren.
-
Interrupthåndtering: Hardwaren skifter en del af konteksten, når der opstår en afbrydelse. Dette sker automatisk. Kun en del af konteksten ændres for at minimere den tid, der er nødvendig for at håndtere afbrydelsen.
-
Skift mellem bruger- og kernetilstand: Et kontekstskifte kan finde sted, når der er behov for en overgang mellem brugertilstand og kernetilstand i operativsystemet.
Trin til kontekstskifte
Trinene i forbindelse med kontekstskifte er som følger –
- Spar konteksten for den proces, der i øjeblikket kører på CPU’en. Opdater proceskontrolblokken og andre vigtige felter.
- Flyt proceskontrolblokken for ovennævnte proces til den relevante kø som f.eks. klar-køen, I/O-køen osv.
- Vælg en ny proces til udførelse.
- Opdatér proceskontrolblokken for den valgte proces. Dette omfatter opdatering af procestilstanden til kørende.
- Opdatering af hukommelsesstyringsdatastrukturerne efter behov.
- Gendannelse af konteksten for den proces, der tidligere kørte, når den indlæses igen på processoren. Dette gøres ved at indlæse de tidligere værdier for processtyringsblokken og registrene.
Kontekstskifteomkostninger
Kontekstskifte medfører en overhead-omkostning på grund af TLB-flushes, deling af cachen mellem flere opgaver, kørsel af opgaveplanlæggeren osv. Kontekstskifte mellem to tråde i samme proces er hurtigere end mellem to forskellige processer, da trådene har de samme virtuelle hukommelseskort. På grund af dette er TLB-flushing ikke nødvendigt.
Leave a Reply