projekty z so 2012

background image

SYSTEMY OPERACYJNE II ROK INFORMATYKA
TEMATY PROJEKTÓW

1. 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ów
potomnych.
Na podstawie wyników narysować „drzewo genealogiczne” tworzonych procesów. Ile powstaje procesów i
dlaczego.
Zmodyfikować poprzedni program tak, aby komunikaty procesów potomnych były wypisywane przez program
uruchamiany 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 wiersza
tablicy. 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 operacji
na 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) oraz
funkcji podających stan semafora. Napisać specjalny program do powielania procesów wykorzystujący funkcje
fork() i exec(). Nazwę programu do inicjowania procesów oraz liczbę procesów przekazywać przez argumenty
programu powielacza.

Przykładowe wywołanie „powielacza”.
./program_główny program_potomny liczba_pp liczba_sk
gdzie,

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 2


4. 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ąc
bufora) 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ło
do utraty lub zwielokrotnienia towary niech producent pobiera „surowiec” (liczby, znaki) do wytwarzania
towaru z pliku tekstowego, a konsument umieszcza pobrany towar w innym pliku tekstowym. Po zakończeniu
działania programów (wyczerpaniu zasobów „surowca”) oba pliki tekstowe powinny być identyczne. Do
symulacji 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ólnej
czytelni.
Proces czytelnik: co jakiś czas odczytuje informację zgromadzoną w czytelni i może to robić razem z innymi
czytelnikami;
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, gdy
proces nie zostaje wznowiony, mimo że zdarzenie, na które czeka występuje dowolną ilość razy. Za każdym
razem, 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;

background image

Rozwiązanie poprawne (bez głodzenia);

Rozwiązać zadanie we wszystkich 3 wersjach przy pomocy semaforów. Przyjąć, że liczba miejsc w czytelni jest
ograniczona i ustalona na pewną wartość N. Liczba czytelników oraz pisarzy może być zarówno większa jak i
mniejsza 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_m
gdzie,

liczba_p

- liczba pisarzy,

liczba_c

- liczba czytelników,

liczba_m

- liczba miejsc w czytelni.

[]$ ./prog 2 5 3


7. 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ś czas
głodnieją i muszą się najeść. Przed każdym filozofem stoi talerz, a między kolejnymi talerzami leży jeden
widelec. 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 jedzenie
są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 i
odkł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. Po
najedzeniu się odkłada widelce na stół. Może zdarzyć się sytuacja kiedy każdy z filozofów podniesie
jeden 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 widelce
wtedy, gdy tylko są wolne. Jeżeli jeden z filozofów będzie miał żarłocznych sąsiadów, którzy
głó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 z
nich nie ma być wyróżniony. Potrzebny jest zewnętrzny arbiter (lokaj) decydujący, którzy
filozofowie będą mieli pierwszeństwo w spornych przypadkach. Lokaj dba o to, aby w każdej chwili
co najwyżej czterech filozofów konkurowało o widelce podnosząc je sekwencyjnie (jak w
rozwią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ś z
pozostał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 go
zmieniając w nim wszystkie litery na duże, a następnie wysyła tak przetworzony ciąg znaków z powrotem do
klienta. 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 klient-
serwer z 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 oraz
danych dla poszczególnych klientów.



10. gniazdo (socket) – klient-serwer.

Zadanie jak w pkt.9 z wykorzystaniem gniazda.


Wyszukiwarka

Podobne podstrony:
EiZI Projekt GiG4 2012 id 15450 Nieznany
Projekt SO
Konspekt projektu SO
Projekty OS projekty z so zima 2010
Pedagogika czasu wolnego formularz projektu 2011-2012, Materiały na studia, Turystyka i Rekreacja, P
BST projekt 2011 2012
Projekt zaliczenie 2012, MECHATRONIKA, IV Semestr, Projektowanie Układów Elektronicznych
projekty asb 2012
PROJEKT CAMELOT 2012 ROK budoj tunele zbieraj zywnosc nie licz na pomoc rzadu
projekty-2011-2012, Elektrotechnika AGH, Semestr V zimowy 2014-2015 - MODUŁ C, semestr V (moduł C),
projekt z 5 11 2012 id 399823 Nieznany
BT Program Projektu 2011 2012
Projekty OS, projekty z so zima 2010
Projekt SO
EiZI Projekt GiG4 2012 id 15450 Nieznany
Krzysztof Ochab oraz Anna Skibińska projekt wina 2012 2013

więcej podobnych podstron