09.08.2015 Views

SYSTEMY OPERACYJNE II ROK INFORMATYKA TEMATY ...

SYSTEMY OPERACYJNE II ROK INFORMATYKA TEMATY ...

SYSTEMY OPERACYJNE II ROK INFORMATYKA TEMATY ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>SYSTEMY</strong> <strong>OPERACYJNE</strong> <strong>II</strong> <strong>ROK</strong> <strong>INFORMATYKA</strong><strong>TEMATY</strong> PROJEKTÓW1. fork-exec.Napisać program wypisujący identyfikatory UID, GID, PID, PPID dla danego procesu.Wywołać funkcję fork() 3 razy np. w pętli i wypisać powyŜsze identyfikatory dla wszystkich procesówpotomnych.Na podstawie wyników narysować „drzewo genealogiczne” tworzonych procesów. Ile powstaje procesów idlaczego.Zmodyfikować poprzedni program tak, aby komunikaty procesów potomnych były wypisywane przez programuruchamiany przez funkcję exec(). Ile teraz powstaje procesów i dlaczego?.2. wątki.Napisać program złoŜony w 2 wątków. Wątek główny losowo generuje elementy tablicy np. int tab[2][10].Wątek 1 liczy sumę elementów pierwszego wiersza tablicy. Wątek 2 liczy sumę elementów drugiego wierszatablicy. Wątek główny liczy sumę całkowitą z sum cząstkowych wyznaczonych przez wątki.3. semafory - sekcja krytyczna – wzajemne wykluczanie.Przy pomocy mechanizmu semaforów zrealizować zadanie na wzajemne wykluczanie procesów. Czas operacjina zasobie symulować uŜywając np. funkcji sleep(). Dla demonstracji poprawności działania programu uŜyćkomunikatów wypisywanych przez poszczególne procesy przed, w trakcie i po sekcji krytycznej (sk) orazfunkcji podających stan semafora. Napisać specjalny program do powielania procesów wykorzystujący funkcjefork() i exec(). Nazwę programu do inicjowania procesów oraz liczbę procesów przekazywać przez argumentyprogramu powielacza.Przykładowe wywołanie „powielacza”../program_główny program_potomny liczba_pp liczba_skgdzie, liczba_pp - liczba procesów potomnych rywalizujących o sk.liczba_sk - liczba wykonań sk przez kaŜdy z procesów potomnych[]$ ./prog pogram 3 24. semafory - sekcja krytyczna – producent-konsument.Producent zajmuje się produkcją towaru(np. liczb, znaków) i umieszczaniu ich we wspólnym buforze (np.pliku), który moŜe pomieścić tylko jedną jednostkę towaru naraz. Konsument pobiera towar (nie niszczącbufora) i konsumuje go.Aby panowała harmonia, muszą być spełnione dwa warunki:• KaŜda wyprodukowana jednostka towaru musi zostać skonsumowana,• śadna jednostka towaru nie moŜe być skonsumowana dwa razy (nawet jeśli konsument jest szybszy niŜproducent).Wykorzystując mechanizm semaforów zaimplementuj powyŜsze zadanie. Dla zademonstrowania, Ŝe nie doszłodo utraty lub zwielokrotnienia towary niech producent pobiera „surowiec” (liczby, znaki) do wytwarzaniatowaru z pliku tekstowego, a konsument umieszcza pobrany towar w innym pliku tekstowym. Po zakończeniudziałania programów (wyczerpaniu zasobów „surowca”) oba pliki tekstowe powinny być identyczne. Dosymulacji róŜnych prędkości działania programów uŜyć np. funkcji sleep() (z losową liczbą sekund).5. pamięć dzielona – sekcja krytyczna – producent-konsument.Zadanie jak w pkt.4 z wykorzystaniem jako bufora pamięci dzielonej.6. semafory – synchronizacja – czytelnicy i pisarze.Zadanie zsynchronizowania dwóch grup procesów: czytelników i pisarzy, konkurujących o dostęp do wspólnejczytelni.Proces czytelnik: co jakiś czas odczytuje informację zgromadzoną w czytelni i moŜe to robić razem z innymiczytelnikami;Proces pisarz: co jakiś czas zapisuje swoją informację i musi wówczas przebywać sam w czytelni;W zadaniu tym moŜe wystąpić tzw. zjawisko zagłodzenia jednej z grup procesów. Występuje ono wówczas, gdyproces nie zostaje wznowiony, mimo Ŝe zdarzenie, na które czeka występuje dowolną ilość razy. Za kaŜdymrazem, gdy proces ten mógłby być wznowiony, wybierany jest jakiś inny oczekujący proces.Zazwyczaj rozwaŜa się 3 rozwiązania problemu czytelników i pisarzy:• Rozwiązanie moŜliwością zagłodzenia pisarzy;• Rozwiązanie moŜliwością zagłodzenia czytelników;


• Rozwiązanie poprawne (bez głodzenia);Rozwiązać zadanie we wszystkich 3 wersjach przy pomocy semaforów. Przyjąć, Ŝe liczba miejsc w czytelni jestograniczona i ustalona na pewną wartość N. Liczba czytelników oraz pisarzy moŜe być zarówno większa jak imniejsza od N.Napisać program do generowania procesów czytelników i pisarzy w oparciu o funkcje fork() i exec().Zademonstrować zjawisko zagłodzenia, jak teŜ jego brak w rozwiązaniu poprawnym.Przykładowe wywołanie „powielacza”../program_główny liczba_p liczba_c liczba_mgdzie, liczba_p - liczba pisarzy,liczba_c - liczba czytelników,liczba_m - liczba miejsc w czytelni.[]$ ./prog 2 5 37. semafory – synchronizacja – pięciu filozofów.Zadanie zsynchronizowania działań pięciu filozofów, którzy siedzą przy okrągłym stole i myślą. Co jakiś czasgłodnieją i muszą się najeść. Przed kaŜdym filozofem stoi talerz, a między kolejnymi talerzami leŜy jedenwidelec. Na środku stołu stoi półmisek z rybami. Ryby naleŜy jeść dwoma widelcami, więc filozof aby mógłjeść musi mieć do dyspozycji dwa widelce. Podnosząc leŜące przed nim widelce filozof uniemoŜliwia jedzeniesąsiadom. Zakłada się, Ŝe filozof w skończonym czasie się naje i odłoŜy widelec.Rozwiązanie problemu musi gwarantować spełnienie następujących warunków:• KaŜdy z filozofów będzie w końcu mógł się najeść,• Nie moŜna wyróŜniać Ŝadnego z filozofów (algorytmy wszystkich pięciu filozofów dotyczące podnoszenia iodkładania widelców muszą być takie same).Zazwyczaj rozwaŜa się 3 rozwiązania problemu pięciu filozofów:• Rozwiązanie z moŜliwością blokady; zgłodniały filozof czeka aŜ jeden z jego widelców (np. lewy)będzie wolny i podnosi go, a następnie czeka aŜ będzie wolny drugi widelec i takŜe go podnosi. Ponajedzeniu się odkłada widelce na stół. MoŜe zdarzyć się sytuacja kiedy kaŜdy z filozofów podniesiejeden ze swoich widelców i będzie czekał aŜ jego sąsiad skończy jeść i odłoŜy widelec. PoniewaŜkaŜdy z filozofów będzie czekał na to samo zdarzenie pojawi się blokada.• Rozwiązanie z moŜliwością zagłodzenia; zgłodniały filozof podnosi jednocześnie dwa widelcewtedy, gdy tylko są wolne. JeŜeli jeden z filozofów będzie miał Ŝarłocznych sąsiadów, którzygłównie będą zajmować się jedzeniem, tak Ŝe w kaŜdej chwili przynajmniej jeden z nich będzie jadł,to taka sytuacja doprowadzi to do zagłodzenia tego filozofa.• Rozwiązanie poprawne; sami filozofowie nie są w stanie rozwiązać problemu jedzenia, jeŜeli Ŝaden znich nie ma być wyróŜniony. Potrzebny jest zewnętrzny arbiter (lokaj) decydujący, którzyfilozofowie będą mieli pierwszeństwo w spornych przypadkach. Lokaj dba o to, aby w kaŜdej chwilico najwyŜej czterech filozofów konkurowało o widelce podnosząc je sekwencyjnie (jak wrozwiązaniu 1). Wtedy zawsze przynajmniej jeden z filozofów będzie mógł podnieść widelec i jeść.Jeśli pięciu filozofów zapragnie jeść naraz, to lokaj powstrzyma jednego z nich do czasu, aŜ któryś zpozostałych czterech skończy jeść.Zaimplementować wszystkie trzy rozwiązania problemu pięciu filozofów uŜywając semaforów.Zademonstrować zjawiska blokady i zagłodzenia, jak teŜ ich brak w rozwiązaniu poprawnym.8. potoki nazwane (mkfifo) i nienazwane (pipe) – producent-konsument.Zadanie jak w pkt.4. Uogólnić zadanie na wielu producentów i wielu konsumentów.9. kolejki komunikatów – klient-serwer.Proces klient wysyła do procesu serwera ciąg znaków. Serwer odbiera ten ciąg znaków i przetwarza gozmieniając w nim wszystkie litery na duŜe, a następnie wysyła tak przetworzony ciąg znaków z powrotem doklienta. Klient odbiera przetworzony ciąg znaków i wypisuje go na ekranie.Posługując się mechanizmem kolejki komunikatów, naleŜy zaimplementować powyŜsze zadanie typu klientserwerz moŜliwością obsługi wielu klientów jednocześnie. W rozwiązaniu uŜyć jednej kolejki komunikatów.Zastosować odpowiednie etykietowanie komunikatów w celu rozróŜniania w kolejce danych dla serwera orazdanych dla poszczególnych klientów.10. gniazdo (socket) – klient-serwer.Zadanie jak w pkt.9 z wykorzystaniem gniazda.

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

Saved successfully!

Ooh no, something went wrong!