Multitasking

Operační systém je multitasking (v angličtině  : Multitasking ) v případě, že může hrát, zřejmě současně několik počítačových programů . Mluvíme také o multiprogramování .

Tato funkce je nezávislá na počtu procesorů fyzicky přítomných v počítači ( pro provozování víceúlohového operačního systému není nutný víceprocesorový systém).

Pojem

Zdánlivá simultánnost je výsledkem rychlého střídání provádění procesů přítomných v paměti . Průběh provádění z jednoho procesu do druhého se nazývá přepínání kontextu . Tyto přepínače mohou být inicializovány samotnými programy (kooperativní multitasking) nebo operačním systémem během externích událostí (preemptivní multitasking).

Historický

První multitasking počítač na světě byl navržen firmou Bull v roce 1958 . Byla to Gamma 60 . Tento počítač však ještě neměl programovací jazyk, který by odpovídal výkonu operačního systému .

Systémy multitaskingu se poté v průběhu 60. let rozšířily ve dvojím provedení:

Kooperativní multitasking

Kooperativní multitasking je jednoduchá forma multitaskingu, kdy každý úkol musí explicitně umožnit spuštění dalších úkolů. Používal se například v produktech Microsoft Windows do Windows 3.11 nebo v Mac OS do Mac OS 9 . Tento přístup zjednodušuje architekturu operačního systému, ale má několik nevýhod:

Preventivní multitasking

K nápravě této situace se spotřebitelské systémy vyvinuly tak, aby používaly přístup zvaný „  preventivní multitasking  “.
V takovém systému procesor signalizuje operačnímu systému, že spuštěný proces musí být pozastaven, aby umožnil spuštění jiného procesu. Systém poté musí uložit stav aktuálního procesu (pořadové počítadlo, hodnoty registrů); proces je umístěn do fronty; když je na konci fronty, obnoví se kontext jejího provádění. Na rozdíl od „kooperativního multitaskingu“ je z pohledu preempted programů přepínání kontextu transparentní.

Unix ( 1969 ) a jeho deriváty ( BSD v roce 1977 , Linux v roce 1991 , ...) jsou systémy založené na preventivním multitaskingu.

Sinclair QDOS ( 1984 ), AmigaOS ( 1985 ), NeXTSTEP ( 1989 ) nebo BeOS ( 1991 ) jsou preventivní multitaskingové systémy od jejich narození. Ostatní operační systémy se tak staly, například Windows (s Windows NT 3.1 v roce 1993 pro profesionály a Windows 95 v roce 1995 pro širokou veřejnost) a Mac OS X v roce 2001 .

Speciální případy

Případ Windows 95 (stejně jako Windows 98 a ME) je zvláště v kontextu multitaskingu. Tyto systémy skutečně obsahují „hybridní“ multitasking, v některých případech fungující v preventivním multitaskingu, v jiných v kooperativním multitaskingu. Návrh těchto operačních systémů byl ve skutečnosti řízen potřebou spouštět programy určené pro Windows 3.X (kooperativní multitasking) souběžně se spustitelnými soubory určenými výhradně pro Windows NT / 95 (preemptivní multitasking). Protože programy určené pro kooperativní multitaskingový systém nemohou nativně běžet v preventivním režimu (z důvodu kompatibility se starším softwarem), plánovač Windows byl proto navržen tak, aby během provádění deaktivoval preventivní režim. Kód "cooperative". Tímto způsobem bude jakýkoli spustitelný soubor / knihovna navržená pro Windows 3.1 fungovat pod Windows 95 v kooperativním režimu a jakýkoli spustitelný soubor / knihovna navržená výhradně pro Windows 95 / NT bude fungovat v preventivním režimu.

Účinky tohoto hybridního multitaskingu lze pozorovat při použití spustitelných souborů / knihoven zkompilovaných na jedné straně pro Windows 3.X (Win16) a na druhé straně pro Windows 95 / NT (Win32). Vezměme si například případ spustitelného souboru, jehož kód byl navržen tak, aby se zasekl v nekonečné smyčce. Pokud je nekonečná smyčka umístěna do spustitelného souboru Win32 a program je spuštěn, zůstává Windows responzivní a stále je možné paralelně používat další programy (nekonečnou smyčku proto systém předjímá). Pokud je nekonečná smyčka umístěna do spustitelného souboru Win16 a program je spuštěn, zůstane Windows „zamrzlý“ stejně jako všechny dříve spuštěné programy a pouze akce ctrl + alt + delete umožní systému „obnovit“. V tomto režimu již systém nepředpokládá a čeká, až program vrátí řízení. Několik programů Win32 využívá během své činnosti knihovny Win16, čímž je jejich provoz zcela „hybridní“: preventivní při provádění kódu Win32 a kooperativní při provádění knihovny Win16, systém zajišťuje transparentní přechod z jednoho režimu do druhého.

Tato zvláštnost se nevztahuje na Windows NT / 2000 / XP, které používají virtualizační systém (Win16 na Win32 / WoW) k provádění stejných operací.

Srovnání

Multitasking je robustnější než kooperativní multitasking: úloha může zablokovat celý systém. Operační systém může také efektivněji využívat dostupné zdroje, například pokud jsou data k dispozici prostřednictvím vstupního zařízení , lze okamžitě aktivovat proces zpracování těchto dat.

Úkol čekající na data navíc nebude spotřebovávat čas procesoru, dokud nebudou jeho data skutečně k dispozici.

Ačkoli byl multitasking původně navržen tak, aby umožnil více uživatelům používat stejný počítač, brzy se ukázalo, že je to velmi výhodné i pro jednoho uživatele. Používání vašeho oblíbeného textového procesoru při procházení webu je dnes funkce, kterou musíte mít.

Další užitečnost multitaskingu vychází ze skutečnosti, že je jednodušší navrhnout a napsat několik jednoduchých programů, než jediný program, který zvládne vše, a poté je nechat spolupracovat při provádění nezbytných úkolů.

Tyto algoritmy Prováděcí multitasking byly upřesněny v průběhu času. Moderní systémy zvládnou procesy s různými prioritami i počítače s jednou až několika stovkami procesorů .

Technologie světelných procesů ( anglicky  : threads ) byla povolena díky přítomnosti pokročilých správců paměti . Tenké procesy sdílejí celou nebo část paměti existujícího procesu. Toto sdílení mimo jiné umožňuje rychlejší přepínání kontextu a efektivnější sdílení dat mezi lehkými procesy. Na druhou stranu mohou být takové programy složitější a může být obtížné je rozvíjet.

Další klíčovou inovací bylo zavedení úrovní oprávnění  : procesy s nízkou úrovní oprávnění nemohou provádět určité operace, například zápis do částí paměti životně důležitých pro zabezpečení systému.

Pokud takový proces provede zakázanou operaci, program se přeruší a supervizní program (často operační systém ) preempuje současný proces a poté jej trvale ukončí. Tato technika umožňuje vytvářet virtuální stroje, kde „skutečný“ systém emuluje činnost jednoho nebo více virtuálních strojů, například za účelem zvýšení bezpečnosti (virtuální stroj nemůže zasahovat do jiného virtuálního stroje).

Reference

  1. Great Burroughs systems  (in)
  2. http://www.computinghistory.org.uk/det/15671/GE-635-System-Manual/

Podívejte se také