Monitory

Z FAV wiki
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
m (kategorizace)
(ZMRDE)
Řádka 1: Řádka 1:
−
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 programovacího jazyka (musí ho tedy implementovat překladač), typicky implementovanou pomocí jineho synchronizačního primitiva. Výhodou monitoru oproti jiným primitivum je jeho
+
RONALDO JE GAY!!!!!!!!!!!!!!!!!!!!
−
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
+
−
 
+
−
Pozor, pokud by signál pouze vzbudil proces, běžely by v monitoru dva.
+
−
Možná řešení:
+
−
* Hoare - proces volající c.signal se pozastaví a vzbudí se až poté co předchozí rektivovaný proces opustí monitor nebo se pozastaví
+
−
* Hansen - Signal smí být uveden pouze jako poslední příkaz v monitoru. Po volání signal musí proces opustit monitor
+
−
 
+
−
V Javě jsou monitory implementovány pomocí klíčového slova synchronized. Zde je problém více vláken v monitoru vyřešen tak, že čekající může běžet až poté, co proces volající signál opustí monitor.
+
−
 
+
−
{{fav-kiv-bzinf}}
+
−
 
+
−
 
+
−
[[Kategorie:fav-kiv-bzinf]]
+

Verze z 29. 5. 2014, 12:22

RONALDO JE GAY!!!!!!!!!!!!!!!!!!!!

Osobní nástroje
Jmenné prostory
Varianty
Akce
Navigace
Nástroje