[ANSI C][LINUX] Semafory: wzajemne wykluczanie sie procesow

Przy pomocy semaforow systemu UNIX zaimplementowac zadanie wzajemnego wykluczania dla procesow. Czas operacji na wspolnym zasobie symulowac uzywajac np. funkcji sleep. Dla demonstracji poprawnosci dzialania programu uzyc odpowiednich komunikatow wypisywanych przez poszczegolne procesy przed, w trakcie i po sekcji krytycznej oraz funkcji podajacych stan semafora i liczbe procesow pod nim czekajacych. Pamietac o zainicjowaniu semafora odpowiednia wartoscia zaraz po jego utworzeniu. Stworzyc wlasna biblioteke prostych w uzyciu funkcji do: tworzenia, uzyskiwania dostepu, inicjowania, sterowania, operowania i usuwania semaforow (korzystajacych z odpowiednich funkcji systemowych, ale ukrywajacych ich szczegoly techniczne). Napisac specjalny program do powielania procesow realizujacych wzajemne wykluczanie – w oparciu o funkcje fork i exec (nazwe programu do inicjowania procesow oraz liczbe procesow mozna przekazywa´c przez argumenty programu ,,powielacza”). Program ten powinien na poczatku utworzyc i zainicjowac semafor, a na koncu go usunac (kiedy wszystkie jego procesy potomne zakoncza swoje dzialanie).

____________________________________________________________________
Program nr 1: glowny: header.h funkcje.c glowny.c
Uruchamia program nr za pomocą exec oraz uruchamia go podana ilosc razy. Program tworzy semafor, inicjuje go i podnosi.

Program nr 2: powielacz: header.h funkcje.c powielacz.c
Program ktory jest uruchamiany przez exec() z poziomu pierwszego programu. Odpowiada za sekcje krytyczne.


Oba programy wyswietlaja stosowne komunikaty.
_____________________________________________________________________

_____________________________________________________________________

KOMPILACJA...
----------------------------------------------------------------------
W katalogu znajduje sie plik MAKEFILE z podstawową funkcjonalnością.
W celu skompilowania plików, należy wykonać komendę:
make

... I URUCHOMIENIE
----------------------------------------------------------------------
w celu uruchomienia programów, należy wykonać komendę: (podana wartosc jest przykladowa, mozna uzyc innej liczby !=0)

PROGRAM 1:
./glowny powielacz 5
PROGRAM 2:
./powielacz

W celu wyczyszczenia katalogu ze wszelkich plików wynikowych, należy użyć komendy:
make clean


 klik:


Komentarze

Prześlij komentarz

Popularne posty z tego bloga

[c++] Lista wskaznikowa

[c++] słowniki - haszowanie - haszowanie otwarte

[ANSI C][LINUX] Wysyłanie i obsługa sygnałów