Ce este comutarea contextului în sistemul de operare?
În sistemul de operare, există cazuri în care trebuie să readuceți procesul care se află în stare de execuție într-o altă stare, cum ar fi starea gata sau starea de așteptare/blocare. Dacă procesul în curs de execuție dorește să efectueze o anumită operațiune de intrare/ieșire, atunci trebuie să scoateți procesul din starea de execuție și apoi să puneți procesul în coada de intrare/ieșire. Uneori, este posibil ca procesul să utilizeze un algoritm de planificare de tip round-robin în care, după fiecare perioadă de timp fixă, procesul trebuie să revină din starea de funcționare în starea de pregătire. Astfel, aceste comutări de procese se realizează cu ajutorul comutării contextuale. În acest blog, vom învăța despre conceptul de comutare contextuală în sistemul de operare și vom învăța, de asemenea, despre avantajele și dezavantajele comutării contextuale. Așadar, să începem.
Ce este Comutarea de context?
O comutare de context este un proces care implică comutarea CPU de la un proces sau sarcină la altul. În acest fenomen, execuția procesului care este prezent în stare de funcționare este suspendată de către kernel și un alt proces care este prezent în stare de pregătire este executat de către CPU.
Este una dintre caracteristicile esențiale ale sistemului de operare multitasking. Procesele sunt comutate atât de rapid încât îi dă utilizatorului iluzia că toate procesele sunt executate în același timp.
Dar procesul de comutare a contextului implică o serie de pași care trebuie urmați. Nu se poate comuta direct un proces din starea de execuție în starea de pregătit. Trebuie să salvați contextul acelui proces. Dacă nu salvați contextul vreunui proces P, atunci, după un anumit timp, când procesul P intră din nou în CPU pentru execuție, atunci procesul va începe să se execute de la început. Dar, în realitate, acesta ar trebui să continue din acel punct în care a părăsit CPU în execuția sa anterioară. Așadar, contextul procesului ar trebui salvat înainte de a pune orice alt proces în stare de execuție.
Un context este conținutul registrelor și al contorului de program al unei unități centrale de procesare la un moment dat. Comutarea contextului poate avea loc din următoarele motive:
- Când un proces cu prioritate mare ajunge în starea de pregătire. În acest caz, execuția procesului în curs de desfășurare ar trebui să fie oprită și procesul cu prioritate mai mare ar trebui să primească CPU pentru execuție.
- Când apare o întrerupere, atunci procesul în stare de execuție ar trebui să fie oprit și CPU ar trebui să trateze întreruperea înainte de a face altceva.
- Când este necesară o tranziție între modul utilizator și modul kernel atunci trebuie să efectuați comutarea contextului.
Etapele implicate în comutarea contextului
Procesul de comutare a contextului implică o serie de etape. Următoarea diagramă descrie procesul de comutare a contextului între cele două procese P1 și P2.
În figura de mai sus, puteți vedea că, inițial, procesul P1 este în stare de funcționare, iar procesul P2 este în stare de pregătire. Acum, când are loc o întrerupere, atunci trebuie să comutați procesul P1 din starea de funcționare în starea gata după salvarea contextului și procesul P2 din starea gata în starea de funcționare. Se vor parcurge următorii pași:
- În primul rând, contextul procesului P1, adică procesul aflat în stare de funcționare, va fi salvat în blocul de control al procesului P1, adică PCB1.
- Acum, trebuie să mutați PCB1 în coada corespunzătoare, adică PCB1.de exemplu, coada pregătită, coada I/O, coada de așteptare etc.
- Din starea pregătită, selectați noul proces care urmează să fie executat, adică procesul P2.
- Acum, actualizați blocul de control al procesului P2, adică PCB2, prin stabilirea stării de funcționare a procesului. Dacă procesul P2 a fost executat anterior de către CPU, atunci puteți obține poziția ultimei instrucțiuni executate, astfel încât să puteți relua execuția lui P2.
- În mod similar, dacă doriți să executați din nou procesul P1, atunci trebuie să urmați aceiași pași ca cei menționați mai sus (de la pasul 1 la 4).
Pentru ca schimbarea de context să aibă loc, în general, sunt necesare cel puțin două procese, iar în cazul algoritmului round-robin, puteți efectua schimbarea de context cu ajutorul unui singur proces.
Timpul implicat în comutarea contextului unui proces de către celălalt se numește timpul de comutare a contextului.
Avantajul comutării contextului
Comutarea contextului este folosită pentru a realiza multitasking, adică multiprogramare cu partajare a timpului (aflați mai multe despre multitasking de aici). Multitasking-ul le dă utilizatorilor iluzia că mai multe procese sunt executate în același timp. Dar, în realitate, un procesor execută doar o singură sarcină la un anumit moment dat. Aici, comutarea contextului este atât de rapidă încât utilizatorul are impresia că unitatea centrală de procesare execută mai multe sarcini în același timp.
Dezavantajul comutării contextului
Dezavantajul comutării contextului este că este nevoie de un anumit timp pentru comutarea contextului, și anume timpul de comutare a contextului. Timpul este necesar pentru a salva contextul unui proces care se află în stare de funcționare și apoi pentru a obține contextul altui proces care urmează să intre în stare de funcționare. În acest timp, din punctul de vedere al utilizatorului, procesorul nu efectuează nicio activitate utilă. Deci, comutarea contextului este pur și simplu overhead în această condiție.
Atât pentru acest blog. Sper că v-a plăcut acest blog.