12.07.2015 Views

Spis treœci - Patrz

Spis treœci - Patrz

Spis treœci - Patrz

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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

wejść, do sekcji krytycznej, zatem proces P po przesłaniu sygnału POZWÓL(), czeka jeszczena zezwolenie (sygnał MOGĘ()).[P(i: 1..N)::*[true -> SEKRETARZ(i)!POZWÓL();SEKRETARZ(i)?MOGĘ();sekcja_krytyczna(i);SEKRETARZU) !SKOŃCZYŁEM() ;własne_sprawy(i)]|| SEKRETARZ(i: 1..N):: chcę: boolean;[i = l -> SEKRETARZ(2)!UPRAWNIENIE()[]i l -> skip] ;chcę := false;*[P(i)?POZWÓL() -> chcę := true[]SEKRETARZ((i-2+N) mod N + 1)?UPRAWNIENIE() ->[chcę -> P(i)!MOGĘ();P(i)?SKOŃCZYLEM();chcę := false[]not chcę -> skip];SEKRETARZU mod N + 1) !UPRAWNIENE()]]Opisany sposób synchronizacji procesów w systemach rozproszonych jest znany wliteraturze pod nazwą token passing, czyli przekazywanie znacznika. Stosuje się go naprzykład w sieciach lokalnych typu token bus, w których wszystkie komputery są połączonewspólną szyną. Podana tu implementacja jest bardzo uproszczona, gdyż nie uwzględniamożliwości zaginięcia uprawnienia ani awarii komputera, na którym wykonuje się jeden zprocesów.Algorytm Ricurta i AyrawaliW roku 1981 Ricart i Agrawala zaproponowali inny rozproszony algorytm wzajemnegowykluczania [RiAgSl]. Według tego algorytmu każdy proces, który chce wejść do swojejsekcji "krytycznej, prosi o pozwolenie wszystkie pozostałe procesy. Gdy je uzyska, możebezpiecznie wykonać swoją sekcję krytyczną. Proces, który otrzymał od innego procesuprośbę o pozwolenie, postępuje różnie zależnie od tego, czy sam czeka na pozwolenia. Jeślinie czeka, to odpowiada pozytywnie. Jeśli sam wcześniej wysłał prośby i jeszcze nie uzyskałwszystkich odpowiedzi, to o tym, kto pierwszy wykona swoją sekcję krytyczną, decyduje czaswysłania próśb. Jeśli zapytywany proces wysiał później swoją prośbę, to także odpowiadapozytywnie. Jeśli procesy wysłały prośby dokładnie w tej samej chwili, to o kolejnościdecydują priorytety, np. jeśli zapytywany proces ma wyższy numer, to także odpowiadapozytywnie. W każdym innym przypadku zapytywany proces wstrzymuje się z odpowiedziąaż do chwili, gdy sam skończy wykonywać swoją sekcję krytyczną. Wówczas odpowiadapozytywnie wszystkim, od których dostał zapytanie, a jeszcze im nie odpowiedział.Podajemy teraz realizację tego algorytmu w CSP, przy czym nie uwzględniamy tukorygowania czasu (zakładamy, że funkcja czas_bieżący zwraca poprawny czas). Zasadykorygowania czasu są omówione w zadaniu 5.3.5.Z każdym procesem P jest związany proces POMOCNIK, który będzie w jego imieniuodbierał prośby o pozwolenie i odpowiednio odpowiadał na nie. Wyodrębnienie procesuPOMOCNIK jest w tym przypadku konieczne, aby uniknąć blokady. Mogłaby ona wystąpić,gdyby dwa procesy zapragnęły jednocześnie wysłać do siebie prośby o pozwolenie. W tablicy115

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

Saved successfully!

Ooh no, something went wrong!