ZADANIE PROJEKTOWE
Treść zadania:

Zaprojektuj i zaprogramuj strukturę, która będzie przechowywać w systemie informację o liczbie procesów uruchomionych przez każdego działającego w systemie użytkownika. Struktura ta ma być tworzona i modyfikowana dynamicznie podczas działania systemu w chwili powoływania do życia nowego procesu, jego œśmierci oraz zakończonej sukcesem próby zmiany identyfikatora użytkownika danego procesu.

Stworzonej struktury użyj do zmodyfikowania algorytmu funkcji fork, a dokładniej jego części odpowiadającej za sprawdzenie, czy użytkownik tworzący proces nie przekroczył nałożonych nań ograniczeń na liczbę uruchomionych procesów. Zastosowanie dobrze zaprojektowanej struktury powinno skrócić œśredni czas sprawdzenia tego warunku.
Po odpowiednim zmodyfikowaniu kodu źródłowego sprawdź przy pomocy testów, czy nowy sposób zliczania procesów użytkownika daje takie same wyniki jak oryginalny algorytm. Pamiętaj, że przekroczenie limitu na liczbę procesów użytkownika jest niedopuszczalne.

Niedozwolone jest przechowywanie informacji o użytkownikach nieobecnych w systemie. Należy za to pamiętać, że liczba użytkowników mogących korzystać z systemu - posiadających konta - jest (teoretycznie) nieograniczona.

Z czym warto się zapoznać przed rozpoczęciem pracy:

Radzę również zajrzeć do pliku include/sched.h z definicjami najważniejszych struktur systemowych i makr odpowiedzialnych za zarządzanie procesami.
Testy struktury mogą, na przykład, polegać na zapisie odpowiednich wartości do pliku kontrolnego podczas każdego wykonania funkcji fork, w chwili sprawdzenia ograniczenia (funkcja find_empty_process w fork.c) - sprawdź, jak system radzi sobie z podobnymi zapisami w przypadku rejestracji parametrów używanych do rozliczania użytkownikow z zużytych zasobów.


Maciej Ogrodniczuk
26 stycznia 1998 r.