Hvad er kontekstskift i operativsystemet?
I operativsystemet er der tilfælde, hvor du er nødt til at bringe en proces, der er i kørende tilstand, tilbage til en anden tilstand som f.eks. klar tilstand eller vente/blokeringstilstand. Hvis den kørende proces ønsker at udføre en eller anden I/O-operation, skal man fjerne processen fra den kørende tilstand og derefter sætte processen i I/O-køen. Nogle gange bruger processen måske en round-robin-skemalægningsalgoritme, hvor processen efter hvert fast tidskvantum skal vende tilbage til klar tilstand fra den kørende tilstand til den kørende tilstand. Så disse processkift foretages ved hjælp af Context Switching. I denne blog vil vi lære om begrebet Context Switching i operativsystemet, og vi vil også lære om fordelene og ulemperne ved Context Switching. Så lad os komme i gang.
Hvad er Context Switching?
En context switching er en proces, der involverer skift af CPU’en fra en proces eller opgave til en anden. I dette fænomen suspenderer kernen udførelsen af den proces, der er i kørende tilstand, og en anden proces, der er i klar tilstand, udføres af CPU’en.
Det er en af de væsentlige funktioner i et multitasking-operativsystem. Processerne skiftes så hurtigt, at det giver brugeren en illusion om, at alle processer udføres på samme tid.
Men kontekstskifteprocessen involverede en række trin, der skal følges. Man kan ikke direkte skifte en proces fra den kørende tilstand til den færdige tilstand. Du er nødt til at gemme konteksten for den pågældende proces. Hvis du ikke gemmer konteksten for en proces P, så vil processen P efter nogen tid, når den kommer ind i CPU’en til udførelse igen, begynde at udføre fra start. Men i virkeligheden bør den fortsætte fra det punkt, hvor den forlod CPU’en i sin tidligere udførelse. Så processens kontekst skal gemmes, før en anden proces sættes i kørende tilstand.
En kontekst er indholdet af en CPU’s registre og programtælleren på et hvilket som helst tidspunkt. Kontekstskifte kan ske af følgende årsager:
- Når en proces med høj prioritet kommer i klar tilstand. I dette tilfælde bør udførelsen af den igangværende proces stoppes, og den proces med højere prioritet bør få CPU’en til udførelse.
- Når der opstår en afbrydelse, bør processen i den igangværende tilstand stoppes, og CPU’en bør håndtere afbrydelsen, før den foretager sig noget andet.
- Når der er behov for en overgang mellem brugertilstand og kernetilstand, skal du udføre kontekstskiftet.
Strin involveret i kontekstskifte
Processen med kontekstskifte omfatter en række trin. Følgende diagram viser processen med kontekstskifte mellem de to processer P1 og P2.
I ovenstående figur kan man se, at processen P1 oprindeligt er i den kørende tilstand, og processen P2 er i den færdige tilstand. Når der nu sker en afbrydelse, skal processen P1 skiftes fra kørende til klar tilstand efter at have gemt konteksten, og processen P2 skal skiftes fra klar til kørende tilstand. Følgende trin udføres:
- Først skal konteksten for proces P1, dvs. den proces, der er i kørende tilstand, gemmes i processtyringsblokken for proces P1, dvs. PCB1.
- Nu skal PCB1 flyttes til den relevante kø i.dvs. klar kø, I/O-kø, ventekø osv.
- Fra klar tilstand skal du vælge den nye proces, der skal udføres, dvs. proces P2.
- Nu skal du opdatere processtyringsblokken for proces P2, dvs. PCB2, ved at indstille procestilstanden til kørende. Hvis processen P2 tidligere er blevet udført af CPU’en, kan du få positionen for den sidst udførte instruktion, så du kan genoptage udførelsen af P2.
- Sådan er det også, hvis du ønsker at udføre processen P1 igen, skal du følge de samme trin som nævnt ovenfor (fra trin 1 til 4).
For at kontekstskifte kan finde sted, kræves der generelt mindst to processer, og i tilfældet med round-robin-algoritmen kan man udføre kontekstskifte ved hjælp af kun én proces.
Den tid, der er involveret i kontekstskiftet af den ene proces af den anden, kaldes kontekstskiftetiden.
Fordel ved kontekstskifte
Kontekstskifte bruges til at opnå multitasking dvs. multiprogrammering med tidsfordeling(læs mere om multitasking herfra). Multitasking giver brugerne en illusion af, at der udføres flere processer på samme tid. Men i virkeligheden er det kun én opgave, der udføres på et bestemt tidspunkt af en processor. Her er kontekstskiftet så hurtigt, at brugeren føler, at CPU’en udfører mere end én opgave på samme tid.
Ulemperne ved kontekstskift
Ulemperne ved kontekstskift er, at det kræver en vis tid at skifte kontekst, dvs. kontekstskiftetiden. Der kræves tid til at gemme konteksten for en proces, der er i kørende tilstand, og derefter hente konteksten for en anden proces, der er ved at komme i kørende tilstand. I den tid udfører CPU’en ikke noget nyttigt arbejde set fra brugerens synspunkt. Så kontekstskifte er rent overhead i denne tilstand.
Det var det hele for denne blog. Håber du har nydt denne blog.