Mikä on kontekstinvaihto käyttöjärjestelmässä?

Mitä on kontekstinvaihto käyttöjärjestelmässä?

Käyttöjärjestelmässä on tapauksia, joissa käynnissä oleva prosessi on palautettava johonkin muuhun tilaan, kuten valmiustilaan tai odotus/lukitustilaan. Jos käynnissä oleva prosessi haluaa suorittaa jonkin I/O-operaation, prosessi on poistettava käynnissä olevasta tilasta ja asetettava sen jälkeen I/O-jonoon. Joskus prosessi saattaa käyttää round-robin-aikataulutusalgoritmia, jossa prosessin on palattava jokaisen kiinteän aikakvantin jälkeen valmiustilaan käynnissä olevasta tilasta. Nämä prosessinvaihdot tehdään siis Context Switchingin avulla. Tässä blogissa tutustumme Context Switchingin käsitteeseen käyttöjärjestelmässä ja tutustumme myös Context Switchingin etuihin ja haittoihin. Aloitetaan siis.

Mitä on kontekstinvaihto?

Kontekstinvaihto on prosessi, johon liittyy suorittimen siirtyminen prosessista tai tehtävästä toiseen. Tässä ilmiössä ytimen toimesta keskeytetään käynnissä olevassa tilassa olevan prosessin suoritus ja suorittimen toimesta suoritetaan toinen valmis-tilassa oleva prosessi.

Se on yksi monitehtäväisen käyttöjärjestelmän olennaisista ominaisuuksista. Prosessit vaihtuvat niin nopeasti, että käyttäjälle syntyy illuusio siitä, että kaikkia prosesseja suoritetaan samanaikaisesti.

Mutta kontekstinvaihtoprosessiin liittyy useita vaiheita, joita on noudatettava. Prosessia ei voi suoraan vaihtaa käynnissä olevasta tilasta valmiustilaan. Sinun on tallennettava kyseisen prosessin konteksti. Jos et tallenna minkään prosessin P kontekstia, niin jonkin ajan kuluttua, kun prosessi P tulee suorittimeen uudelleen suoritettavaksi, prosessi alkaa suorittaa sitä alusta. Todellisuudessa sen pitäisi kuitenkin jatkaa siitä kohdasta, josta se lähti suorittimesta edellisessä suorituksessaan. Prosessin konteksti olisi siis tallennettava, ennen kuin jokin muu prosessi asetetaan suoritustilaan.

Konteksti on suorittimen rekisterien ja ohjelmalaskurin sisältö minä tahansa ajankohtana. Kontekstin vaihto voi tapahtua seuraavista syistä:

  • Kun korkean prioriteetin prosessi tulee valmiustilaan. Tällöin käynnissä olevan prosessin suoritus tulisi pysäyttää ja korkeamman prioriteetin prosessille tulisi antaa suorittimen suoritettavaksi.
  • Kun tapahtuu keskeytys, silloin käynnissä oleva prosessi tulisi pysäyttää ja suorittimen tulisi käsitellä keskeytys ennen kuin se tekee jotain muuta.
  • Kun tarvitaan siirtymistä käyttäjätilan ja ytimen tilan välillä, on suoritettava kontekstinvaihto.

Kontekstinvaihtoon liittyvät vaiheet

Kontekstinvaihtoon liittyy useita vaiheita. Seuraava kaavio kuvaa kontekstinvaihtoprosessia kahden prosessin P1 ja P2 välillä.

Yllä olevasta kuvasta näkyy, että aluksi prosessi P1 on käynnissä-tilassa ja prosessi P2 on valmis-tilassa. Nyt, kun tapahtuu jokin keskeytys, niin sinun täytyy vaihtaa prosessi P1 käynnissä olevasta tilasta valmis-tilaan kontekstin tallentamisen jälkeen ja prosessi P2 valmis-tilasta käynnissä olevaan tilaan. Seuraavat vaiheet suoritetaan:

  1. Aluksi prosessin P1 eli käynnissä olevassa tilassa olevan prosessin konteksti tallennetaan prosessin P1 eli PCB1:n prosessinohjauslohkoon.
  2. Nyt sinun on siirrettävä PCB1 asianomaiseen jonoon i.ts. valmiusjonoon, I/O-jonoon, odotusjonoon jne.
  3. Valitse valmiustilasta uusi suoritettava prosessi eli prosessi P2.
  4. Päivitä nyt prosessin P2 eli PCB2:n prosessinohjauslohko asettamalla prosessin tilaksi käynnissä. Jos CPU on suorittanut prosessin P2 aiemmin, voit saada viimeisimmän suoritetun käskyn sijainnin, jotta voit jatkaa prosessin P2 suorittamista.
  5. Vastaavasti, jos haluat suorittaa prosessin P1 uudelleen, sinun on noudatettava samoja vaiheita kuin edellä on mainittu (vaiheista 1-4).

Kontekstinvaihtoon tarvitaan yleensä vähintään kaksi prosessia, ja round-robin-algoritmin tapauksessa kontekstinvaihto voidaan suorittaa vain yhden prosessin avulla.

Aikaa, joka kuluu yhden prosessin kontekstinvaihtoon toisen prosessin toimesta, kutsutaan kontekstinvaihtoaikana.

Kontekstinvaihdon etu

Kontekstinvaihtoa käytetään multitaskingin eli moniohjelmoinnin aikaansaamiseksi ajan jakamisen avulla(lisätietoja multitaskingista täältä). Multitasking antaa käyttäjille illuusion siitä, että useampi kuin yksi prosessi suoritetaan samanaikaisesti. Todellisuudessa prosessori suorittaa kuitenkin vain yhtä tehtävää tiettynä ajankohtana. Tässä kontekstinvaihto on niin nopeaa, että käyttäjä tuntee suorittimen suorittavan useampaa kuin yhtä tehtävää samanaikaisesti.

Kontekstinvaihdon haittapuoli

Kontekstinvaihdon haittapuoli on se, että se vaatii jonkin verran aikaa kontekstinvaihtoon eli kontekstinvaihtoaikaan. Aikaa tarvitaan yhden käynnissä olevan prosessin kontekstin tallentamiseen ja sitten toisen prosessin kontekstin saamiseen, joka on tulossa käynnissä olevaan tilaan. Tuona aikana suoritin ei tee käyttäjän kannalta hyödyllistä työtä. Kontekstin vaihtaminen on siis tässä tilassa pelkkää ylikuormitusta.

Siinä kaikki tämän blogin osalta. Toivottavasti pidit tästä blogista.

Vastaa

Sähköpostiosoitettasi ei julkaista.