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.

istotna, należy każdą krotkę rozszerzyć o jej numer podawany przez proces wykonującyoperację OUTPUT. Proces, który wykonuje operację INPUT, musi jawnie wskazać numerpobieranej krotki. Podobnie, jeśli krotka ma być odebrana tylko przez określony proces (lubtylko od określonego procesu), numer identyfikujący ten proces musi być częścią krotki.Wybór selektywny umożliwia pobranie krotki o zadanej wartości na wskazanej pozycji.Nie ma jednak możliwości podania warunku, jaki powinna spełniać wartość na wskazanejpozycji pobieranej krotki (np. pobierz krotkę, której pierwszy element jest nieujemny).Obowiązek sprawdzania odpowiedniego warunku spoczywa więc na procesie tworzącymkrotkę, który powinien rozszerzyć ją o element zawierający odpowiednią informację dlaodbiorcy (por. uwaga do rozwiązania 7.4.8).7.2 Przykłady7.2.1 Wzajemne wykluczaniePokażemy jak w Lindzie można zrealizować semafor ogólny oraz jak realiziije sięmechanizm przekazywania uprawnień.Semafor ogólnyDeklaracji semafora postacivar sem: semaphore := N;odpowiada wprowadzenie do przestrzeni krotek przez specjalny proces inicjujący N krotekpostaci ('sem'):for i := 1 to M do OUTPUT('sem');Wówczas wykonanie operacji wejścia INPUT('sem') jest równoważne wykonaniu P(sem), awykonanie operacji wyjścia OUTPUT('sem') jest równoważne wykonaniu V(sem).Przekazywanie uprawnieńNa początku działania systemu trzeba do przestrzeni wprowadzić krotkę zuprawnieniem wykonując operacjęOUTPUT('uprawnienie')Zgodnie z zasadą opisaną w p. 5.2.1 uprawnienie powinno być przekazywane odprocesu do procesu. Jednak w Lindzie każdy proces komunikuje się jedynie z otaczającą goprzestrzenią. Przestrzeń krotek jest więc tu czymś w rodzaju globalnego „rozdawacza"uprawnienia. Proces sięga po uprawnienie tylko wtedy, gdy jest mu ono potrzebne. Zatemprzed wejściem do sekcji krytycznej każdy proces powinien wykonać INPUT('uprawnienie')zabierając uprawnienie z przestrzeni, a po wyjściu — OUTPUT('uprawnienie') oddając je zpowrotem.Uważny czytelnik zauważy od razu, że implementacja w Lindzie semafora binarnego(tylko jedna krotka ('sem') w przestrzeni) i przekazywania uprawnienia niczym się od siebie nieróżnią.185

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

Saved successfully!

Ooh no, something went wrong!