Přepínání kontextu

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 31. ledna 2019; kontroly vyžadují 7 úprav .

Kontextové přepínání ( anglicky  context switch ) - v multitaskingových OS a prostředích - proces ukončení provádění jedné úlohy (procesu, vlákna, vlákna) procesorem při zachování všech potřebných informací a stavu nutných pro následné pokračování z přerušeného místa a obnovení a načtení stavu úlohy, který má být proveden procesorem.

Procedura přepínání kontextu zahrnuje tzv. plánování úloh  - proces rozhodování, na kterou úlohu přenést řízení.

Popis

Přepínač kontextu uloží a obnoví následující informace:

V jádře OS jsou ke každému vláknu přidruženy následující struktury:

Přepínání kontextu a výkon

Kromě toho, což je velmi důležité, během přepínání kontextu dochází k následujícím softwarově neviditelným hardwarovým akcím, které ovlivňují výkon:

Kromě toho je třeba vzít v úvahu následující skutečnosti, které ovlivňují stav systému:

Přepínání kontextu a OS

Z hlediska aplikační vrstvy lze přepínání kontextu rozdělit na dobrovolné (dobrovolné) a vynucené (nedobrovolné): běžící proces/vlákno může sám přenést řízení na jiné vlákno, nebo jej může jádro násilně odebrat. to.

  1. Když vyprší časové kvantum, jádro operačního systému může převzít kontrolu z běžícího procesu/vlákna. Z pohledu programátora to znamená, že řízení mohlo uniknout vláknu v „nejhorší“ chvíli, kdy by datové struktury mohly být v nekonzistentním stavu, protože nebyla dokončena jejich úprava.
  2. Proveďte blokovací systémové volání . Když aplikace provádí I/O, může se jádro rozhodnout, že může předat řízení jinému vláknu/procesu, zatímco čeká na dokončení diskového nebo síťového I/O požadovaného tímto vláknem. Tato možnost je nejproduktivnější.
  3. Synchronizační primitiva jádra. Mutexy , semafory atd. To je hlavní zdroj problémů s výkonem. Nedostatečně promyšlená práce se synchronizačními primitivy může vést k desítkám tisíc a ve zvláště opomíjených případech až ke stovkám tisíců přepnutí kontextu za sekundu.
  4. Systémové volání, které explicitně čeká na událost (výběr, dotaz, epoll, pauza, čekání, ...) nebo časový bod (spánek, nanospánek, ...). Tato možnost je relativně produktivní, protože jádro OS má informace o čekajících procesech.

Vlastnosti procedury plánovače

Rozdíl mezi operačním systémem v reálném čase a operačním systémem se sdílením času je nejzřetelněji vidět v rozdílu v logice plánování pro kontextové přepínače: Plánovač systému se sdílením času se snaží maximalizovat výkon celého systému, možná na úkor výkonu jednotlivé procesy. Úkolem systémového plánovače v reálném čase je zajistit, aby jednotlivé kritické procesy probíhaly prioritně, bez ohledu na to, jak velká je režie pro zbytek systému jako celku.

Implementace přepínání kontextu v moderních operačních systémech

Jak je patrné z výše uvedeného, ​​přepínání kontextu je operace velmi náročná na zdroje a čím je procesor „vychytanější“, tím je tato operace náročnější na zdroje. Na základě toho jádro používá řadu strategií, aby za prvé snížilo počet přepínání kontextu a za druhé, aby přepínání kontextu bylo méně náročné na zdroje.

Metody, jak snížit počet kontextových přepínačů:

Metody pro snížení náročnosti zdrojů přepínání kontextu:

Výše uvedené příklady se týkají linuxového jádra , nicméně podobné metody používají i jiné operační systémy, i když v případě proprietárních OS je problematické toto použití dokázat/vyvrátit.

Terminologické poznámky

Odkazy