12.07.2015 Views

Spis treœci - Patrz

Spis treœci - Patrz

Spis treœci - Patrz

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Innym rozszerzeniem pojęcia semafora jest dopuszczenie, aby był on zmieniany nie o l,ale o dowolną wskazaną liczbę naturalną [Vant72, MaOO87]. Operacje podnoszenia ( VG) iopuszczania semafora (PG) są w tym przypadku dwuargumentowe.Operacja PG(S,n} odpowiada wykonaniu instrukcji:• jeśli S > n, to S := S — n, t/; przeciwnym razie wstrzymaj działanie procesuwykonującego tę operację,a operacja VG(S,n) odpowiada wykonaniu instrukcji• jeśli są procesy wstrzymane w wyniku wykonania operacji PG(S,m),przy czym m < S + n, to wznów jeden z nich i S := S — m + n, wprzeciwnym razie S := S + n.Jednoczesne operacje semaforoweInne rozszerzenia idą w kierunku umożliwienia wykonania operacji opuszczeniajednocześnie na wielu semaforach.Wykonanie operacji PAND(Sl,S2) (por. [PatiTl, MaOO87]) jest równoważne wykonaniuinstrukcji• jeśli S1 > 0 i S2 > O, to S1 := S1 — 1 ,S2 := S2 — 1 w przeciwnym raziewstrzymaj działanie procesu wykonującego tę operację.Analogicznie wprowadza się operację POR(Sl,S'2), której wykonanie jest równoważnewykonaniu instrukcji (por. [Lipt74, Ma0087])• jeśli Sl > O lub S2 > O, to odpowiednio albo Sl := Sl - l albo S2 := S2 — l wprzeciwnym razie wstrzymaj działanie procesu wykonującego tę operację.Zauważmy, że w przypadku, gdy oba semafory są podniesione, w wyniku wykonaniaoperacji POR jeden z nich zostanie opuszczony, ale nie wiadomo który.Uogólnienie operacji PAND i POR na wiele semaforów jest oczywiste. Jako parę dlaoperacji PAND wprowadza się czasem operację VAND, umożliwiającą jednoczesnepodniesienie wielu semaforów. Jeszcze bardziej złożoną operację podnoszenia zaproponowałAgerwala (por. [IsMa83]). Umożliwia ona jednoczesne podniesienie wskazanych semaforówpod warunkiem, że w tym samym czasie inne wskazane semafory są opuszczone. Tego typuoperacje są dostępne w systemie Unix.Od implementacji operacji P i V wymagamy, aby miała własność żywotności. Tegosamego powinno się wymagać od operacji PAND i POR. Na przykładzie zadania 3.3.4pokażemy, że zapewnienie żywotności operacji PAND nie jest proste. W systemie Unix jestmożliwość wykonywania jednoczesnych operacji semaforowych, ale ich realizacja nie mawłasności żywotności.3.1.5 OgraniczeniaMimo że semafor jest faktycznie zmienną całkowitą (lub logiczną), nie można na nimwykonywać żadnych innych operacji, a zwłaszcza nie można testować jego wartości aniwykonywać na nim działań arytmetycznych. Nie ma także możliwości stwierdzenia, ileprocesów zostało wstrzymanych na danym semaforze.36

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!