Kontekstno preklapljanje je tehnika ali metoda, ki jo operacijski sistem uporablja za preklop procesa iz enega stanja v drugega, da izvede svojo funkcijo z uporabo CPE v sistemu. Ko preklopi izvedbo v sistemu, shrani status starega tekočega procesa v obliki registrov in dodeli CPE novemu procesu za izvajanje njegovih nalog. Medtem ko se v sistemu izvaja nov proces, mora prejšnji proces čakati v pripravljeni čakalni vrsti. Izvajanje starega procesa se začne na točki, kjer ga je drug proces ustavil. Določa značilnosti večopravilnega operacijskega sistema, v katerem si več procesov deli isti CPE za izvajanje več nalog brez potrebe po dodatnih procesorjih v sistemu.
Potreba po preklapljanju konteksta
Preklapljanje konteksta pomaga souporabljati en sam CPU za vse procese, da se dokonča njegovo izvajanje in shrani status sistemskih opravil. Ko se proces znova naloži v sistem, se izvajanje procesa začne na isti točki, kjer je navzkrižje.
Sledijo razlogi, ki opisujejo potrebo po preklopu konteksta v operacijskem sistemu.
- Preklapljanje enega procesa v drugega ni neposredno v sistemu. Preklapljanje konteksta pomaga operacijskemu sistemu, ki preklaplja med več procesi, da uporabi vir CPE za izpolnitev svojih nalog in shranjevanje svojega konteksta. Storitev postopka lahko nadaljujemo na isti točki pozneje. Če ne shranimo podatkov ali konteksta trenutno izvajanega procesa, se lahko shranjeni podatki med preklapljanjem med procesi izgubijo.
- Če proces z visoko prioriteto pade v čakalno vrsto za pripravljenost, bo proces, ki se trenutno izvaja, zaustavil ali ustavil proces z visoko prioriteto, da dokonča svoje naloge v sistemu.
- Če kateri koli proces, ki se izvaja, zahteva V/I vire v sistemu, bo trenutni proces preklopil drug proces za uporabo CPU-jev. In ko je zahteva V/I izpolnjena, preide stari proces v stanje pripravljenosti, da počaka na izvedbo v CPE. Preklapljanje konteksta shrani stanje procesa za nadaljevanje njegovih nalog v operacijskem sistemu. V nasprotnem primeru mora proces znova začeti svoje izvajanje od začetne ravni.
- Če med izvajanjem procesa v operacijskem sistemu pride do prekinitev, se stanje procesa shrani kot registri s preklapljanjem konteksta. Po razrešitvi prekinitev proces preklopi iz stanja čakanja v stanje pripravljenosti, da nadaljuje z izvajanjem na isti točki pozneje, kjer pride do prekinitve operacijskega sistema.
- Kontekstno preklapljanje omogoča, da en sam CPE hkrati obravnava več procesnih zahtev brez potrebe po dodatnih procesorjih.
Primer preklapljanja konteksta
Recimo, da je več procesov shranjenih v bloku za nadzor procesa (PCB). En proces se izvaja v stanju izvajanja svoje naloge z uporabo procesorjev. Ko se proces izvaja, v pripravljeno čakalno vrsto prispe drug proces, ki ima visoko prioriteto dokončanja svoje naloge s CPE. Tukaj smo uporabili preklop konteksta, ki preklopi trenutni proces z novim procesom, ki zahteva, da CPE dokonča svoje naloge. Med preklopom procesa preklop konteksta shrani status starega procesa v registre. Ko se proces znova naloži v CPE, se začne z izvajanjem procesa, ko novi proces ustavi starega procesa. Če stanja procesa ne shranimo, moramo njegovo izvajanje začeti na začetni ravni. Na ta način preklapljanje konteksta pomaga operacijskemu sistemu preklapljati med procesi, shraniti ali znova naložiti proces, ko ta zahteva izvajanje svojih nalog.
Sprožilci preklapljanja konteksta
Sledijo tri vrste sprožilcev preklapljanja konteksta, kot sledi.
- Prekinitve
- Večopravilnost
- Preklop jedro/uporabnik
Prekinitve : CPE zahteva branje podatkov z diska, in če pride do prekinitev, samodejno preklapljanje konteksta preklopi del strojne opreme, ki potrebuje manj časa za obdelavo prekinitev.
Večopravilnost : Preklapljanje konteksta je značilnost večopravilnosti, ki omogoča preklop procesa iz CPE, tako da se lahko izvaja drug proces. Pri preklopu procesa se staro stanje shrani za nadaljevanje izvajanja procesa na isti točki v sistemu.
Preklop jedro/uporabnik : Uporablja se v operacijskih sistemih, ko preklapljate med uporabniškim načinom in izvaja se način jedra/uporabnika.
Kaj je PCB?
PCB (blok za nadzor procesa) je podatkovna struktura, ki se uporablja v operacijskem sistemu za shranjevanje vseh podatkov, povezanih s procesom. Na primer, ko je proces ustvarjen v operacijskem sistemu, posodobljene informacije o procesu, informacije o preklopu procesa, zaključen proces v tiskanem vezju.
Koraki za preklapljanje konteksta
Preklapljanje konteksta procesov vključuje več korakov. Naslednji diagram predstavlja preklapljanje konteksta dveh procesov, P1 na P2, ko se v pripravljeni čakalni vrsti tiskanega vezja pojavi prekinitev, potrebe po V/I ali proces, ki temelji na prioriteti.
Kot lahko vidimo na diagramu, se na začetku proces P1 izvaja na CPE, da izvede svojo nalogo, hkrati pa je drug proces, P2, v stanju pripravljenosti. Če je prišlo do napake ali prekinitve ali če proces zahteva vhod/izhod, proces P1 preklopi svoje stanje iz stanja izvajanja v stanje čakanja. Pred spremembo stanja procesa P1 preklapljanje konteksta shrani kontekst procesa P1 v obliki registrov in programskega števca v PCB1 . Po tem naloži stanje procesa P2 iz stanja pripravljenosti PCB2 v stanje teka.
Pri preklopu procesa P1 na proces 2 se izvedejo naslednji koraki:
- Prvič, preklapljanje konteksta mora shraniti stanje procesa P1 v obliki programskega števca in registrov na PCB (Program Counter Block), ki je v stanju izvajanja.
- Zdaj posodobite PCB1 na proces P1 in premaknite proces v ustrezno čakalno vrsto, kot je čakalna vrsta pripravljenosti, čakalna vrsta V/I in čakalna vrsta.
- Po tem preide drug proces v stanje izvajanja ali pa iz stanja pripravljenosti izberemo nov proces, ki naj se izvede, ali pa ima proces visoko prioriteto za izvedbo svoje naloge.
- Zdaj moramo posodobiti PCB (blok za nadzor procesa) za izbrani proces P2. Vključuje preklop stanja procesa iz stanja pripravljenosti v stanje izvajanja ali iz drugega stanja, kot je blokiran, izhod ali prekinitev.
- Če CPE že izvaja proces P2, moramo dobiti status procesa P2, da nadaljujemo z njegovim izvajanjem na isti časovni točki, ko pride do prekinitve sistema.
Podobno se proces P2 izklopi iz CPU, tako da lahko proces P1 nadaljuje z izvajanjem. Proces P1 se znova naloži iz PCB1 v stanje delovanja, da nadaljuje svojo nalogo na isti točki. V nasprotnem primeru se informacije izgubijo in ko se proces ponovno izvede, se začne izvajati na začetni ravni.