Vad är kontextväxling i operativsystemet?
I operativsystemet finns det fall då du måste återföra en process som är igång till ett annat tillstånd, t.ex. redo eller väntande/blockerad. Om den pågående processen vill utföra någon I/O-operation måste man ta bort processen från det pågående tillståndet och sedan placera processen i I/O-kön. Ibland kan processen använda sig av en algoritm för schemaläggning med rundrobinplanering där processen efter varje fast tidskvantum måste återgå till det färdiga tillståndet från det pågående tillståndet. Dessa processbyten sker alltså med hjälp av Context Switching. I den här bloggen kommer vi att lära oss om konceptet Context Switching i operativsystemet och vi kommer också att lära oss om fördelarna och nackdelarna med Context Switching. Så låt oss börja.
Vad är Context Switching?
En Context Switching är en process som innebär att CPU:n växlar från en process eller uppgift till en annan. I detta fenomen avbryts utförandet av den process som befinner sig i det pågående tillståndet av kärnan och en annan process som befinner sig i det färdiga tillståndet utförs av CPU:n.
Det är en av de viktigaste funktionerna i multitasking-operativsystemet. Processerna växlas så snabbt att det ger användaren en illusion av att alla processer utförs samtidigt.
Men kontextväxlingsprocessen innebar ett antal steg som måste följas. Man kan inte direkt växla en process från det pågående tillståndet till det färdiga tillståndet. Du måste spara kontexten för den processen. Om du inte sparar kontexten för en process P så kommer processen P efter en viss tid, när den kommer in i CPU:n för att exekveras igen, att börja exekveras från början. Men i verkligheten bör den fortsätta från den punkt där den lämnade processorn i sin tidigare körning. Processens kontext bör alltså sparas innan någon annan process sätts i körtillstånd.
En kontext är innehållet i en CPU:s register och programräknare vid varje tidpunkt. Kontextbyte kan ske på grund av följande orsaker:
- När en process med hög prioritet kommer in i det färdiga tillståndet. I detta fall bör utförandet av den pågående processen stoppas och den högre prioriterade processen bör få CPU:n för utförande.
- När ett avbrott inträffar bör processen i det pågående tillståndet stoppas och CPU:n bör hantera avbrottet innan den gör något annat.
- När det krävs en övergång mellan användarläge och kärnläge måste man utföra kontextväxling.
Steg som ingår i kontextväxling
Processen för kontextväxling omfattar ett antal steg. Följande diagram beskriver processen för kontextväxling mellan de två processerna P1 och P2.
I figuren ovan kan du se att processen P1 inledningsvis är i körtillstånd och processen P2 är i beredskapstillstånd. När ett avbrott inträffar måste man nu växla processen P1 från körning till beredskap efter att ha sparat kontexten och processen P2 från beredskap till körning. Följande steg kommer att utföras:
- För det första kommer kontexten för process P1, dvs. den process som befinner sig i det pågående tillståndet, att sparas i processkontrollblocket för process P1, dvs. PCB1.
- Nu måste PCB1 flyttas till den relevanta kön dvs.
- Från det färdiga tillståndet väljer du den nya process som ska exekveras, dvs. process P2.
- Nu uppdaterar du processkontrollblocket för process P2, dvs. PCB2, genom att ställa in processtillståndet till körning. Om processen P2 tidigare har utförts av processorn kan du få fram positionen för den senast utförda instruktionen så att du kan återuppta utförandet av P2.
- Också om du vill utföra processen P1 igen måste du följa samma steg som nämns ovan (från steg 1 till 4).
För att kontextväxling ska kunna ske krävs i allmänhet minst två processer, och i fallet med round-robin-algoritmen kan man utföra kontextväxling med hjälp av endast en process.
Den tid som krävs för att en process ska byta sammanhang med en annan process kallas för kontextbytestid.
Fördelen med kontextbyte
Kontextbyte används för att åstadkomma multitasking, dvs. multiprogrammering med tidsfördelning (läs mer om multitasking härifrån). Multitasking ger användarna en illusion av att fler än en process körs samtidigt. Men i verkligheten är det bara en uppgift som utförs vid en viss tidpunkt av en processor. Här är kontextväxlingen så snabb att användaren upplever att processorn utför mer än en uppgift samtidigt.
Nackdelen med kontextväxling
Nackdelen med kontextväxling är att det krävs en viss tid för kontextväxling, dvs. kontextväxlingstiden. Det krävs tid för att spara kontexten för en process som är igång och sedan hämta kontexten för en annan process som är på väg att bli igång. Under denna tid utför processorn inget användbart arbete ur användarens synvinkel. Så kontextväxling är ren overhead i detta tillstånd.
Det var allt för den här bloggen. Hoppas att du gillade den här bloggen.