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:49] ofeig |
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|}} | ||
Řádek 374: | Řádek 377: | ||
{{:temata:35-planovani_synchronizace:uvaznuti.png|}} | {{:temata:35-planovani_synchronizace:uvaznuti.png|}} | ||
- | Nutné podmínky uváznutí | + | **Nutné podmínky uváznutí** |
- | 1) vzájemné vyloučení při používání prostředků | + | - vzájemné vyloučení při používání prostředků |
- | 2) vlastnictví alespoň jednoho zdroje a čekání na další | + | - vlastnictví alespoň jednoho zdroje a čekání na další |
- | 3) prostředky vrací proces, který je vlastní, a to po dokončení jejich využití | + | - prostředky vrací proces, který je vlastní, a to po dokončení jejich využití |
- | 4) cyklická závislost na sebe čekajících procesů | + | - cyklická závislost na sebe čekajících procesů |
- | Řešení: | + | **Řešení:** |
* **prevence uváznutí** | * **prevence uváznutí** | ||
* zrušíme platnost některého z nutných podmínek uváznutí | * zrušíme platnost některého z nutných podmínek uváznutí | ||
- | 1) nepoužívat sdílené prostředky nebo používat sdílené prostředky, které umnožňují sdílený přístup a u kterých tedy není nutné vzájmené vyloučení procesů | + | - nepoužívat sdílené prostředky nebo používat sdílené prostředky, které umnožňují sdílený přístup a u kterých tedy není nutné vzájmené vyloučení procesů |
- | 2) proces může žádat o prostředky pouze pokud žádné nevlastní | + | - proces může žádat o prostředky pouze pokud žádné nevlastní |
- | 3) pokud proces požádá o prostředky, které nemůže momentálně získat, je pozastaven, všechny prostředky jsou mu odebrány a čeká se, až mu mohou být všechny potřebné prostředky přiděleny | + | - pokud proces požádá o prostředky, které nemůže momentálně získat, je pozastaven, všechny prostředky jsou mu odebrány a čeká se, až mu mohou být všechny potřebné prostředky přiděleny |
- | 4) prostředky jsou očíslovány a je možné je získávat pouze od nejnižších čísel k vyšším | + | - prostředky jsou očíslovány a je možné je získávat pouze od nejnižších čísel k vyšším |
* **vyhýbání se uváznutí** | * **vyhýbání se uváznutí** | ||
* procesy předem deklarují určité informace o způsobu, jakým budou využívat zdroje: v nejjednodušším případě se jedná o maximální počet současně požadovaných zdrojů jednotlivých typů | * procesy předem deklarují určité informace o způsobu, jakým budou využívat zdroje: v nejjednodušším případě se jedná o maximální počet současně požadovaných zdrojů jednotlivých typů | ||
Řádek 402: | Řádek 405: | ||
{{:temata:35-planovani_synchronizace:starnuti.png|}} | {{:temata:35-planovani_synchronizace:starnuti.png|}} | ||
- | <note>Zdroje: | + | ==== Zdroje ==== |
- | IOS - Přednáška č. 5: [[http://file.ofeig.cz/file/ios-prednaska-05.pdf|Správa procesů]] | + | <note>IOS - Přednáška č. 5: [[http://file.ofeig.cz/file/ios-prednaska-05.pdf|Správa procesů]] |
IOS - Přednáška č. 6: [[http://file.ofeig.cz/file/ios-prednaska-06.pdf|Synchronizace procesů]] | IOS - Přednáška č. 6: [[http://file.ofeig.cz/file/ios-prednaska-06.pdf|Synchronizace procesů]] | ||
+ | |||
http://www.wikipedia.org | http://www.wikipedia.org | ||
http://www.google.com</note> | http://www.google.com</note> |