multitasking

Pojem multitasking [ ˌmʌltitɑːskɪŋ ] ( angl. ) Nebo Multiprocess označuje schopnost operačního systému provádět několik úkolů ( úkolů ) (kvazis) souběžně . Obecně procesor také pro tento účel nabízí podpůrné hardwarové struktury. Různé procesy se aktivují střídavě v tak krátkých intervalech, že vzniká dojem simultánnosti. Multitasking je tedy variantou metody multiplexu s časovým dělením . Pokud má počítač několik jader CPU, takže může ve skutečnosti provádět několik úkolů současně , hovoří se o multiprocesu . Obě metody se používají v kombinaci v moderních počítačích.

Účel multitaskingu

Multitasking může být užitečný pro různé požadavky, zejména při optimalizaci pracovní zátěže a pro vyvážené nebo prioritní rozdělení zdrojů v závislosti na cíli .

Základní myšlenkou „optimalizace zátěže“ je, že většinu výpočetního času v průměrném počítači nelze použít, protože je často nutné čekat na relativně pomalé externí události (například další stisknutí klávesy uživatelem) . Pokud by byl spuštěn pouze jeden proces (například zpracování čekajícího textu), tato čekací doba by byla ztracena zcela nevyužita (viz „ aktivní čekání “). Prostřednictvím multitaskingu však čekací dobu jednoho procesu mohou využít i jiné procesy.

Pokud je naopak počítač nebo jeho výpočetní čas z velké části využíván, například jednotlivými výpočetně náročnými procesy, může několik uživatelů nebo procesů stále získat část výpočetního času, místo aby museli čekat na konec jiného procesu. To je zvláště výhodné pro interaktivitu.

Protože systém může současně zohledňovat priority pro různé procesy, je v závislosti na cíli možná odpovídající váha. Server může například upřednostňovat služby, které má nabízet, ale upřednostňovat přímé interakce uživatelů s nízkou prioritou. Naopak stolní počítač bude upřednostňovat vstup a výstup od / k uživateli a odloží kvůli tomu procesy na pozadí.

Předchůdce a vývoj

Multiprogramování a TSR programy

Předchůdcem multitaskingu je multiprogramování s cílem vyššího využití CPU na rozdíl od sekvenčního provádění úloh s dávkovým zpracováním . Při multiprogramování dochází ke změně kontextu programů s přístupem k periferním zařízením, protože to nevyhnutelně vede k čekací době. První přístupy vycházejí z konceptu Christophera Stracheye z roku 1959. Takové koncepce však bylo možné uvést do praxe pouze s vysoce výkonným hardwarem, ve kterém řízení přerušení umožňovalo vývoj programů TSR .

Obecný postup

Technický proces pro více úkolů je v zásadě vždy stejný.

Důležitým základním požadavkem multitaskingu je obecně to, že proces, který je přerušen ve prospěch jiného, ​​nemusí o tomto jiném (nebo možná několika dalších) „vědět“ nic. Toho je obvykle dosaženo tím, že každý proces má svůj vlastní takzvaný kontext procesu, který popisuje jeho stav. Proces pouze někdy mění svůj vlastní procesní kontext, nikdy ne jiný proces.

Obvykle se celý kontext procesu (stav procesu) uloží, když je přerušen, např. B. na hromádce ( anglický stoh ). Zůstává uložen, dokud příslušný proces znovu neobdrží výpočetní čas. Bezprostředně předtím, než se tento proces stane znovu aktivním, se uložený stav znovu načte, aby se procesu jevil, jako by nebyl vůbec přerušen; bez ohledu na to, zda, kolik a jaké procesy byly mezitím provedeny. Toto přepínání mezi jednotlivými procesy se označuje jako „přepínání úloh “.

Tímto způsobem může proces znovu najít své definované prostředí, když pokračuje v běhu i po přerušení, i když mezitím byly spuštěny jiné procesy.

V kooperativním multitaskingu je změna úkolu velmi podobná volání procedur nebo funkcí v procedurálním programování .

Kooperativní multitasking

U „kooperativního multitaskingu“ je multitasking implementován centrální správou procesů v systémovém jádře: jednoduchým, takzvaným plánovačem . Plánovač uloží kontext procesu právě přerušeného úkolu, vybere další proces, který má obdržet výpočetní čas, vytvoří jeho kontext procesu a poté přenese procesor do tohoto nového procesu. Plánovač může udržovat seznamy s různými prioritami úkolů a podle toho jen zřídka volat úkoly s nízkou prioritou. Lze také vzít v úvahu výpočetní čas, který již úkol používá. Úkoly interní v operačním systému se zpravidla provádějí nejprve před přijetím nového úkolu procesorem. Je na každém procesu, aby rozhodl, kdy vrátí řízení jádru; Se změnou úkolu je zpravidla spojen alespoň každý požadavek na službu operačního systému.

Výhodou této metody je, že mnoho funkcí systému (např. Výstup) nemusí být znovu zadáno, a proto nemusí být synchronizováno, což pro výrobce znamená značné zjednodušení. ( Tento problém však musí vždy vyřešit rutiny přerušení .) Tato forma multitaskingu, podobně jako koncept TSR, má tu nevýhodu, že programy, které nespolupracují, zastaví zbytek systému. Důvody pro takové chování programu mohou být:

  • chyby obsažené v programu;
  • porucha systému zamýšleného programátorem;
  • Úmyslné (výhodné) „výhradní ovládání“ programu, například u časově kritické aplikace, jako je počítačová hra.

Byl použit například koncept

Tato forma multitaskingu je v zásadě rychlá a šetří zdroje a je technicky relativně snadno implementovatelná. Nikdy to nebyla životaschopná alternativa pro víceuživatelské sálové počítače. B. nikdy nepoužíván pod Unixem , protože jeden uživatel mohl zablokovat všechny ostatní pomocí nespolupracujícího programu. Ani v novějších operačních systémech Windows řady NT a v Mac OS X se tato technologie, která je nyní považována za zastaralou, nepoužívá. Někdy podporují podobnou funkčnost v omezené míře, například jako vlákna uživatelského režimu , ale v každém případě jsou vloženy pouze do preemptivního multitaskingu.

Preemptivní multitasking

Základem dnes standardně používané metody je preemptivní multitasking :

Aktuálně pracující proces po určité době zpracování (jeho „ časový úsek “ a časový úsek , angl. Timeslice ) přerušením přerušil hardwarový časovač. Přerušení služby rutina (součástí operačního systému) přeruší proces a uloží jeho kontext procesu - proces je „uspat“; poté jej předá plánovači - operační systém (opět) získal kontrolu. Pokud neexistuje proces specifický pro operační systém, plánovač nyní vybere proces, který je připraven ke spuštění (případně stejný, který byl právě přerušen), obnoví kontext procesu, spustí hardwarový časovač a poté jej přenese do procesu.

Obvykle je každému procesu přiřazen „absolutní“ časový úsek (všechny časové úseky mají stejné, pevné trvání; obvykle několik milisekund); alternativně je mu přiděleno určité procento z této časové jednotky na definovanou časovou jednotku (např. v závislosti na jeho prioritě), kterou může maximálně použít (délka časového úseku je tedy pokaždé určena znovu). Pokud potřebuje funkci operačního systému před vypršením časového úseku, je okamžitě zastaven a označen jako „není připraven ke zpracování“, dokud operační systém neposkytne požadovanou službu. Přidělení času procesoru je dáno pouze procesům označeným jako „připravené k výpočtu“.

Volba dalšího postupu

Je populární implementace preemptivní multitasking s použitím prioritní fronty spojené s každý s každým - plánování strategie . Existuje také přidělení procesoru v závislosti na prioritě úlohy , zejména v systémech v reálném čase z. B. MicroC / OS-II . Toto hraje pouze podřízenou roli pro více úkolů, protože preemptivní multitasking popisuje řízení jádra nebo procesoru nad procesy.

Nezbytná podpora hardwaru

Na straně hardwaru , na rozdíl od kooperativní varianty (viz program TSR jako předchůdce) , preemptivní multitasking vyžaduje generátor přerušení (obvykle časovač ) v příslušném procesoru, protože systém nemá způsob, jak odebrat řízení procesorů z procesů . Časovač vysílá signál ( přerušení ) CPU pravidelně nebo po uplynutí nastaveného času , což způsobí, že přeruší aktuálně spuštěnou úlohu a spustí rutinu služby přerušení operačního systému.

Ochrana paměti

Moderní operační systémy také pracují s ochranou paměti, která zabraňuje vzájemnému ovlivňování nebo dokonce přepisování různých procesů v paměti. Tuto ochrannou funkci přebírá jednotka správy paměti (MMU) v PC , která umožňuje virtualizaci hlavní paměti a různé úrovně autorizace (prstence) nebo režimy (režim jádra versus režim uživatele) a umožňuje tak operačnímu systému provádět různé paralelní procesy uvnitř počítače navzájem přísně zapouzdřeny. V PC byla MMU poprvé použita v počítačích s procesory i286 od Intelu. Tato technika však není nezbytná pro multitasking v užším slova smyslu.

příběh

Prvními rozšířenými počítačovými systémy, které zvládly preemptivní multitasking, byly Sinclair QL (1984) a Commodore Amiga (1985) doma (Amiga bez ochrany / privilegií paměti, a tedy „lze ji využít“), stejně jako mainframové systémy provozované pod Unixem . Poprvé ve verzích 3.x Windows částečně zvládá preventivní multitasking, ale pouze pro programy DOS a pouze pokud jsou spuštěny v systému s procesorem kompatibilním s i386 , protože to v takových případech umožňuje hardwarovou virtualizaci . Moderní operační systémy, které plně podporují preemptivní multitasking, jsou Windows NT (a všichni následníci), QNX , BeOS a všechny unixové systémy jako Linux , HP-UX , Solaris , macOS a mnoho dalších

Rozlišování od sdílení času

Kromě toho je třeba rozlišovat mezi krájením času a sdílením času ; druhý umožňuje několika uživatelům nebo jejich procesům (např. Na databázových serverech nebo sálových počítačích s přístupem k terminálu) automaticky proporcionálně sdílet dostupný výpočetní čas. Takže zatímco s multitaskingem může několik procesů od jednoho uživatele sdílet výpočetní čas, s časovým sdílením je čas procesu rozdělen mezi několik uživatelů.

Preemptible multitasking

Speciální formou preemptivního multitaskingu je méně známý preemptible multitasking (anglicky spelling Preemptible Multitasking ), který byl poprvé implementován v operačním systému OS / 2 . Mnoho vlastních rutin jádra operačního systému je spuštěno jako vlákna plánovače; To znamená, že aplikační procesy mohou také přijímat časové intervaly, zatímco je skutečně prováděna akce operačního systému (s výjimkou procesů atomického OS). Koncept umožňuje rychlejší reakční časy. S verzí 2.6 si také našel cestu do linuxového jádra .

Viz také

literatura

  • C. Strachey: Sdílení času ve velkých rychlých počítačích. Sborník příspěvků z mezinárodní konference o zpracování informací. UNESCO, 1959.
  • Klaus D. Thies: Multitasking v reálném čase: Jádro - základní úvod do paralelního programování systému. Shaker-Verlag, Aachen, ISBN 978-3832248673 .

webové odkazy

Wikislovník: Multitasking  - vysvětlení významů, původ slov, synonyma, překlady

Individuální důkazy

  1. z článku Timesharing , in: Meyers Taschenlexikon ve 24 svazcích (BI Taschenbuchverlag) -Meyer výslovně uvádí časové úseky v provozu více uživatelů ( MS Encarta World Atlas také odkazuje na víceuživatelské operace v „sdílení času“).
  2. Präempti bl on Kernel Linux 2.6 , from http://articles.tutorialonline.biz/, accessed 14. září 2012.
  3. Informace na www.jakoxx.de ( Memento z 15. srpna 2009 v internetovém archivu ).