Syllabus Lab 5


Syllabus Lab #5
Cel zajęć:
Celem zajęć jest samodzielne napisanie programu ilustrującego zablokowanie procesu
macierzystego.
Opis programu:
Napisać program, w którym tworzony jest proces potomny, który tworzy N wątków, gdzie N jest
wprowadzane przez użytkownika w konfiguracji i N jest z przedziału (1,10]. Wątki (w swoim
kodzie) wyświetlają kolejność, z którą zostały utworzone (przekazaną przez proces potomny, w
którym zostały utworzone). Proces potomny kończy się, gdy wszystkie wątki przez niego
utworzone się zakończą i po swoim zakończeniu przekazuje do procesu macierzystego (jako kod
powrotu) liczbę odpowiadającą ilości wątków, które utworzył. W międzyczasie proces macierzysty
czeka na zakończenie tego procesu potomnego. Należy zapewnić, że proces macierzysty zostanie
zablokowany przed zakończeniem procesu potomnego. Po zakończeniu procesu potomnego, proces
macierzysty odblokowuje się i sprawdza, jak proces potomny został zakończony. Jeśli proces
potomny został zakończony poprawnie, proces macierzysty wyświetla kod powrotu procesu
potomnego.
Należy wykorzystać funkcje:
fork  tworzenie kopii procesu (funkcja 6.9, str. 76)
waitpid  czekanie na zakończenie procesu potomnego (funkcja 6.12, str. 82)
pthread_create  tworzenie procesu (funkcja 7.1, str. 98)
WIFEXITED  sprawdzanie poprawności zakończenia procesu (tab. 6.4 str. 85)
Dodatkowe informacje:
1. Przekazywanie parametru do kodu wątku oraz rzutowanie tego parametru na zmienną typu int
jest zilustrowane w przykładzie List 7.2 str 101 oraz List.7.4 na str. 106
2. Testowanie zakończenia proecsu jest zilustrowane w przykładzie List.6.5 na str. 85
UWAGA! W przykładzie List. 6.5 nazwa funkcji WIFEXITED z tabeli 6.4 została nieprawidłowo
przepisana
Dla dociekliwych:
Zbadać zachowanie program, gdy:
- W funkcji main w pętli tworzącej wątki jest funkcja sleep vs.:
a) funkcja printf poprzedzona funkcją sleep jest w kodzie wątku,
b) funkcja sleep poprzedzona funkcją printf jest w kodzie wątku.
Wyniki można przedstawić w formie grafu na tablicy.
Wskazówki do program:
Najwygodniej jest zacząć program od wywołania funkcji tworzącej wątek, która wymaga (jako 3.
parametr) dodatkowego kodu. Następnie rozbudowujemy program o przekazanie parametru
(argument 4. Funkcji pthread_create). W kolejnym kroku dodajemy pętle tworzącą N wątków.
Teraz jesteśmy gotowi na dodanie funkcji fork oraz waitpid.
W ramach ćwiczenia, student:
1. Doskonali umiejętność pisania programu dla złożonego zagadnienia opisanego tekstowo
2. Doskonali umiejętność posługiwania się materiałami zródłowymi, w tym książki o
programowaniu oraz strony internetowej z instrukcją użytkownika dla wsparcia systemu QNX
3. Przyswaja wiedzę z zagadnienia obsługi zakańczania procesów
4. Poznaje metodę tworzenia i zakończenia wątków
5. Poznaje sposób na wprowadzenie parametrów do programu


Wyszukiwarka

Podobne podstrony:
Syllabus lab 2
Syllabus Lab 6
Lab cpp
lab 2
T2 Skrypt do lab OU Rozdział 6 Wiercenie 3
IE RS lab 9 overview
lab pkm 3
lab chemia korozja
lab tsp 3
socjologia syllabus
Lab
Syllabus do Modułu AM4 Arkusze kalkulacyjne, poziom zaawansowany wersja 1 0 6
Konsp Lab TK ZiIP sem3d 1st

więcej podobnych podstron