Semafory, jejich použití a implementace

Z FAV wiki
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
m (kategorizace)
 
(Nejsou zobrazeny 3 mezilehlé verze od 1 uživatele.)
Řádka 21: Řádka 21:
 
S každým semaforem s je sdruženo:
 
S každým semaforem s je sdruženo:
 
* Celočíselná proměnná s.c, dovolíme jí nabývat i záporných hodnot, pak absolutní hodnota s.c vyjadřuje počet blokovaných procesů
 
* Celočíselná proměnná s.c, dovolíme jí nabývat i záporných hodnot, pak absolutní hodnota s.c vyjadřuje počet blokovaných procesů
−
* Binární semafor s.mutex pro vzájemné vyloučení při operaci nad semaforem
+
* Binární semafor s.mutex (mutual exclusion) pro vzájemné vyloučení při operaci nad semaforem
 
* Seznam blokovaných procesů s.L
 
* Seznam blokovaných procesů s.L
  
 
Proces, který nemůže dokončit operaci P bude zablokován a uložen do seznamu blokovaných procesů. Pokud při operaci V není seznam prázdný, vybere se ze seznamu jeden proces a odblokuje se.
 
Proces, který nemůže dokončit operaci P bude zablokován a uložen do seznamu blokovaných procesů. Pokud při operaci V není seznam prázdný, vybere se ze seznamu jeden proces a odblokuje se.
 +
 +
Pozor, mutex není binární semafor. Mutex může na rozdíl od semaforu odemknout pouze vlákno, které ho zamklo.
 +
 +
{{fav-kiv-bzinf}}
 +
 +
 +
[[Kategorie:fav-kiv-bzinf]]

Aktuální verze z 20. 2. 2014, 06:47

Semafor = proměnná, obsahuje nezáporné celé číslo

Semaforu, lze přiřadit hodnotu pouze při deklaraci

Nad semafory pouze operace P(s) a V(s):

Operace P i V jsou nedělitelné (atomické) akce, tj. jakmile započne akce nad semaforem, nikdo k němu nemůže přistoupit. Když se několik procesů pokouší přistoupit současně ke stejnému semaforu, operace se provedou sekvenčně v libovolném pořadí.

Vzájemné vyloučení pomocí semaforů:

Implementace


S každým semaforem s je sdruženo:

Proces, který nemůže dokončit operaci P bude zablokován a uložen do seznamu blokovaných procesů. Pokud při operaci V není seznam prázdný, vybere se ze seznamu jeden proces a odblokuje se.

Pozor, mutex není binární semafor. Mutex může na rozdíl od semaforu odemknout pouze vlákno, které ho zamklo.


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