Monitory
Z FAV wiki
(Rozdíly mezi verzemi)
(Založena nová stránka: Monitor je synchronizacni primitivum, ktere se pouziva pro rizeni pristupu ke sdilenym prostredkum. Jeho zvlastnosti je, ze jde o specialni konstrukci programovaciho jazyka...) |
|||
| Řádka 1: | Řádka 1: | ||
| − | Monitor je | + | Monitor je synchronizační primitivum, které se používá pro řizeni přístupu ke sdíleným prostředkům. Jeho zvláštností |
| − | je, | + | je, že jde o speciální konstrukci programovaciho jazyka (musí ho tedy implementovat překladač), typicky im- |
| − | plementovanou | + | plementovanou pomocí jineho synchronizačního primitiva. Výhodou monitoru oproti jiným primitivum je jeho |
| − | + | vysokoúrovňovost - snadněji se používá a je bezpečnější. Při jeho použití je méně pravděpodobné, že programátor | |
| − | + | udělá chybu. | |
| − | + | ||
| − | + | * Monitor je speciální typ modulu, ve kterém jsou sdružena data a procedury, které s nimi mohou manipulovat | |
| − | + | * Monitory musí umět rozpoznat překladač a přeložit je do odpovídajícího kódu | |
| − | + | * Procesy mohou volat procedury monitoru, ale nemohou přímo přistupovat k datům monitoru | |
| − | + | * V monitoru může být v jednu chvíli aktivní pouze jeden proces; ostatní jsou při pokusu o vstup do monitoru pozastaveny. | |
| − | + | * Monitory poskytují speciální typ proměnné nazývané podmínka | |
| − | + | * Podmínky mohou být definovány a použity pouze uvnitř monitoru | |
| − | + | * Nad podmínkami jsou definovány dvě operace: | |
| − | volající bude pozastaven nad podmínkou c | + | **c.wait - volající bude pozastaven nad podmínkou c. Pokud je některý proces připraven vstoupit do monitoru, bude mu to dovoleno |
| − | + | ** c.signal - pokud existuje jeden nebo více procesů pozastavených nad podmínkou c, reaktivuje jeden z pozastavených procesů, tj. bude mu dovoleno pokračovat v běhu uvnitř monitoru pokud nad podmínkou nespí žádný proces, nedělá nic | |
| − | + | ||
| − | pokud existuje jeden nebo více procesů pozastavených nad podmínkou c, reaktivuje jeden z pozastavených procesů, tj. bude mu dovoleno pokračovat v běhu uvnitř monitoru | + | |
| − | pokud nad podmínkou nespí žádný proces, nedělá nic | + | |
Verze z 14. 8. 2011, 21:00
Monitor je synchronizační primitivum, které se používá pro řizeni přístupu ke sdíleným prostředkům. Jeho zvláštností je, že jde o speciální konstrukci programovaciho jazyka (musí ho tedy implementovat překladač), typicky im- plementovanou pomocí jineho synchronizačního primitiva. Výhodou monitoru oproti jiným primitivum je jeho vysokoúrovňovost - snadněji se používá a je bezpečnější. Při jeho použití je méně pravděpodobné, že programátor udělá chybu.
- Monitor je speciální typ modulu, ve kterém jsou sdružena data a procedury, které s nimi mohou manipulovat
- Monitory musí umět rozpoznat překladač a přeložit je do odpovídajícího kódu
- Procesy mohou volat procedury monitoru, ale nemohou přímo přistupovat k datům monitoru
- V monitoru může být v jednu chvíli aktivní pouze jeden proces; ostatní jsou při pokusu o vstup do monitoru pozastaveny.
- Monitory poskytují speciální typ proměnné nazývané podmínka
- Podmínky mohou být definovány a použity pouze uvnitř monitoru
- Nad podmínkami jsou definovány dvě operace:
**c.wait - volající bude pozastaven nad podmínkou c. Pokud je některý proces připraven vstoupit do monitoru, bude mu to dovoleno ** c.signal - pokud existuje jeden nebo více procesů pozastavených nad podmínkou c, reaktivuje jeden z pozastavených procesů, tj. bude mu dovoleno pokračovat v běhu uvnitř monitoru pokud nad podmínkou nespí žádný proces, nedělá nic