Jak přepínání kontextu vytváří iluzi multitaskingu

9

Streamujete hudbu, stahujete soubor a píšete kód na pozadí. Zdá se, že se to všechno děje najednou. Ve skutečnosti to není pravda.

Váš procesor zvládá tyto úkoly s chirurgickou přesností a přepíná mezi nimi tisíckrát za sekundu. Tento kouzelný trik se nazývá přepínání kontextu. Bez něj by váš počítač zamrzl před dokončením jediného úkolu. Museli byste počkat, až se stránka načte, než budete moci zkontrolovat svůj e-mail.

Přepínání kontextu je mechanismus, který umožňuje operačnímu systému spravovat více procesů bez potřeby dalšího hardwaru. Udržuje iluzi paralelismu rozdělením času do mikroskopických intervalů.

Mechanika přepínání kontextu

V jádru je přepínání kontextu o uložení a obnovení stavu.

Když se procesor přepne z úlohy A do úlohy B, musí si pamatovat, kde se úloha A zastavila. Jinak, když se k němu vrátí, nebude vědět, kterou instrukci má provést jako další. Tento uložený stav je „kontext“.

Dva hlavní registry obsahují kritická data:

  • Program Counter: Udává přesnou adresu paměti další instrukce, která má být provedena. Jakmile jej uložíte, víte, kde znovu začít pracovat.
  • Registry: Obsahují dočasná data a aktuální příkazy. Zachycují snímek „mentálního stavu“ procesoru v daném konkrétním okamžiku.

Na starších počítačích to byla často operace na úrovni hardwaru. Tuto výměnu provedly fyzické obvody. Dnes většina moderních procesorů používá softwarově řízené kontextové přepínače. Tato flexibilita umožňuje jedinému procesoru provádět stovky takovýchto přepínačů za sekundu. Výsledek? Zažijete několik paralelně běžících aplikací, i když procesor technicky střídá jejich spouštění závratnou rychlostí.

Proč je přepínání kontextu důležité

Proč operační systém potřebuje tuto složitost?

Protože zdroje jsou omezené. Nemáte vyhrazený procesor pro každý proces na pozadí. Místo toho máte jedno (nebo více) jader sdílející pracovní zátěž. Přepínání kontextu umožňuje multitasking na omezeném hardwaru.

Není to jen o spuštění více aplikací. To je také nezbytné pro stabilitu a odezvu systému.

Zvažte následující scénáře:

Požadavky na multitasking

Když přepnete karty v prohlížeči, procesor pozastaví aktuální proces, uloží jeho stav a načte stav nového procesu. Bez toho by přepínání oken vyžadovalo čekání na dokončení aktuální aplikace.

Přepínání mezi režimem jádra a uživatelem

Vaše aplikace běží z důvodu zabezpečení v „uživatelském režimu“. Systémové úlohy se provádějí v „režimu jádra“. Když aplikace něco požaduje od operačního systému (například přístup k souboru), musí procesor přepnout režimy. Tento přechod často zahrnuje přepnutí kontextu, aby bylo zajištěno, že jádro má správná data a aplikace může poté plynule pokračovat.

Obsluha přerušení

Čtení z disku není okamžité. Když váš procesor požaduje data z vašeho pevného disku, není nečinný. Během čekání se přepne na jiný úkol. Jakmile data dorazí, přerušení signalizuje procesoru, aby se vrátil zpět, obnovil předchozí stav a zpracoval příchozí bajty.

Skrytá cena

Přepínání kontextu není levné.

Pokaždé, když procesor změní kontext, stráví cykly ukládáním a načítáním dat. Vymaže také mezipaměť procesoru, což může zpomalit výkon, pokud k tomu dochází příliš často. Pokud váš systém přepíná kontexty příliš často, zaznamenáte zpoždění. Procesor je zaneprázdněn správou úloh, nikoli jejich prováděním.

Proto je důležité efektivní plánování úkolů. Čím lépe operační systém tyto přepínače zvládá, tím hladší bude váš zážitek.

Takže až se příště bude zdát, že váš počítač zvládne vše najednou, pamatujte: není to žádná magie. Je to rychlá série výměn, uložení a obnovení. Procesor nikdy neprovádí úkoly skutečně paralelně. Je prostě opravdu dobrý v přepínání věcí.

A pokračuje.