Paralelní procesy, prostředky pro popis paralelních procesů, vlákna

Z FAV wiki
Přejít na: navigace, hledání

· Všechen SW běžící na počítači je organizován jako množina sekvenčních procesů · Proces = běžící program včetně obsahu čítače instrukcí, registrů, proměnných, běží ve vlastní paměti · Koncepčně má každý proces vlastní virtuální CPU

Při pseudoparalelním běhu je v jednu chvíli aktivní pouze jeden proces. Po nějakém čase se OS rozhodne pozastavit běh procesu a spustit běh dalšího. Po dostatečně dlouhém čase všechny procesy vykonají část své činnosti.

Základní stavy procesů Následující stavy procesů se vyskytují ve všech víceúlohových systémech:

   * vytvořený (created) - proces je vytvořen buď příkazem uživatele (u terminálu), nebo na žádost operačního systému o provedení služby, či na žádost jiného procesu (rodiče)
   * připravený (ready) nebo čekající (waiting) - připravený pro vstup do stavu běžící, čeká pouze na přidělení procesoru
   * běžící (running) - procesu je přidělen procesor a právě se provádí příslušné programy
   * blokovaný (blocked) - proces je převeden do tohoto stavu v případě, kdy čeká na dokončení nějaké vstupně-výstupní operace, případně na skončení jiného procesu, uvolnění zdroje, synchronizační primitivum a podobně
   * ukončený (terminated) - proces skončil

činnosti.

Stavy-procesu.jpg

Precedenční grafy · Acyklický orientovaný graf · Běh procesu Pi je vyjádřen orientovanou hranou grafu · Vztahy mezi procesy znázorněny spojením hran

Abstraktní primitiva fork, join a quit · Conway 1963 · Jeden z prvních mechanismů, možnost obecného popisu paralelních aktivit · Funkce primitiv: fork X; provedení primitiva „fork x“ způsobí spuštění nového vlákna od příkazu označeného návěštím x; nové vlákno bude běžet paralelně s původním vláknem. quit; ukončí vlákno join t, Y atomicky provede: t:=t-1; if t = 0 then goto Y; Abstraktní primitiva cobegin a coend · Explicitně specifikuje sekvenci programu, která má být spuštěna paralelně · Cobegin má formát: cobegin C1 || C2 || … || Cn coend · Výsledkem je vytvoření samostatného vlákna pro všechna Ci · Každé Ci běží nezávislé na ostatních vláknech v konstrukci cobegin / coend · Program pokračuje za coend až po skončení posledního Ci

Vlakna � Vlakna v procesu sdileji adresni prostor, otevrene soubory (atributy procesu) � Vlakna maji soukromy citac instrukci, obsah registru, soukromy zasobnik � Mohou mit soukrome lokalni promenne � Puvodne vyuzivana zejmena pro VT vypocty na multiprocesorech (kazd�e vlakno vlastni CPU, spolecna data)

Osobní nástroje
Jmenné prostory
Varianty
Akce
Navigace
Nástroje