logo

Prepínanie kontextu v OS (operačnom systéme)

Kontextové prepínanie je technika alebo metóda používaná operačným systémom na prepínanie procesu z jedného stavu do druhého, aby vykonal svoju funkciu pomocou CPU v systéme. Pri prepínaní výkonu v systéme ukladá stav starého bežiaceho procesu vo forme registrov a priraďuje CPU novému procesu, aby vykonával svoje úlohy. Kým v systéme beží nový proces, predchádzajúci proces musí čakať v pripravenom rade. Vykonávanie starého procesu začína v bode, kde ho zastavil iný proces. Definuje charakteristiky multitaskingového operačného systému, v ktorom viaceré procesy zdieľajú rovnaký CPU na vykonávanie viacerých úloh bez potreby ďalších procesorov v systéme.

Potreba prepínania kontextu

Kontextové prepínanie pomáha zdieľať jeden CPU naprieč všetkými procesmi na dokončenie jeho vykonávania a uloženie stavu úloh systému. Keď sa proces znova načíta do systému, vykonávanie procesu sa spustí v rovnakom bode, kde došlo ku konfliktu.

Nasledujú dôvody, ktoré popisujú potrebu prepínania kontextu v operačnom systéme.

  1. Prepínanie jedného procesu na iný proces nie je priamo v systéme. Prepínanie kontextu pomáha operačnému systému, ktorý prepína medzi viacerými procesmi, využívať prostriedky CPU na vykonávanie svojich úloh a ukladanie kontextu. Službu procesu môžeme obnoviť v rovnakom bode neskôr. Ak neuložíme údaje alebo kontext aktuálne spusteného procesu, uložené údaje sa môžu stratiť pri prepínaní medzi procesmi.
  2. Ak proces s vysokou prioritou spadá do frontu pripravenosti, aktuálne spustený proces bude vypnutý alebo zastavený procesom s vysokou prioritou, aby dokončil svoje úlohy v systéme.
  3. Ak nejaký bežiaci proces vyžaduje I/O zdroje v systéme, aktuálny proces bude prepnutý iným procesom na použitie CPU. A keď je splnená požiadavka I/O, starý proces prejde do stavu pripravenosti a čaká na svoje vykonanie v CPU. Kontextové prepínanie ukladá stav procesu na obnovenie jeho úloh v operačnom systéme. V opačnom prípade musí proces reštartovať svoje vykonávanie z úrovne iniciálok.
  4. Ak sa počas behu procesu v operačnom systéme vyskytnú nejaké prerušenia, stav procesu sa uloží ako registre pomocou prepínania kontextu. Po vyriešení prerušení sa proces prepne zo stavu čakania do stavu pripravenosti, aby pokračoval vo svojom vykonávaní v rovnakom bode neskôr, kde dôjde k prerušeniu operačného systému.
  5. Kontextové prepínanie umožňuje jednému CPU spracovávať viaceré procesné požiadavky súčasne bez potreby akýchkoľvek ďalších procesorov.

Príklad prepínania kontextu

Predpokladajme, že v riadiacom bloku procesov (PCB) je uložených viacero procesov. Jeden proces je v spustenom stave, aby vykonal svoju úlohu s použitím CPU. Ako proces beží, ďalší proces prichádza do frontu pripravených, ktorý má vysokú prioritu dokončiť svoju úlohu pomocou CPU. Tu sme použili prepínanie kontextu, ktoré prepína aktuálny proces s novým procesom, ktorý vyžaduje, aby CPU dokončil svoje úlohy. Pri prepínaní procesu ukladá kontextový prepínač stav starého procesu do registrov. Keď sa proces znova načíta do CPU, spustí sa vykonávanie procesu, keď nový proces zastaví starý proces. Ak neuložíme stav procesu, musíme spustiť jeho vykonávanie na počiatočnej úrovni. Týmto spôsobom prepínanie kontextu pomáha operačnému systému prepínať medzi procesmi, ukladať alebo znova načítať proces, keď si vyžaduje vykonanie svojich úloh.

Spúšťače prepínania kontextu

Nasledujú tri typy spúšťačov prepínania kontextu.

  1. Prerušenia
  2. Multitasking
  3. Prepínač jadra/používateľa

Prerušenia : CPU požaduje čítanie údajov z disku a ak sa vyskytnú nejaké prerušenia, automatické prepínanie kontextu prepne časť hardvéru, ktorá si vyžaduje menej času na spracovanie prerušení.

Multitasking : Prepínanie kontextu je charakteristikou multitaskingu, ktorá umožňuje prepnutie procesu z CPU, aby sa dal spustiť iný proces. Pri prepínaní procesu sa starý stav uloží, aby sa obnovilo vykonávanie procesu v rovnakom bode v systéme.

Prepínač jadra/používateľa : Používa sa v operačných systémoch pri prepínaní medzi používateľským režimom a režimom jadro/používateľ.

Čo je to PCB?

PCB (Process Control Block) je dátová štruktúra používaná v operačnom systéme na ukladanie všetkých údajov súvisiacich s procesom. Napríklad, keď je proces vytvorený v operačnom systéme, aktualizované informácie o procese, prepínanie informácií o procese, ukončený proces v PCB.

ddl vs dml

Kroky na prepínanie kontextu

Existuje niekoľko krokov, ktoré zahŕňajú prepínanie kontextu procesov. Nasledujúci diagram predstavuje prepínanie kontextu dvoch procesov, P1 až P2, keď dôjde k prerušeniu, potrebe I/O alebo procesu založenému na priorite vo fronte pripravenej dosky plošných spojov.

Aké je prepínanie kontextu v operačnom systéme

Ako môžeme vidieť na diagrame, spočiatku proces P1 beží na CPU, aby vykonal svoju úlohu, a súčasne je ďalší proces, P2, v stave pripravenosti. Ak dôjde k chybe alebo prerušeniu alebo proces vyžaduje vstup/výstup, proces P1 prepne svoj stav z behu do stavu čakania. Pred zmenou stavu procesu P1 sa kontextovým prepínaním uloží kontext procesu P1 vo forme registrov a programového počítadla do PCB1 . Potom načíta stav procesu P2 z pripraveného stavu PCB2 do spusteného stavu.

Pri prepínaní procesu P1 na proces 2 sa vykonajú nasledujúce kroky:

  1. Po prvé, toto prepínanie kontextu potrebuje uložiť stav procesu P1 vo forme programového počítadla a registrov do PCB (Program Counter Block), ktorý je v spustenom stave.
  2. Teraz aktualizujte PCB1 na spracovanie P1 a presuniete proces do príslušného frontu, ako je front pripravený, vstupno-výstupný front a čakací front.
  3. Potom sa do spusteného stavu dostane ďalší proces, alebo môžeme vybrať nový proces z pripraveného stavu, ktorý sa má vykonať, alebo má proces vysokú prioritu vykonať svoju úlohu.
  4. Teraz musíme aktualizovať PCB (Process Control Block) pre vybraný proces P2. Zahŕňa prepnutie stavu procesu zo stavu pripravenosti do stavu spustenia alebo z iného stavu, ako je blokovaný, ukončený alebo pozastavený.
  5. Ak CPU už vykonáva proces P2, musíme získať stav procesu P2, aby sme mohli pokračovať v jeho vykonávaní v rovnakom čase, keď došlo k systémovému prerušeniu.

Podobne je proces P2 vypnutý z CPU, takže proces P1 môže pokračovať vo vykonávaní. Proces P1 sa znova načíta z PCB1 do spusteného stavu, aby pokračoval v úlohe v rovnakom bode. V opačnom prípade sa informácie stratia a keď sa proces znova spustí, spustí sa na počiatočnej úrovni.