logo

Schimbarea contextului în sistemul de operare (sistem de operare)

Schimbarea contextului este o tehnică sau metodă utilizată de sistemul de operare pentru a comuta un proces de la o stare la alta pentru a-și executa funcția folosind CPU-uri din sistem. La schimbarea performanței în sistem, acesta stochează starea vechiului proces de rulare sub formă de registre și atribuie CPU unui nou proces pentru a-și executa sarcinile. În timp ce un nou proces rulează în sistem, procesul anterior trebuie să aștepte într-o coadă pregătită. Execuția vechiului proces începe în acel punct în care un alt proces l-a oprit. Definește caracteristicile unui sistem de operare multitasking în care mai multe procese au împărțit același CPU pentru a efectua mai multe sarcini fără a fi nevoie de procesoare suplimentare în sistem.

Nevoia de schimbare a contextului

O schimbare de context ajută la partajarea unui singur procesor între toate procesele pentru a finaliza execuția acestuia și pentru a stoca starea sarcinilor sistemului. Când procesul se reîncarcă în sistem, execuția procesului începe în același punct în care există conflicte.

Următoarele sunt motivele care descriu necesitatea schimbării contextului în sistemul de operare.

  1. Comutarea unui proces la altul nu este direct în sistem. O schimbare de context ajută sistemul de operare care comută între procesele multiple să folosească resursele CPU pentru a-și îndeplini sarcinile și pentru a-și stoca contextul. Putem relua serviciul procesului în același punct ulterior. Dacă nu stocăm datele sau contextul procesului care rulează în prezent, datele stocate se pot pierde în timpul comutării între procese.
  2. Dacă un proces cu prioritate ridicată intră în coada de așteptare, procesul care rulează în prezent va fi oprit sau oprit de un proces cu prioritate ridicată pentru a-și finaliza sarcinile în sistem.
  3. Dacă orice proces care rulează necesită resurse I/O în sistem, procesul curent va fi comutat de un alt proces pentru a utiliza CPU-urile. Și când cerința I/O este îndeplinită, vechiul proces intră într-o stare gata pentru a aștepta execuția sa în CPU. Comutarea contextului stochează starea procesului pentru a-și relua sarcinile într-un sistem de operare. În caz contrar, procesul trebuie să-și repornească execuția de la nivelul inițialelor.
  4. Dacă apar întreruperi în timpul rulării unui proces în sistemul de operare, starea procesului este salvată ca registre utilizând comutarea contextului. După rezolvarea întreruperilor, procesul trece de la o stare de așteptare la o stare de pregătire pentru a-și relua execuția în același punct mai târziu, în care apare sistemul de operare întrerupt.
  5. O comutare de context permite unui singur CPU să gestioneze mai multe solicitări de proces simultan, fără a fi nevoie de procesoare suplimentare.

Exemplu de schimbare a contextului

Să presupunem că mai multe procese sunt stocate într-un bloc de control al procesului (PCB). Un proces este în stare de rulare pentru a-și executa sarcina cu utilizarea CPU-urilor. Pe măsură ce procesul rulează, un alt proces ajunge în coada gata, care are o prioritate mare de a-și finaliza sarcina folosind CPU. Aici am folosit schimbarea contextului care comută procesul curent cu noul proces care necesită CPU să-și termine sarcinile. În timpul comutării procesului, o comutare de context salvează starea procesului vechi în registre. Când procesul se reîncarcă în CPU, începe execuția procesului când noul proces oprește procesul vechi. Dacă nu salvăm starea procesului, trebuie să începem execuția acestuia la nivelul inițial. În acest fel, schimbarea contextului ajută sistemul de operare să comute între procese, să stocheze sau să reîncarce procesul atunci când necesită executarea sarcinilor sale.

Declanșatoarele de schimbare a contextului

Următoarele sunt cele trei tipuri de declanșatori de comutare de context, după cum urmează.

foreach buclă dactilografiată
  1. întreruperi
  2. Multifunctional
  3. Comutator Kernel/Utilizator

întreruperi : Un CPU solicită ca datele să fie citite de pe un disc și, dacă există întreruperi, comutarea contextului comută automat o parte a hardware-ului care necesită mai puțin timp pentru a gestiona întreruperi.

Multifunctional : O schimbare de context este caracteristica multitasking-ului care permite ca procesul să fie comutat de la CPU, astfel încât să poată fi rulat un alt proces. La comutarea procesului, starea veche este salvată pentru a relua execuția procesului în același punct din sistem.

Comutare Kernel/Utilizator : Este folosit în sistemele de operare la comutarea între modul utilizator și se realizează modul kernel/utilizator.

Ce este PCB-ul?

Un PCB (Process Control Block) este o structură de date utilizată în sistemul de operare pentru a stoca toate informațiile legate de proces. De exemplu, atunci când un proces este creat în sistemul de operare, informații actualizate ale procesului, informații de comutare ale procesului, proces încheiat în PCB.

Pași pentru schimbarea contextului

Există mai mulți pași care implică schimbarea de context a proceselor. Următoarea diagramă reprezintă schimbarea contextului a două procese, P1 la P2, atunci când o întrerupere, necesită I/O sau un proces bazat pe prioritate are loc în coada de așteptare a PCB.

Care este schimbarea contextului în sistemul de operare

După cum putem vedea în diagramă, inițial, procesul P1 rulează pe CPU pentru a-și executa sarcina și, în același timp, un alt proces, P2, este în starea gata. Dacă a apărut o eroare sau o întrerupere sau procesul necesită intrare/ieșire, procesul P1 își comută starea de la rulare la starea de așteptare. Înainte de a schimba starea procesului P1, comutarea contextului salvează contextul procesului P1 sub formă de registre și contorul de program în PCB1 . După aceea, încarcă starea procesului P2 din starea gata a PCB2 la starea de rulare.

Următorii pași sunt parcurși la comutarea Procesului P1 la Procesul 2:

  1. În primul rând, această schimbare de context trebuie să salveze starea procesului P1 sub forma contorului de programe și a registrelor pe PCB (Program Counter Block), care este în starea de rulare.
  2. Acum actualizați PCB1 pentru a procesa P1 și mutați procesul în coada corespunzătoare, cum ar fi coada pregătită, coada I/O și coada de așteptare.
  3. După aceea, un alt proces intră în starea de rulare sau putem selecta un nou proces din starea gata, care urmează să fie executat, sau procesul are o prioritate mare pentru a-și executa sarcina.
  4. Acum, trebuie să actualizăm PCB (blocul de control al procesului) pentru procesul selectat P2. Include trecerea stării procesului de la starea gata la starea de rulare sau dintr-o altă stare, cum ar fi blocat, ieșire sau suspendare.
  5. Dacă CPU execută deja procesul P2, trebuie să obținem starea procesului P2 pentru a-și relua execuția în același moment în care are loc întreruperea sistemului.

În mod similar, procesul P2 este oprit de la CPU, astfel încât procesul P1 să poată relua execuția. Procesul P1 este reîncărcat de la PCB1 în starea de rulare pentru a-și relua sarcina în același punct. În caz contrar, informația se pierde, iar atunci când procesul este executat din nou, începe execuția la nivelul inițial.