20.03.2003
Treść zadania 2. (Lab. systemów operacyjnych). (8pkt)
Zaimplementuj symulację następującego wariantu
problemu 5 obiadujących filozofów:
- filozofów jest N < 101; (N jest parametrem
programu)
- filozofowie rozmyślając chodzą po pokoju;
- gdy filozof jest głodny idzie do kuchni, w
której nie może jednak przebywać więcej niż 20 osób;
- głodny filozof próbuje usiąść przy stole, jeśli
są wolne miejsca; Jeśli krzesło jest zajęty, filozof nadal rozmyśla;
ponowiając co pewien czas próbe znalezienia wolnego krzesła;
- filozof, który usiadł, siedzi i czeka aż będzie
para wolnych pałeczek;
- przy stole może siedzieć 5 filozofów, choć jeść
wciąż może co najwyżej 2 co wynika z rozłożenia pałeczek
- twój program ma nie dopuszczać do blokady,
chyba, że masz pomysł jak wyprowadzić filozofów z zakleszczenia (algorytm
wykrywania cyklu w grafie przydziału zasobów?)
- nie może dojść do głodzenia, zakładamy że
filozof, który nie jadł przez co najmniej K cykli (parametr) umiera co jest
odnotowane przez program. Rozwiązanie z głodzeniem będzie gorzej
oceniane.
- program powinien pokazywać zmianę stanu
filozofów na standardowym wyjściu; równocześnie historia zmian, np. w formie
tabelki (czas) x (wektor stanu filozofów) powinna być wypisywana do pliku
tekstowego.
- czas trwania filozofa w stanie (np. myślenia,
albo jedzenia) powinien być losowy i sparametryzowany;
- parametrami uruchomieniowymi programu powinny
być również: maksymalny czas symulacji w sekundach, liczba cykli życia
filozofów, odpowiednie wartości z punktu poprzedniego, N, K
- Napisz krótkie sprawozdanie w którym uzasadnisz
poprawność swojego algorytmu (brak blokad i głodzenia). Za marnowanie
papieru (czcionka podstawowego tekstu > 10, marginesy większe niż 1,5 cm
będę naliczał punkty karne!
Uwagi:
- Wskazówką powinien być przykład rozwiązania za pomocą monitora, zobacz materiały z wykładu,
lub stronę
http://ii1.ap.siedlce.pl/~jarok/Systemy Operacyjne/so_w6.htm
- Możesz przerobić program ze
strony http://www.student.ii.uni.wroc.pl/~krycek/so/,
ale musisz uczynić go programem GPL, pozostawiając informację o
autorze;
- Oceny: 80-100% -
zrealizowana większość punktów, dobry algorytm bez blokad i głodzenia, zadanie
oddane w trakcie trwania pracowni (sprawozdanie w późniejszym terminie)
- 50% pkt za zrealizowanie podstawowego algorytmu
dla problemu jeśli będzie głodzenie, lub inne braki w
założeniach.
- 0 pkt - cudze rozwiązanie;
- do 79 pkt (z uwzględnieniem punktów karnych za
opóźnienia) - oryginalne rozwiązanie oddane w ciągu najbliższego
tygodnia.
Pomoce:
- Silberschatz, Peterson, Galvin - "Podstawy
systemów operacyjnych";
- dokumentacja systemu Solaris (na pracowni
komenda man)
- Internet:
Zadanie domowe (do zad. 3)
Przypomnij sobie następujące
zagadnienia:
- komunikacja międzyprocesowa (sprawdź z których
mechanizmów możesz skorzystać na pracowni)
- regiony krytyczne i monitory (wysokopoziomowe
mechanizmy synchronizacji);
- problem wykrywania blokad
- algorytm bankiera
Jan Zatopianski