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.

Proces, który zaczyna czekać na dostęp do czytelni, wysyła do procesu MONITORsygnał CHCĘ_CZYTAĆ() lub CHCĘ_PISAĆ(), a potem oczekuje, aż otrzyma od niego sygnałMOGĘ_CZYTAĆ() lub MOGĘ_PISAĆ(). MONITOR musi zapamiętywać, które procesyczekają (służą do tego tablice czytelnik oraz pisarz), aby wysłać, sygnał tylko do nich. Pozakończeniu pisania, jeżeli oczekują i czytelnicy, i pisarze, wybór procesów, które otrzymająprawo dostępu do czytelni, jest niedeterministyczny, co gwarantuje, że nie ma tu możliwościzagłodzenia ani pisarzy, ani czytelników.comment C - liczba czytelników,P - liczba pisarzy;[CZYTELNIKU: 1..C):: *[true -> MONITOR! CHCĘ_CZYTAĆ();MONITOR?MOGĘ_CZYTAĆ();czytanie(i);MONITOR!KONIEC_CZYTANIA();myślenie(i)]MPISARZCi: 1..P):: *[true-> myślenie(i);MONITOR!CHCĘ.PISAĆ();MONITOR?MOGĘ_PISAĆ();pisanie(i);MONITOR!KONIEC_PISANIA()]|| MONITOR:: c, op, p: integer;comment c - liczba czytających czytelników,op - liczba oczekujących pisarzy,p - liczba piszących pisarzy;(c, op, p) := (O, O, 0);czytelnik: (1..C) boolean;pisarz: (1..P) boolean;comment - w tablicach tych pamiętamy,czy odpowiedni proces czeka;*[(i:1..C) czytelnik(i) -> czytelnik(i) := false];*[(i:1..P) pisarz(i) -> pisarz(i) := false];*[(i:1..C) CZYTELNIK(i)?CHCĘ_CZYTAĆ() ->C op + p = O -> c := c + 1;CZYTELNIKU) !MOGĘ_CZYTAĆ()[]op + p > O -> czytelnik(i) := true][](i:1..C) CZYTELNIKU)?KONIEC_CZYTANIA() ->c := c - 1;C(j:1..P) c = 0; pisarz(j) ->(pisarz(j), op, p) := (false, op-1, 1);PISARZ(j)!MOGĘ_PISAĆ()[]c > O -> skip][](i:l..P) PISARZ(i)?CHCĘ_PISAĆ() ->[ c + p = O -> p := 1;PISARZU) !MOGĘ_PISAĆ()[]c + p > O -> op := op + 1;pisarzU) := true][](i:l..P) PISARZ(i)?KONIEC_PISANIA() ->P := 0;[(j:1..C) czytelnik(j) ->*[(j:l..C) czytelnik(j) ->(c, czytelnik(j)) := (c+1, false);CZYTELNIK(j)!MOGĘ.CZYTAĆ()]120

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

Saved successfully!

Ooh no, something went wrong!