Mikä on kontekstinvaihto käyttöjärjestelmässä?
Kontekstinvaihto tarkoittaa prosessin kontekstin tai tilan tallentamista niin, että se voidaan tarvittaessa ladata uudelleen ja suoritusta voidaan jatkaa samasta kohdasta kuin aiemmin. Tämä on monitehtäväisen käyttöjärjestelmän ominaisuus ja mahdollistaa sen, että yksi prosessori voidaan jakaa usean prosessin kesken.
Kontekstinvaihtoa havainnollistava kaavio on seuraava –
Yllä olevassa kaaviossa on aluksi käynnissä prosessi 1. Prosessi 1 kytkeytyy pois ja prosessi 2 kytkeytyy sisään keskeytyksen tai järjestelmäkutsun vuoksi. Kontekstinvaihdossa prosessin 1 tila tallennetaan PCB1:een ja prosessin 2 tila ladataan PCB2:sta. Jonkin ajan kuluttua tapahtuu jälleen kontekstinvaihto, jolloin prosessi 2 kytkeytyy pois ja prosessi 1 kytkeytyy taas sisään. Tällöin prosessin 2 tila tallennetaan PCB2:een ja prosessin 1 tila ladataan PCB1:stä.
Kontekstinvaihdon laukaisijat
Kontekstinvaihdon laukaisijoita on kolme. Ne ovat seuraavat –
-
Multitasking: Monitasking-ympäristössä prosessi vaihdetaan pois suorittimesta, jotta toinen prosessi voidaan suorittaa. Vanhan prosessin tila tallennetaan ja uuden prosessin tila ladataan. Preemptive-järjestelmässä prosessit voidaan vaihtaa ulos ajastimen toimesta.
-
Keskeytysten käsittely: Laitteisto vaihtaa osan kontekstista, kun keskeytys tapahtuu. Tämä tapahtuu automaattisesti. Vain osa kontekstista vaihdetaan, jotta keskeytyksen käsittelyyn kuluva aika saadaan minimoitua.
-
Käyttäjä- ja ydintilan vaihtaminen: Kontekstinvaihto voi tapahtua, kun käyttöjärjestelmässä tarvitaan siirtymistä käyttäjätilan ja ydintilan välillä.
Kontekstinvaihdon vaiheet
Kontekstinvaihdon vaiheet ovat seuraavat –
- Tallenna suorittimessa parhaillaan käynnissä olevan prosessin konteksti. Päivitä prosessin ohjauslohko ja muut tärkeät kentät.
- Siirrä edellä mainitun prosessin prosessin ohjauslohko asiaankuuluvaan jonoon, kuten valmiusjonoon, I/O-jonoon jne.
- Valitse uusi prosessi suoritettavaksi.
- Päivitä valitun prosessin ohjauslohko. Tämä sisältää prosessin tilan päivittämisen käynnissä olevaksi.
- Päivitä muistinhallinnan tietorakenteet tarpeen mukaan.
- Palauta aiemmin käynnissä olleen prosessin konteksti, kun se ladataan uudelleen prosessoriin. Tämä tapahtuu lataamalla prosessin ohjauslohkon ja rekisterien aiemmat arvot.
Kontekstinvaihdon kustannukset
Kontekstinvaihdosta aiheutuu yleiskustannuksia TLB:n tyhjennysten, välimuistin jakamisen useiden tehtävien kesken, tehtävien ajoituksen ajamisen jne. vuoksi. Kontekstinvaihto saman prosessin kahden säikeen välillä on nopeampaa kuin kahden eri prosessin välillä, koska säikeillä on samat virtuaalimuistikartat. Tämän vuoksi TLB:n huuhtelua ei tarvita.
Leave a Reply