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.

pozwalające mu wejść. Pisarz, który chce wejść do czytelni, powinien być wstrzymany doczasu, aż będzie ona pusta.Przy takim postępowaniu jest możliwe jednak, że czytelnicy na zawsze zawładnączytelnią. Wystarczy, że w każdej chwili będzie w niej przebywał co najmniej jeden czytelnik, apisarze nigdy nie doczekają się pustej czytelni. Możliwe jest tu zatem zagłodzenie pisarzy.B. Rozwiązanie z możliwością zagłodzenia czytelnikówWydaje się, że jeśli pisarze chcą coś zapisać, to należy im to umożliwić najszybciej, jakjest to możliwe. Nie ma sensu, aby czytelnicy odczytywali przestarzałą informację. Zatem, jeślijakiś pisarz czeka na wejście do czytelni, bo są w niej jeszcze czytelnicy, to nowo przybyłyczytelnik powinien być. wstrzymany do czasu, gdy już żaden pisarz nie będzie czekał. Dziękitemu po pewnym czasie czytelnicy przebywający w czytelni w końcu ją opuszczą i będą mogliwejść do niej pisarze.W tym przypadku jest możliwe jednak zagłodzenie czytelników przez intensywniepracujących pisarzy. Wystarczy, że zawsze jakiś pisarz będzie czekał na możliwość pisania, ażaden z czytelników nie będzie mógł wejść do czytelni.C. Rozwiązanie poprawneRozwiązanie poprawne powinno unikać zagłodzenia każdej z grup procesów.Najprościej jest wpuszczać do czytelni na przemian to czytelników, to pisarzy, np. zgodnie zkolejnością zgłoszeń, przy czym oczywiście pisarze muszą wchodzić pojedynczo, aczytelników można wpuszczać w grupach. Ponieważ jednak wszystkie operacje czytaniamogą odbywać się jednocześnie, dlatego lepszym rozwiązaniem jest wpuszczenie do czytelniwraz z pierwszym czytelnikiem, na którego przyszła kolej, wszystkich innych czekającychczytelników niezależnie od tego, czy mają jeszcze przed sobą pisarzy.W niniejszej książce będziemy rozważać także rozwiązania, których żywotność (a więcbrak możliwości zagłodzenia) wynika jedynie z faktu, że żywotny jest mechanizmsynchronizacji, który w nich zastosowano.O faktycznej kolejności wchodzenia do czytelni niewiele da się wówczas powiedzieć(por. 3.2.3, 7.2.3). W pewnym sensie będą to więc rozwiązania mniej sprawiedliwe, niż teopisane wyżej, choć równie poprawne. Będziemy zajmować się też pewnymi modyfikacjamiproblemu czytelników i pisarzy: z ograniczoną liczbą miejsc w czytelni (przykład 3.2.3) oraz zpisaniem poprzedzonym zgłoszeniem intencji (zad. 4.3.5).2.6.3 Problem pięciu filozofówProblem polega na zsynchronizowaniu działań pięciu filozofów, którzy siedzą przyokrągłym stole i myślą. Jest to ich główne zajęcie. Jednak od czasu do czasu każdy filozofgłodnieje i aby móc dalej myśleć, musi się najeść. Przed każdym filozofem stoi talerz apomiędzy kolejnymi dwoma talerzami leży jeden widelec. Na środku stołu stoi półmisek zespaghetti. Jak wiadomo, spaghetti je się dwoma widelcami, więc aby rozpocząć jedzenie,filozof musi mieć do dyspozycji oba widelce. Podnosząc leżące przy nim widelce filozofuniemożliwia jedzenie swoim sąsiadom. Zakłada się jednak, że jeśli filozof podniósł już obawidelce, to w skończonym czasie naje się i odłoży je na stół. Rozwiązanie tego problemu musigwarantować, że każdy filozof będzie mógł w końcu najeść się do syta. Dodatkowo zakładasię, że nie może ono wyróżniać żadnego z filozofów (algorytmy wszystkich pięciu filozofówdotyczące podnoszenia i odkładania widelców muszą być takie same).21

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

Saved successfully!

Ooh no, something went wrong!