Problem pięciu filozofów |
Zadanie
1. Napisz rozwiązanie problemu pięciu filozofów z możliwością
blokady. Zaimplementuj pięć widelców przy pomocy pięcioelementowej
tablicy muteksów (funkcje
pthread_mutex_lock i pthread_mutex_unlock).
W rozwiązaniu tym filozof o numerze i=0...4 podnosie najpierw
widelec lewy (o numerze i) a następnie widelec prawy
(o numerze (i+1)%5). Zademonstruj prowadzącemu wystąpienie zjawiska
blokady. |
Zadanie
2. Zmodyfiukuj rozwiązanie zadania 1 przez wprowadzenie asymetrii.
Niech jeden z filozofów (np. o numerze zero) próbuje podnieść najpierw
prawy, a następnie lewy widelec. Czy przy takim rozwiązaniu może
wystąpić blokada? Czy może wystąpić zagłodzenie ? |
Zadanie
3. (za tydzień) Zaimplementuj problem pięciu filozofów przy
pomocy semaforów zliczających (patrz plik sem.tgz). W tym celu
wykorzystaj semafor zliczający do ograniczenia liczby filozofów
jednocześnie rywalizujących o pałeczki do 4. Czy przy takim rozwiązaniu
może
wystąpić blokada? Czy może wystąpić zagłodzenie ? |
Opracował: Wojciech Kwedlo |