Paralelní procesy, prostředky pro popis paralelních procesů, vlákna
· 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.
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)
