Co je to přepínání kontextu v operačním systému?
V operačním systému existují případy, kdy je třeba vrátit proces, který je ve stavu běhu, do jiného stavu, například do stavu připravenosti nebo do stavu čekání/blokování. Pokud chce běžící proces provést nějakou vstupně-výstupní operaci, musíte proces odebrat z běžícího stavu a poté jej zařadit do vstupně-výstupní fronty. Někdy může proces používat algoritmus kruhového plánování, kdy se po každém pevně stanoveném časovém kvantu musí proces vrátit z běžícího stavu zpět do stavu připravenosti. Tato přepínání procesů se tedy provádějí pomocí přepínání kontextu. V tomto blogu se seznámíme s konceptem přepínání kontextu v operačním systému a dozvíme se také o výhodách a nevýhodách přepínání kontextu. Začněme tedy.
Co je to Přepínání kontextu?
Přepínání kontextu je proces, který zahrnuje přepnutí procesoru z jednoho procesu nebo úlohy na jiný. Při tomto jevu je vykonávání procesu, který se nachází ve stavu běhu, jádrem pozastaveno a procesor vykonává jiný proces, který se nachází ve stavu připravenosti.
Jedná se o jednu ze základních funkcí operačního systému s více úlohami. Procesy se přepínají tak rychle, že to u uživatele vyvolává iluzi, že jsou všechny procesy vykonávány současně.
Proces přepínání kontextu však zahrnoval řadu kroků, které je třeba provést. Nelze přímo přepnout proces z běžícího stavu do stavu připravenosti. Musíte uložit kontext tohoto procesu. Pokud neuložíte kontext některého procesu P, pak po určité době, kdy proces P přijde do procesoru k opětovnému spuštění, se proces začne vykonávat od začátku. Ve skutečnosti by však měl pokračovat od toho bodu, kde opustil CPU při svém předchozím provádění. Kontext procesu by tedy měl být uložen před uvedením jakéhokoli jiného procesu do stavu běhu.
Kontext je obsah registrů procesoru a programového čítače v libovolném okamžiku. K přepínání kontextu může dojít z následujících důvodů:
- Když se proces s vysokou prioritou dostane do stavu připravenosti. V takovém případě by mělo být provádění běžícího procesu zastaveno a proces s vyšší prioritou by měl být předán procesoru k provedení.
- Když dojde k přerušení, pak by měl být proces v běžícím stavu zastaven a procesor by měl přerušení zpracovat, než začne dělat něco jiného.
- Když je vyžadován přechod mezi uživatelským režimem a režimem jádra, pak je třeba provést přepnutí kontextu.
Kroky spojené s přepínáním kontextu
Proces přepínání kontextu zahrnuje řadu kroků. Následující diagram znázorňuje proces přepínání kontextu mezi dvěma procesy P1 a P2.
Na výše uvedeném obrázku vidíte, že zpočátku je proces P1 ve stavu spuštění a proces P2 ve stavu připravenosti. Nyní, když dojde k nějakému přerušení, pak je třeba po uložení kontextu přepnout proces P1 z běžícího stavu do stavu připravenosti a proces P2 ze stavu připravenosti do běžícího stavu. Budou provedeny následující kroky:
- Nejprve bude kontext procesu P1, tj. procesu přítomného v běžícím stavu, uložen do bloku řízení procesu P1, tj. do PCB1.
- Nyní musíte přesunout PCB1 do příslušné fronty, tj. do fronty připravenosti.
- Ze stavu připravenosti vyberte nový proces, který má být spuštěn, tj. proces P2.
- Nyní aktualizujte blok řízení procesu P2, tj. PCB2, nastavením stavu procesu na běžící. Pokud byl proces P2 dříve proveden procesorem, pak můžete získat pozici poslední provedené instrukce, abyste mohli obnovit provádění procesu P2.
- Podobně, pokud chcete znovu provést proces P1, pak musíte postupovat stejně, jak je uvedeno výše (od kroku 1 do 4).
Pro přepínání kontextu jsou obecně zapotřebí alespoň dva procesy a v případě algoritmu round-robin můžete přepínání kontextu provádět pouze pomocí jednoho procesu.
Čas potřebný k přepnutí kontextu jednoho procesu druhým se nazývá doba přepnutí kontextu.
Výhoda přepínání kontextu
Přepínání kontextu se používá k dosažení multitaskingu, tj. víceprogramování se sdílením času (více o multitaskingu se dozvíte zde). Multitasking vytváří u uživatelů iluzi, že se současně vykonává více procesů. Ve skutečnosti však procesor v daném časovém okamžiku vykonává pouze jednu úlohu. Přepínání kontextu je zde tak rychlé, že uživatel má pocit, že procesor vykonává více úloh najednou.
Nevýhoda přepínání kontextu
Nevýhodou přepínání kontextu je, že vyžaduje určitý čas na přepnutí kontextu, tj. čas přepnutí kontextu. Čas je zapotřebí k uložení kontextu jednoho procesu, který je v běžícím stavu, a následnému získání kontextu jiného procesu, který se chystá vstoupit do běžícího stavu. Během této doby nevykonává procesor z pohledu uživatele žádnou užitečnou práci. Přepínání kontextu je tedy v tomto stavu čistá režie.
To je pro tento blog vše. Doufám, že se vám tento blog líbil.