Definice procesu: Proces je posloupnost příkazů interpretovaným procesorem a odpovídající posloupnosti stavů.
O existenci procesu má význam mluvit, jen když je dán programový modul Prg a procesor P, který je schopen tento program provést. To znamená, že proces může existovat aniž by byl prováděn.
Proces probíhá tehdy, je-li Prg zpracováván v P.
Proces, který neprobíhá, ale který je již vytvořen, je buď
doposud nezahájen
pozastaven,
nebo ukončen.
Tyto procesy mohou být obnoveny nebo zrušeny.
Probíhat může současně jen tolik procesů, kolik má systém procesorů. Procesy čekající na procesor se nazývají READY - připravené. (Čeká na disk, paměť, procesor.)
Operační systémy u jednoprocesorových systémů mohou zpracovávat současně jenom (podle Flynn-ovy klasifikace)
jeden program - tj. organizace SI - Single Instruction Stream , což plně odpovídá klasické von Neumannově struktuře, nebo
více programů - tj. organizace MI - Multiple Instruction Stream. Při této organizaci říkáme, že OS vytváří virtuální multiprocesory.
Tato organizace je uplatněna obecně u víceprocesorových systémů, tj. u multiprocesorů. Pak může několik procesů probíhat současně, a mohou být , v nejjednodušším případě, na sobě nezávislé, obvykle však dochází ke vzájemné interakci. Ta může probíhat jako
- kooperace (úkol 2 využívá výsledků úkolu 1), nebo
- sdílení společných programových a datových struktur, které mohou být přiřazeny jen současně jen jednomu procesu.
Důležitým případem interakce procesů je vzájemná výlučnost (disjunkce). Příkladem je požadavek dvou procesů o zápis do jednoho datového souboru. Proto musí v systému existovat arbiter, který se stará o přidělování těchto struktur procesorům. Takto zpracovávaným procesům říkáme deterministické vzhledem k času. Existují ale též nedeterministické systémy, kdy např. do datového souboru zapisují oba dva procesory současně. Pak ale výsledek není definován. Určitý stupeň nedeterminismu naopak může urychlit řešení úkolu (např. současné čtení z jednoho souboru).
Komunikace a synchronizace procesů.
Procesy a procesory, které jsou v interakci, musí spolu komunikovat:
- vyměňovat data,
- předávat systému žádosti o přidělení prostředků,
- čekat na jejich potvrzení,
- předávat a přijímat parametry a
- respektovat zadávané uživatelské požadavky.
Proto každá meziprocesorová komunikace musí mít svou paměťovou oblast, přes kterou probíhá. Vytváří se fronta zpráv fungující stejně jako STACK, ale s tím rozdílem, že v případě vyčerpání nebo přeplnění fronty se činnost neobslouženého procesoru pozastaví. K jeho obnovení dojde okamžitě po uvedení obsahu fronty do normálního stavu. Typickým příkladem je tisk na pozadí. K řízení front se používají semafory, tj proměnné typu integer, které mohou provádět dvě speciální operace. (Počet jejich stavů ale nemusí být 2 - např. může udávat počet neobsloužených procesorů.)
Při použití více semaforů se musíme vyhýbat stavům, které navzájem zablokují činnost procesorů v interakci. Tento případ pak lze řešit jedině zásahem zvenčí.
Sdílení základního procesoru v čase je označováno jako multiprogramování. Základní procesor vytváří virtuální multiprocesor a neustále přechází z realizace jednoho virtuálního procesoru k realizaci druhého. Přepínání je založeno na přerušovacím systému.
V podstatě rozlišujeme dva způsoby přepínání procesů:
1. Postupná realizace, kdy je vykonán první proces a po jeho dokončení se procesor přepne na druhý proces. Tento způsob minimalizuje časové ztráty díky přepínaní virt. procesorů. Posloupnost procesů je dána jejich prioritou.
2. Rozvržením realizace jednotlivých procesů do částí, které jsou realizovány tak, aby se minimalizoval čekací čas procesoru, tj. v případě uvedení do stavu WAIT,který nastane v určitém časovém intervalu, nebo po uplynutí tohoto intervalu se procesor přepne na další proces podle priority. Tento způsob má ale větší časové ztráty díky četnosti přepínání, ale ušetřený čas v čekacích režimech je větší, a navíc pomáhá se prosadit procesům s nižší prioritou.
pro programování skalárních multiprocesorů existují
· velmi dlouhé instrukční slovo, tj. pro každý paralelní procesor je v instrukci zahrnut kód jeho instrukce; vyžaduje složitý kompilátor
· každý procesor má svou zvláštní instrukci, odlišenou kódem instrukce. Vyžaduje hardwareové rozdělení. Hardware je složitý.
Základním nedostatkem jednoprocesorových systémů je jejich pomalost, podmíněná způsobem činnosti. Procesor postupně čte instrukční kód, pak operandy a nakonec vykonává přečtenou instrukci a ukládá výsledek. Odstranění těchto nedostatků se provádí zařazením dalších procesorů nebo rozčleněním procesorů na subprocesory. Nejnižším procesorem takto členěným u řady INTEL je I8086.
Architekturu výstavby proces. systémů pomocí subprocesorů a procesorů můžeme podle jejich vzájemných vazeb rozdělit na
- overlapping - přesahování,
- pipelining - řetězení,
- multiprocesory - paralelní soustavy procesorů,
- array processors - procesorová pole neboli maticové procesory a
- distribuované systémy.
Přesahování (overlapping).
Principem overlappingu je dokončování některých instrukcí v době vykonávání další instrukce. Např. u aritmetických operací u I8080, kdy se výsledek operace přesouvá v době vysílaní adresy kódu další instrukce.
Je to vlastně přesahování u procesorů skládajících se ze subprocesorů. Subprocesory pracují současně, každý však na jiné instrukci a v jiné fázi, přičemž výsledek si předávají pomocí společné speciální paměti. U procesoru I8086 je řetězení dvoustupňové mezi subprocesory EU (execution unit) a BU (bus unit) za účasti paměti FIFO - fronta. U procesorů I80386 je již čtyřstupňové.
U víceprocesorových systémů mluvíme o vektorovém počítači. Jeden příkaz tedy počítač směruje současně do jednoho seznamu (vektoru) činností pro procesory navazující na sebe.
Multiprocesor je centrálně řízený systém s více procesory a se společnou hlavní pamětí a perifériemi. Proto se také nazývají multiprocesory se sdílenou pamětí. Typické pro multiprocesory je, že jsou soustředěny kolem jedné sběrnice, která je úzkým hrdlem systému. Multiprocesory jsou určeny na řešení společné úlohy. V obecném případě pro multiprocesory platí tyto zásady:
- řeší jednu úlohu,
- řízení celého systému zajišťuje jeden OS a
- společná data jsou umístěna v hlavní operační paměti.
Zvýšení rychlosti zpracování informace není lineárně závislé na počtu procesorů, je vždy o něco nižší, neboť i u ideálního rozložení je zapotřebí se starat o systémové věci, zejména o arbiter sběrnic. Naopak cena s počtem použitých procesorů v systému narůstá rychleji než jeho výkon.
Předností multiprocesorových systémů je zejména vysoká spolehlivost daná vzájemnou kontrolou, teprve druhořadou výhodou je zvětšení rychlosti (rozvržení úloh není rovnoměrné). Proto se multiprocesory sestavují s procesorů rozdílných funkcí - tzv. koprocesorů. (I80286,I80287,I80289). Koprocesory, které jsou nezávisle programovatelné (I8089) vytvářejí systém s vícenásobným tokem instrukcí a dat (podle Flynna MIMD - Multiply Instruction and Multiply Data Stream -multiprocesory,(tj. program je rozdělen na malé úseky a ke každému jsou přidělena data a zaslána do samostatného procesoru), resp. MISD - Multiply Instruction and Single Data Stream). Kooprocesory, které nemohou mít samostatné programy (I8087) vytváří s hl. procesorem systém s jediným tokem instrukcí SISD nebo SIMD. SISD znamená, že procesor zpracuje na 1 takt jeden příkaz s jednou datovou hodnotou. SIMD pracuje obdobně, ale data jsou rozčleněna pro jednotlivé procesory.
Paralelně postavené procesory mohou být propojeny
- lokální sběrnicí při sdílení společné paměti (I8087, I8089) nebo
- systémovou sběrnicí (např. MULTIBUS) .
U počítačů často nazýváme tuto strukturu jako skalární.
63
7
Odstranění úzkého hrdla - společné sběrnice se řeší nahrazením sběrnice přepínači - crossbar. Pak se může n procesorů propojovat s m sekcemi paměti.
|
seg1
seg2
CPU1 CPU2 CPUN |
Maticové pole subprocesorů je sestaveno ze stejných procesorů navzájem propojených mezi sebou a s centrálním řadičem (procesorem). Každý procesor pole je schopen vykonávat základní operace s daty uloženými v jeho vlastní paměti, ale data se mohou přesouvat mezi sousedy v matici. Vstupní data se zadávají jen do krajních procesorů, které jsou přímo napojeny na lokální nebo systémovou sběrnici. Řadič může poli předávat i shodné povely a data takže procesory mohou vykonávat tutéž operaci s daty na stejné adrese své paměti.
Při velmi rozvětveném programu může klesnout výkonnost celého pole na výkon jednoho procesoru.
Tyto procesory svým zapojením tvoří hyperkrychle. s 2d vrcholů pro d dimenzi. Počet vrcholů s dimenzí narůstá exponenciálně, ale počet hran na je jen d.2d-1, a narůstá s počtem dimenzí jen lineárně. problém je v programování.
Pro maticové procesory se obvykle používají speciální procesory - TRANSPUTERY. Tyto pole mohou pracovat jako SIMD i MIMD.
31
Procesorové pole se odlišuje od paralelního zapojení procesorů, jak již bylo uvedeno, také tím, že každému procesoru je přidělena jeho vlastní paměť. Proto také procesorovým polem je paralelní zapojení multiprocesorů s pevně nebo programově přidělenými pamětmi.
5
Tyto systémy obsahují více procesorů, ale relativně autonomních a obvykle rozptýlených po zařízení nebo zapojených do sítě, takže celkový systém nemá charakter jednoho počítače, ale sítě počítačů. Jedno z možných použití jsou databázové procesory.
Kromě těchto základních řazení procesorů je řada specielních procesorových sestav. Podle podílu hardware a software jsou to např.:
- Data Flow Computers - počítače řízené tokem dat. Tyto počítače jsou jednoúčelové, často pro řešení jedné úlohy s různými vstupními daty, a tedy jsou v podstatě řešeny hardwarově, což umožňuje časově přizpůsobit řešení počítače tak, aby zpracování dat bylo plynulé bez stavů WAIT. Programově lze pouze modifikovat řešenou úlohu.
- Asociativní procesory, jejichž odlišností je výběr dat z paměti. Tyto data jsou vyhledávána nikoliv podle adresy, ale podle určitých vlastností. To znamená, že se komparuje obsah buněk ve speciálních obvodech podle programu a to jednotlivě nebo současně po celých blocích. Tento systém umožňuje rychlé zpracování velkého množství dat. Vybraná data jsou pak dále procesorem zpracovávvána.
-.Systolické počítače jsou čistě hardwarové systémy určené pro zpracování jednoho typu úloh (např. řešení soustav lineárních rovnic). Počítače tvoří síť a každý počítač je schopen řešit jednu poměrně jednoduchou úlohu.