Vad är kontextväxling i operativsystemet?

Kontextväxling innebär att kontexten eller tillståndet för en process lagras så att den kan laddas om vid behov och utförandet kan återupptas från samma punkt som tidigare. Detta är en funktion i ett multitasking-operativsystem och gör att en enda CPU kan delas av flera processer.

Ett diagram som visar kontextväxling är följande –

I diagrammet ovan körs till en början Process 1. Process 1 kopplas bort och process 2 kopplas in på grund av ett avbrott eller ett systemanrop. Kontextväxling innebär att man sparar tillståndet för process 1 i PCB1 och laddar in tillståndet för process 2 från PCB2. Efter en tid sker återigen en kontextväxling och process 2 kopplas bort och process 1 kopplas in igen. Detta innebär att man sparar tillståndet för process 2 i PCB2 och laddar in tillståndet för process 1 från PCB1.

Kontextväxlingsutlösare

Det finns tre huvudsakliga utlösare för kontextväxling. Dessa anges nedan –

  • Multitasking: I en multitasking-miljö byts en process ut från processorn så att en annan process kan köras. Den gamla processens tillstånd sparas och den nya processens tillstånd laddas. I ett preemptivt system kan processer bytas ut av schemaläggaren.

  • Interrupthantering: Hårdvaran växlar en del av kontexten när ett avbrott inträffar. Detta sker automatiskt. Endast en del av kontexten ändras för att minimera den tid som krävs för att hantera avbrottet.

  • Växling mellan användar- och kärnläge: En kontextväxling kan ske när en övergång mellan användarläge och kärnläge krävs i operativsystemet.

Steg för kontextväxling

Stegna för kontextväxling är följande –

  • Spara kontexten för den process som för närvarande körs på processorn. Uppdatera processkontrollblocket och andra viktiga fält.
  • Förflytta processkontrollblocket för ovanstående process till relevant kö, t.ex. redo-kö, I/O-kö etc.
  • Välj en ny process för utförande.
  • Uppdatera processkontrollblocket för den valda processen. Detta inkluderar uppdatering av processtillståndet till körning.
  • Uppdatera minneshanteringens datastrukturer vid behov.
  • Återställ kontexten för den process som tidigare kördes när den laddas på nytt i processorn. Detta görs genom att ladda in de tidigare värdena för processkontrollblocket och registren.

Kostnad för kontextbyte

Kontextbyte leder till en overheadkostnad på grund av TLB-spolningar, delning av cacheminnet mellan flera uppgifter, körning av uppgiftsschemaläggaren osv. Kontextväxling mellan två trådar i samma process är snabbare än mellan två olika processer eftersom trådarna har samma virtuella minneskartor. På grund av detta behövs inte TLB-spolning.

raja

Publicerad den 28-Sep-2018 15:31:15

Advertisements

Leave a Reply