Zadanie 7 – Pamięć Współdzielona

Zadanie 7 z pamięcią współdzieloną.

Zadanie 6 – semafory

Ocenione: 5

Zadanie 6 z semaforami.

Cw. 5. Potoki nazwane

Ocenione: 5

Program zad005 jest programem typu Producent – tworzy potok fifo i zapisuje
do niego dane podane w input.txt (mozna zmienic w defs.h zamieniajac
definicje DEFAULT_INPUT_FILE). Dziala w petli az do zakonczenia czytania.

Program zad005-2 jest programem typu Konsument – odczytuje z potoku w
nieskonczonej petli dane zapisywane przez program zad005 i zapisuje wynik
do output.txt (mozna zmienic w defs.h zamieniajac definicje DEFAULT_OUTPUT_FILE.
Program moze byc zakonczony jedynie przez wylaczenie go przez uzytkownika.

Oba programy symuluja rozne prace programow typu Producent i Konsument poprzez
wstrzymywanie sie na losowa liczbe sekund (nie wieksza niz DEFAULT_MAX_SLEEP_TIME)

Ćw. 4. Potoki nienazwane + Symulacja roznych czasow

Ocenione: 5

Ćw. 4. Potoki nienazwane

Program pobiera po maksymalnie NBYTES (domyslnie 32) bajty z pliku INPUT_FILE (domyslnie input.txt) w kazdej iteracji petli while, po czym przesyla je przy pomocy pipe do procesu potomnego, ktory  zapisuje to, co otrzymal do OUTPUT_FILE (domyslnie output.txt). W przypadku, gdy OUTPUT_FILE  nie istnieje, zostaje utworzony.

Ćw. 3. Sygnały

Ocenione: 5

Notka do programu: warto zauwazyc, ze sig jest programem z podpunktu a) natomiast zad003 to polaczone w jeden programy z b) i c). W sumie to wiecej nie ma do dodania. Blad jaki moze sie pojawic to jesli w execl brakuje „.x” na koncu scieżki. Dodatkowe pytania do zadania: co robi funkcja signal()? co robi funkcja kill()? jak przesłać sygnał do całej grupy procesów? jakie sygnaly nie moga byc przechwycone przez program?

Opis programu (README):

Program sig jest programem z podpunktu a, przechwytuje [ctrl] + [c], [ctrl] + [\] oraz wywalenie od innego procesu przy pomocy kill z uzyciem sygnału SIGUSR1

Program zad003 to podpunkty b i c, wywoluja kilka proceow, ktore wylaczaja sie po otrzymaniu odpowiednich sygnalow z procesu macierzystego.

Ćw. 2. Uruchamianie programow przez execl()

Ocenione: 4.5

Notka do programu: Szczerze mówiąc program jest napisany dobrze, jedyny błąd, który spowodował 4.5 zamiast 5 był w pytaniu o to, co dokładnie robi execl, czyli, że zamienia kod programu na kod podany w argumentach funkcji exec. Dodatkowe pytania do zadania: co robi exec? czym sa argumenty w execl() i execv()? D

Opis programu (README):

Program zad002 wywołuje 3 razy funkcje fork(), każdy z procesów potomnych wyświetla informacje na temat swoich UID, PID, GID, PPID, PGID przez program wyswietl, ktory sluzy tylko do tego.

Ćw. 1. Procesy potomne – fork()

Ocenione: 5

Notka do programu: w zadaniu chodziło o wyświetlenie 7dmiu programow, blad byl w interpretacji, poniewaz widząc „wywołaj for 3 razy” myślałem, że chodzi o dokładnie 7 razy. Cóż, wychodzi na to, że 3 = 7, w każdym razie szybko da się z tego wybrnąć. Dodatkowe pytania do zadania: co robi fork()? co dokladnie robi program potomny wywolany przez fork()? dlaczego petla jest wykonywana łącznie siedem razy?

Opis programu (README):

Program tworzy sluzy do wyswietlenia informacji na temat identyfikatorow UID, GID, PID, PPID i PGID dla programu macierzystego oraz 3 procesow potomnych.

Genealogia proceow wyglada tak:

Proces macierzysty
-> Proces potomny 0
-> Proces potomny 1
-> Proces potomny 2

Program jest skonstruowany w taki sposob, aby procesy potomne nie wyswietlaly kolejnych procesow potomnych.

 


Aby rozpakować archiwum należy użyć polecenia

tar -xf zadXXX.tar.gz

Wszystkie programy zostały w całości napisane przeze mnie i zastrzegam sobie wszelkie prawa do nich. Zostają udostępniane jako materiały pomocnicze do nauki i mogą służyć jedynie do porównania lub podejrzenia działania programów, nie zezwala się na jakiekolwiek kopiowanie lub rozpowszechnianie w jakiejkolwiek formie bez zgody autora.

Warto wiedzieć:
Kopiowanie jakichkolwiek treści bez podania autora jest plagiatem, zgodnie z art. 115 ustawy o prawie autorskim i prawach pokrewnych:

Kto przywłaszcza sobie autorstwo albo wprowadza w błąd co do autorstwa całości lub części cudzego  utworu albo artystycznego wykonania, podlega grzywnie, karze ograniczenia wolności albo pozbawienia wolności do lat 3.