- (1 IV) 10 pkt zadanie format
- (15 IV)
- 1. (6 pkt) Zapoznaj się z tworzeniem nowym potomków w programach w języku C. Przeczytaj o Komunikacji międzyprocesowej Sprawdź jak działają semafory. Przeczytaj o pamięci dzielonej i komunikatach. Napisz program, który komunikuje się z potomkiem za pomocą a) pamięci dzielonej b) poprzez komunikaty.
Napisz program, który sortuje ciąg liczb poprzez stworzenie dwóch wątków sortujących połowy ciągów. Główny program powinien scalić uporządkowane połowy.
Wskazówki: fork, getpid, execlp, kill, fdopen, semget , semop, semctl, * pthread_create.
- 2. (4 pkt) Zaimplementuj 2 z 4 algorytmów zastępowania stron: zadanie 2
- (29 IV)
- 1. (6 pkt) Napisz program, który tworzy 2 potomki. Pierwszy z potomków ma generować w losowych odstępach czasu (1-5 sekund) losowe liczby naturalne. Drugi potomek ma zwracać sumę dwóch liczb ostatnio wygenerowanych przez pierwszego potomka. Wykorzystaj pamięć dzieloną.
- 2. (4 pkt) Zmodyfikuj powyższy program tak, aby wykorzystywał komunikaty.
- (27 V)
- 1. (8 pkt) Zaimplementuj rozwiązanie zmodyfikowanego problemu filozofów:
W poczekalni spacerują filozofowie (parametr - do 100 procesów; losowana ilość początkowa)
z poczekalni co pewien czas próbują dostać się do pokoju.
w pokoju jest nie więcej niż 10 filozofów.
przy stole (pięcioosobowym) nie może usiąść więcej niż 4 filozofów.
Rozwiązanie powinno nie dopuszczać do głodzenia.
Uwagi: nie implementuj samemu semaforów. Należy wykorzystać bibliotekę libpthread.
Zadbaj o komunikaty diagnostyczne. Gdy proces się kończy powinien wypisać ile razy był przy stole i ile razy jadł.
- 2. (8 pkt) Algorytm Bankiera
- (10 VI)
- 1. (4 pkt) Wykorzystując wątki (libthread) i semafory napisz program, który rozwiązuje problem 5 filozofów dla 123 filozofów bez ryzyka blokady.
- 2. (8 pkt) Zmodyfikuj program z zadania (1) tak, aby mogło dojść do blokady. Przetestuj algorytm bankiera na tej wersji problemu filozofów. Przygotuj wersje z włączonym i wyłączonym algorytmem bankiera, aby można było obserwować blokadę.
- 3. (4 pkt) Napisz prosty program pokazujący wykorzystanie mechanizmów synchronizacji w systemie windows: semarofy, mutex'y, "Critical Section Objects", "Event Objects"
|