Spis treści
Treść zadania
Zadanie będzie polegać na zmianie sposobu przydzielania pid-u nowym
procesom oraz zmianie ilości dostępnych pid-ów.
1. Należy maksymalnie zmniejszyć ilość możliwych pid-ów z 32768 -
do wartości stałej NR_TASKS (która oznacza maksymalną ilość procesów działajacych
w systemie) - dla jądra 2.0.x wynosi ona 512.
2. Należy skrócić pesymistyczny czas
przydzielania pid-u do stałej (w tej chwili pesymistyczny czas znalezienia
pid-u jest zależny od NR_TASKS) niezależnej od żadnych stałych zdefiniowanych
w jądrze.
3. Zadanie posiada dwie wersje:
- a) łatwą - można zużyć dowolną (rozsądną*) ilość dodatkowej pamięci
- b) nieco trudniejszą - nie wolno zużywać dodatkowej pamięci (poza
być może zmiennymi tymczasowymi) - tzn. nie wolno dodeklarować żadnych
zmiennych globalnych
- * rozsądną oznacza np. NR_TASK*(długość słowa)
Opis testów
1. Podstawowym (ale nie najważniejszym) testem jest oczywiście uruchomienie
przekompilowanego jądra i porównanie szybkości działania z oryginalnym
jądrem. Porównanie takie powinno być wykonane poprzez program intensywnie
używający funkcji fork().
2. Drugim (ważniejszym) testem powinno być napisanie symulacji działania
funkcji get_pid() - zarówno oryginalnej jak i nowej - należy porównać ilość
odwołań do pól struktury task_struct oraz ilość odwołań do wszelkich zmiennych.
3. Należy także zastanowić się, czy w tym przypadku rozwiązanie
teoretycznie lepsze rzeczywiście lepiej się sprawdza w typowych zastosowaniach.
UWAGA: Testy stanowia najważniejszą
część zadania.
Lista ewentualnych
modyfikacji
- get_pid w fork.c
- sys_wait4 w exit.c
- find_empty_process w fork.c
- ew. funkcje usuwające proces ZOMBIE z tablicy procesów
Inne
Czas przewidziany na wykonanie zadania:
- 1 tydzień na przejrzenie funkcji, które będą modyfikowane oraz wymyślenie
idei rozwiązania
- 1 dodatkowy tydzień na przemyślenia w wersji trudniejszej
- 1 tydzień na implementację i wykonanie pierwszych testów
- 1 tydzień na dokończenie testów / symulacji, opracowanie wyników
i wyciągnięcie wniosków
Razem: 3 lub 4 tygodnie, zależnie od
wersji.
Autor: Karol Gołąb