Kontekstin vaihto on tekniikka tai menetelmä, jota käyttöjärjestelmä käyttää prosessin vaihtamiseksi tilasta toiseen suorittaakseen toimintonsa käyttämällä järjestelmän prosessoreita. Kun vaihdat suoritteita järjestelmässä, se tallentaa vanhan käynnissä olevan prosessin tilan rekistereihin ja osoittaa CPU:n uudelle prosessille suorittamaan tehtävänsä. Kun järjestelmässä on käynnissä uusi prosessi, edellisen on odotettava valmiusjonossa. Vanhan prosessin suoritus alkaa siitä kohdasta, jossa toinen prosessi pysäytti sen. Se määrittelee moniajokäyttöjärjestelmän ominaisuudet, jossa useat prosessit jakavat saman suorittimen useiden tehtävien suorittamiseksi ilman, että järjestelmään tarvitaan lisäprosessoreita.
Kontekstin vaihtamisen tarve
Kontekstin vaihtaminen auttaa jakamaan yhden CPU:n kaikissa prosesseissa sen suorittamisen loppuunsaattamiseksi ja järjestelmän tehtävien tilan tallentamiseksi. Kun prosessi latautuu uudelleen järjestelmässä, prosessin suoritus alkaa samasta kohdasta, jossa on ristiriita.
Seuraavassa on syitä, jotka kuvaavat kontekstin vaihtamisen tarvetta käyttöjärjestelmässä.
- Prosessin vaihtaminen toiseen prosessiin ei ole suoraan järjestelmässä. Kontekstin vaihto auttaa useiden prosessien välillä vaihtavaa käyttöjärjestelmää käyttämään CPU:n resursseja tehtäviensä suorittamiseen ja kontekstin tallentamiseen. Voimme jatkaa prosessin palvelua samassa kohdassa myöhemmin. Jos emme tallenna käynnissä olevan prosessin dataa tai kontekstia, tallennetut tiedot voivat kadota prosessien välillä vaihdettaessa.
- Jos korkean prioriteetin prosessi putoaa valmiusjonoon, korkean prioriteetin prosessi sulkee tai pysäyttää parhaillaan käynnissä olevan prosessin suorittaakseen tehtävänsä järjestelmässä.
- Jos jokin käynnissä oleva prosessi vaatii I/O-resursseja järjestelmässä, toinen prosessi vaihtaa nykyisen prosessin käyttämään suorittimia. Ja kun I/O-vaatimus täyttyy, vanha prosessi siirtyy valmiustilaan odottamaan sen suorittamista CPU:ssa. Kontekstin vaihtaminen tallentaa prosessin tilan tehtäviensä jatkamiseksi käyttöjärjestelmässä. Muussa tapauksessa prosessin suorittaminen on käynnistettävä uudelleen alkukirjainten tasolta.
- Jos prosessia ajettaessa käyttöjärjestelmässä ilmenee keskeytyksiä, prosessin tila tallennetaan rekistereiksi kontekstin vaihtamisen avulla. Keskeytysten ratkaisemisen jälkeen prosessi siirtyy odotustilasta valmiustilaan jatkaakseen suoritustaan myöhemmin samassa pisteessä, jossa käyttöjärjestelmän keskeytys tapahtuu.
- Kontekstin vaihtaminen mahdollistaa yhden CPU:n käsittelevän useita prosessipyyntöjä samanaikaisesti ilman lisäprosessorien tarvetta.
Esimerkki kontekstin vaihtamisesta
Oletetaan, että prosessinohjauslohkoon (PCB) on tallennettu useita prosesseja. Yksi prosessi on käynnissä-tila suorittaakseen tehtävänsä CPU:iden avulla. Prosessin ollessa käynnissä valmisjonoon saapuu toinen prosessi, jolla on korkea prioriteetti suorittaa tehtävänsä CPU:n avulla. Tässä käytimme kontekstin vaihtoa, joka vaihtaa nykyisen prosessin uuteen prosessiin, joka vaatii suorittimen suorittamaan tehtävänsä. Prosessia vaihdettaessa kontekstikytkin tallentaa vanhan prosessin tilan rekistereihin. Kun prosessi latautuu uudelleen CPU:hun, se aloittaa prosessin suorittamisen, kun uusi prosessi pysäyttää vanhan prosessin. Jos emme tallenna prosessin tilaa, meidän on aloitettava sen suoritus alkutasolta. Tällä tavoin kontekstin vaihto auttaa käyttöjärjestelmää siirtymään prosessien välillä, tallentamaan tai lataamaan prosessin uudelleen, kun se vaatii tehtäviensä suorittamista.
Kontekstin vaihtamisen liipaisimet
Seuraavassa on kolme tyyppiä kontekstin vaihtamisen laukaisimia seuraavasti.
- Keskeyttää
- Moniajo
- Ydin/käyttäjäkytkin
Keskeyttää : Prosessori pyytää tietojen lukemista levyltä, ja jos tulee keskeytyksiä, kontekstin vaihto-automaatti vaihtaa osan laitteistosta, joka vaatii vähemmän aikaa keskeytysten käsittelyyn.
Moniajo : Kontekstin vaihto on monitehtävälle ominaista ominaisuus, joka mahdollistaa prosessin vaihtamisen CPU:sta, jotta toinen prosessi voidaan suorittaa. Prosessia vaihdettaessa vanha tila tallennetaan, jotta prosessin suorittamista voidaan jatkaa samassa pisteessä järjestelmässä.
Ydin/käyttäjäkytkin : Sitä käytetään käyttöjärjestelmissä vaihdettaessa käyttäjätilan ja ydin/käyttäjätilan välillä.
Mikä on PCB?
PCB (Process Control Block) on tietorakenne, jota käytetään käyttöjärjestelmässä tallentamaan kaikki prosessiin liittyvät tiedot. Esimerkiksi kun prosessi luodaan käyttöjärjestelmään, päivitetyt tiedot prosessista, prosessin kytkentätiedot, lopetettu prosessi PCB:ssä.
Kontekstin vaihtamisen vaiheet
Prosessien kontekstin vaihtamiseen sisältyy useita vaiheita. Seuraava kaavio esittää kahden prosessin, P1:n ja P2:n kontekstin vaihtoa, kun piirilevyn valmiusjonossa esiintyy keskeytys, I/O-tarpeet tai prioriteettipohjainen prosessi.
Kuten kaaviosta näemme, aluksi P1-prosessi on käynnissä CPU:ssa suorittaakseen tehtävänsä, ja samalla toinen prosessi, P2, on valmiustilassa. Jos on tapahtunut virhe tai keskeytys tai prosessi vaatii syöttöä/tulostusta, P1-prosessi vaihtaa tilansa käynnissä olevasta odotustilaan. Ennen prosessin P1 tilan muuttamista kontekstin vaihto tallentaa prosessin P1 kontekstin rekistereihin ja ohjelman vastapuolen PCB1 . Sen jälkeen se lataa P2-prosessin tilan valmiustilasta PCB2 juoksutilaan.
Seuraavat vaiheet suoritetaan, kun prosessi P1 vaihdetaan prosessiin 2:
- Ensinnäkin tämän kontekstin vaihdon on tallennettava prosessin P1 tila ohjelmalaskurin muodossa ja rekisterit PCB:lle (Program Counter Block), joka on käynnissä olevassa tilassa.
- Päivitä nyt PCB1 prosessiin P1 ja siirtää prosessin sopivaan jonoon, kuten valmiusjonoon, I/O-jonoon ja odotusjonoon.
- Tämän jälkeen toinen prosessi siirtyy käynnissä olevaan tilaan tai voimme valita valmiista tilasta uuden prosessin, joka suoritetaan, tai prosessilla on korkea prioriteetti suorittaa tehtävänsä.
- Nyt meidän on päivitettävä PCB (Process Control Block) valitulle prosessille P2. Se sisältää prosessin tilan vaihtamisen valmistilasta käynnissä olevaan tilaan tai toisesta tilasta, kuten estetty, poistu tai keskeytetty.
- Jos CPU jo suorittaa prosessin P2, meidän on saatava prosessin P2 tila jatkaaksemme sen suorittamista samassa pisteessä, jossa järjestelmäkeskeytys tapahtuu.
Samoin prosessi P2 kytketään pois CPU:sta, jotta prosessi P1 voi jatkaa suoritusta. P1-prosessi ladataan uudelleen PCB1:stä käynnissä olevaan tilaan jatkaakseen tehtäväänsä samassa kohdassa. Muussa tapauksessa tiedot menetetään, ja kun prosessi suoritetaan uudelleen, se aloittaa suorittamisen alkutasolla.