SO-1st-2.3-w11.tresc-1.0-Slajd28

Z Studia Informatyczne
Wersja z dnia 14:00, 18 wrz 2006 autorstwa Dwa (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Wzajemne wykluczanie 2 procesów — podejście 4

Wzajemne wykluczanie 2 procesów — podejście 4


Rozwiązanie to jest wynikiem połączenia podejścia 1 i 2. Za pośrednictwem tablicy znacznik procesy informują się nawzajem o swoim stanie, a za pośrednictwem zmiennej numer rozstrzygają ewentualny konflikt. Jeśli zatem wartość w tablicy znacznik na pozycji odpowiadającej procesowi rywalizującemu jest ustawiona na false, to nie ubiega się on o sekcję krytyczną. Następuje wówczas opuszczenie pętli while , tym samym sekcji wejściowej i wejście do sekcji krytycznej. W przypadku, gdy dwa rywalizujące procesu ustawią wartość true na swoich pozycjach w tablicy znacznik , rozstrzygnięcie sporu zależy od wartości zmiennej numer . Ten z procesów, który później ustawi w niej numer rywala, ten musi poczekać, aż rywal wyjdzie z sekcji krytycznej.

Przedstawione rozwiązanie znane jest pod nazwą algorytmu Petersona . Algorytm ten można uogólnić na n procesów, stosując podejście „wieloetapowe”. Na każdym etapie eliminowany jest jeden proces. Zmienna numer musi być wówczas tablicą n­1­elementową , a tablica znacznik przechowuje numer etapu, na którym jest dany proces.


<< Poprzedni slajd | Spis treści | Następny slajd >>