Ce este comutarea contextului în sistemul de operare?

Schimbarea de context implică stocarea contextului sau a stării unui proces, astfel încât acesta să poată fi reîncărcat atunci când este necesar, iar execuția să poată fi reluată din același punct ca și mai devreme. Aceasta este o caracteristică a unui sistem de operare multitasking și permite ca o singură unitate centrală de procesare să fie partajată de mai multe procese.

O diagramă care demonstrează comutarea contextului este următoarea –

În diagrama de mai sus, inițial procesul 1 este în execuție. Procesul 1 este deconectat și procesul 2 este conectat din cauza unei întreruperi sau a unui apel de sistem. Comutarea contextului implică salvarea stării Procesului 1 în PCB1 și încărcarea stării Procesului 2 din PCB2. După un anumit timp, are loc din nou o comutare de context și procesul 2 este oprit, iar procesul 1 este pornit din nou. Acest lucru implică salvarea stării procesului 2 în PCB2 și încărcarea stării procesului 1 din PCB1.

Declanșatori ai comutării de context

Există trei declanșatori majori pentru comutarea de context. Acestea sunt prezentate după cum urmează –

  • Multitasking: Într-un mediu multitasking, un proces este comutat din CPU pentru ca un alt proces să poată fi rulat. Se salvează starea vechiului proces și se încarcă starea noului proces. Într-un sistem preemptiv, procesele pot fi schimbate de către planificator.

  • Manipularea întreruperilor: Hardware-ul comută o parte a contextului atunci când apare o întrerupere. Acest lucru se întâmplă în mod automat. Doar o parte din context este schimbată pentru a minimiza timpul necesar pentru a gestiona întreruperea.

  • Comutarea modurilor utilizator și kernel: O comutare de context poate avea loc atunci când este necesară o tranziție între modul utilizator și modul kernel în sistemul de operare.

Etapele comutării de context

Etapele implicate în comutarea de context sunt următoarele –

  • Salvați contextul procesului care rulează în prezent pe CPU. Actualizați blocul de control al procesului și alte câmpuri importante.
  • Mutați blocul de control al procesului de mai sus în coada relevantă, cum ar fi coada de așteptare, coada de intrare/ieșire etc.
  • Selectați un nou proces pentru execuție.
  • Actualizați blocul de control al procesului selectat. Aceasta include actualizarea stării procesului la funcționare.
  • Actualizarea structurilor de date de gestionare a memoriei, după cum este necesar.
  • Restabilirea contextului procesului care a fost executat anterior atunci când acesta este încărcat din nou pe procesor. Acest lucru se face prin încărcarea valorilor anterioare ale blocului de control al procesului și ale registrelor.

Costul de comutare a contextului

Comutarea contextului duce la un cost de suprasolicitare din cauza clădirilor TLB, a partajării cache-ului între mai multe sarcini, a rulării planificatorului de sarcini etc. Comutarea contextului între două fire de execuție ale aceluiași proces este mai rapidă decât între două procese diferite, deoarece firele de execuție au aceleași hărți de memorie virtuală. Din acest motiv, nu este necesară spălarea TLB.

raja

Publicat la 28-Sep-2018 15:31:15

Anunțuri

.

Leave a Reply