20.03.2003
 

Treść zadania 2. (Lab. systemów operacyjnych). (8pkt)

 
Zaimplementuj symulację następującego wariantu problemu 5 obiadujących filozofów:
    1. filozofów jest N < 101; (N jest parametrem programu)
    2. filozofowie rozmyślając chodzą po pokoju;
    3. gdy filozof jest głodny idzie do kuchni, w której nie może jednak przebywać więcej niż 20 osób;
    4. 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;
    5. filozof, który usiadł, siedzi i czeka aż będzie para wolnych pałeczek;
    6. 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
    7. 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?)
    8. 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.
    9. 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.
    10. czas trwania filozofa w stanie (np. myślenia, albo jedzenia) powinien być losowy i sparametryzowany;
    11. 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
    12. 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:
Pomoce:

Zadanie domowe (do zad. 3)

Przypomnij sobie następujące zagadnienia:
 
Jan Zatopianski