Semafory, jejich použití a implementace

Z FAV wiki
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
Řá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
  

Verze z 29. 8. 2011, 19:10

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.


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