OBSAH WEBU
ČTĚTE!
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
temata:35-planovani_synchronizace:main [2011/03/25 18:56] george [Modelování synchronizačních problémů] |
temata:35-planovani_synchronizace:main [2012/02/27 21:13] (aktuální) conyx [35 - Plánování a synchronizace procesů, transakce] |
||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
- | ====== Plánování a synchronizace procesů, transakce ====== | + | ====== 35 - Plánování a synchronizace procesů, transakce ====== |
+ | ~~ODT~~ | ||
Plánování procesů je jeden z úkolů operačního systému. Týká se systémů s více současně běžícími procesy, které podporují multitasking (schopnost provádět více úloh současně). Plánování řeší výběr procesů, kterým má být aktuálně přidělen procesor a pamět. V oblastech operačních systémů se setkáváme s oblastí __správy procesů__ (process managmentú, který zahrnuje: | Plánování procesů je jeden z úkolů operačního systému. Týká se systémů s více současně běžícími procesy, které podporují multitasking (schopnost provádět více úloh současně). Plánování řeší výběr procesů, kterým má být aktuálně přidělen procesor a pamět. V oblastech operačních systémů se setkáváme s oblastí __správy procesů__ (process managmentú, který zahrnuje: | ||
* plánovač (scheduler), který přiděluje CPU procesům | * plánovač (scheduler), který přiděluje CPU procesům | ||
Řádek 18: | Řádek 18: | ||
{{:temata:35-planovani_synchronizace:stavy.png|}} | {{:temata:35-planovani_synchronizace:stavy.png|}} | ||
- | V OS bývá proces reprezentován strukturou **PTB** (Process control block), která zahrnuje: | + | V OS bývá proces reprezentován strukturou **PCB** (Process control block), která zahrnuje: |
* identifikátor procesu | * identifikátor procesu | ||
* stav plánování procesu | * stav plánování procesu | ||
Řádek 70: | Řádek 70: | ||
* je zapotřebí se vyhnout | * je zapotřebí se vyhnout | ||
* **uváznutí (deadlock)** - situace, kdy každý ze skupiny procesů čeká na uvolnění zdrojje s výlučným (omezeným) přístupem vlastněným nějakým procesem z dané skupiny | * **uváznutí (deadlock)** - situace, kdy každý ze skupiny procesů čeká na uvolnění zdrojje s výlučným (omezeným) přístupem vlastněným nějakým procesem z dané skupiny | ||
+ | {{:temata:35-planovani_synchronizace:deadlock.png|}} | ||
+ | |||
* **bloknutí (blocking)** - situace, kdy proces, jenž žádá o vstup do KS, musí čekat, přestože KS je volná (tj. žádný proces se v ní nenachází) a ani o žádnou z dané množiny sdílených KS žádný další proces nežádá | * **bloknutí (blocking)** - situace, kdy proces, jenž žádá o vstup do KS, musí čekat, přestože KS je volná (tj. žádný proces se v ní nenachází) a ani o žádnou z dané množiny sdílených KS žádný další proces nežádá | ||
* **stárnutí (hladovění, starvarion)** - situace, kdy proces čeká na podmínku, která nemusí nastat | * **stárnutí (hladovění, starvarion)** - situace, kdy proces čeká na podmínku, která nemusí nastat | ||
Zvláštním případem stárnuí je **livelock**, kdy všechny procesy z určité množiny běží, ale provadějí jen omezený úsek kódu, které by mohly opustit jen tehdy, kdyby získaly zdroj vlastněný některým z procesů dané skupiny. | Zvláštním případem stárnuí je **livelock**, kdy všechny procesy z určité množiny běží, ale provadějí jen omezený úsek kódu, které by mohly opustit jen tehdy, kdyby získaly zdroj vlastněný některým z procesů dané skupiny. | ||
+ | {{:temata:35-planovani_synchronizace:livelock.png|}} | ||
- | == Petersonů algoritmus == | + | == Petersonův algoritmus == |
Možné řešení problému KS pro 2 procesy (existuje i jeho zobecnění pro n procesů). | Možné řešení problému KS pro 2 procesy (existuje i jeho zobecnění pro n procesů). | ||
- | <code> | + | <code c> |
bool flag[2] = {false, false}; | bool flag[2] = {false, false}; | ||
int turn = 0; | int turn = 0; | ||
Řádek 334: | Řádek 337: | ||
- | == Problém věřících filozofů == | + | == Problém večeřících filozofů == |
{{:temata:35-planovani_synchronizace:filozofove.png|}} | {{:temata:35-planovani_synchronizace:filozofove.png|}} | ||