Prebacivanje konteksta je tehnika ili metoda koju operativni sustav koristi za prebacivanje procesa iz jednog stanja u drugo kako bi izvršio svoju funkciju pomoću CPU-a u sustavu. Prilikom promjene izvedbe u sustavu, on pohranjuje status starog pokrenutog procesa u obliku registara i dodjeljuje CPU novom procesu za izvršavanje njegovih zadataka. Dok se novi proces izvodi u sustavu, prethodni proces mora čekati u redu čekanja. Izvršenje starog procesa počinje na onom mjestu gdje ga je drugi proces zaustavio. Definira karakteristike višezadaćnog operativnog sustava u kojem više procesa dijeli isti CPU za obavljanje više zadataka bez potrebe za dodatnim procesorima u sustavu.
Potreba za promjenom konteksta
Prebacivanje konteksta pomaže u dijeljenju jednog CPU-a u svim procesima kako bi se dovršilo njegovo izvršenje i pohranio status zadataka sustava. Kada se proces ponovno učita u sustav, izvršenje procesa počinje na istoj točki gdje postoji sukob.
Slijede razlozi koji opisuju potrebu za promjenom konteksta u operativnom sustavu.
- Prebacivanje jednog procesa na drugi proces nije izravno u sustavu. Prebacivanje konteksta pomaže operativnom sustavu koji se prebacuje između više procesa da koristi resurs CPU-a za izvršavanje svojih zadataka i pohranjivanje svog konteksta. Kasnije možemo nastaviti uslugu procesa na istom mjestu. Ako ne pohranimo podatke ili kontekst procesa koji se trenutno izvodi, pohranjeni podaci mogu se izgubiti tijekom prebacivanja između procesa.
- Ako proces visokog prioriteta padne u red čekanja spreman, proces koji se trenutno izvodi će biti ugašen ili zaustavljen od strane procesa visokog prioriteta kako bi dovršio svoje zadatke u sustavu.
- Ako bilo koji pokrenuti proces zahtijeva I/O resurse u sustavu, trenutni proces će biti prebačen drugim procesom za korištenje CPU-a. A kada se I/O zahtjev ispuni, stari proces prelazi u stanje spremnosti da čeka svoje izvršenje u CPU-u. Prebacivanje konteksta pohranjuje stanje procesa za nastavak njegovih zadataka u operativnom sustavu. U suprotnom, proces mora ponovno pokrenuti svoje izvršenje od početne razine.
- Ako se tijekom izvođenja procesa u operativnom sustavu dogodi bilo kakav prekid, status procesa sprema se kao registri korištenjem prebacivanja konteksta. Nakon rješavanja prekida, proces se prebacuje iz stanja čekanja u stanje spremnosti kako bi kasnije nastavio s izvođenjem na istoj točki, gdje je došlo do prekida operativnog sustava.
- Prebacivanje konteksta omogućuje jednom CPU-u da istovremeno obrađuje više zahtjeva procesa bez potrebe za dodatnim procesorima.
Primjer promjene konteksta
Pretpostavimo da je više procesa pohranjeno u bloku kontrole procesa (PCB). Jedan proces je pokrenut kako bi izvršio svoj zadatak uz korištenje CPU-a. Dok se proces izvodi, drugi proces stiže u red čekanja, koji ima visoki prioritet dovršavanja zadatka koristeći CPU. Ovdje smo upotrijebili promjenu konteksta koja prebacuje trenutni proces s novim procesom koji zahtijeva da CPU dovrši svoje zadatke. Prilikom prebacivanja procesa, kontekstni prekidač sprema status starog procesa u registre. Kada se proces ponovno učita u CPU, on započinje s izvršenjem procesa kada novi proces zaustavi stari proces. Ako ne spremimo stanje procesa, moramo započeti njegovo izvršavanje na početnoj razini. Na taj način prebacivanje konteksta pomaže operativnom sustavu da se prebacuje između procesa, pohranjuje ili ponovno učitava proces kada on zahtijeva izvršavanje svojih zadataka.
Okidači za promjenu konteksta
Slijede tri vrste okidača za promjenu konteksta kako slijedi.
- Prekidi
- Multitasking
- Prebacivanje kernel/korisnik
Prekidi : CPU zahtijeva čitanje podataka s diska, a ako postoje prekidi, automatsko prebacivanje konteksta prebacuje dio hardvera koji zahtijeva manje vremena za obradu prekida.
Multitasking : Promjena konteksta je karakteristika multitaskinga koja omogućuje prebacivanje procesa iz CPU-a tako da se drugi proces može pokrenuti. Prilikom prebacivanja procesa, staro stanje se sprema kako bi se nastavilo izvršavanje procesa na istoj točki u sustavu.
Prekidač kernel/korisnik : Koristi se u operativnim sustavima prilikom prebacivanja između korisničkog načina rada i izvršavanja načina kernel/korisnik.
Što je PCB?
PCB (kontrolni blok procesa) je podatkovna struktura koja se koristi u operativnom sustavu za pohranjivanje svih podataka povezanih s procesom. Na primjer, kada se proces kreira u operativnom sustavu, ažurirane informacije o procesu, informacije o prebacivanju procesa, prekinuti proces u PCB-u.
Koraci za promjenu konteksta
Postoji nekoliko koraka uključenih u promjenu konteksta procesa. Sljedeći dijagram predstavlja izmjenu konteksta dvaju procesa, P1 do P2, kada se u spremnom redu tiskane ploče pojavi prekid, I/O potrebe ili proces temeljen na prioritetu.
Kao što možemo vidjeti na dijagramu, u početku se P1 proces izvodi na CPU-u kako bi izvršio svoj zadatak, au isto vrijeme, drugi proces, P2, je u stanju spremnosti. Ako je došlo do pogreške ili prekida ili proces zahtijeva ulaz/izlaz, proces P1 prebacuje svoje stanje iz stanja rada u stanje čekanja. Prije promjene stanja procesa P1, prebacivanje konteksta sprema kontekst procesa P1 u obliku registara i programskog brojača u PCB1 . Nakon toga učitava stanje P2 procesa iz stanja spremnosti PCB2 u stanje trčanja.
Prilikom prebacivanja procesa P1 na proces 2 poduzimaju se sljedeći koraci:
- Prvo, preklapanje konteksta treba spremiti stanje procesa P1 u obliku programskog brojača i registara na PCB (Program Counter Block), koji je u stanju rada.
- Sada ažurirajte PCB1 na proces P1 i premjestite proces u odgovarajući red čekanja, kao što je red spremanja, I/O red i red čekanja.
- Nakon toga, drugi proces dolazi u stanje rada, ili možemo odabrati novi proces iz stanja spremnosti, koji se želi izvršiti, ili proces ima visoki prioritet da izvrši svoj zadatak.
- Sada moramo ažurirati PCB (blok kontrole procesa) za odabrani proces P2. To uključuje prebacivanje stanja procesa iz stanja spremnosti u stanje rada ili iz drugog stanja kao što je blokirano, izlaz ili obustava.
- Ako CPU već izvršava proces P2, moramo dobiti status procesa P2 da nastavimo s njegovim izvršenjem u istoj vremenskoj točki u kojoj se dogodi prekid sustava.
Slično, proces P2 se isključuje iz CPU-a tako da proces P1 može nastaviti s izvršenjem. Proces P1 ponovno se učitava s PCB1 u stanje rada kako bi nastavio svoj zadatak na istoj točki. U suprotnom se informacija gubi, a kada se proces ponovno izvrši, počinje izvršavanje na početnoj razini.