Zadanie laboratoryjne "Szybkie wyszukiwanie procesu"
Spis treści
Wprowadzenie
Pamięć operacyjna dzisiejszych komputerów osobisych jest bardzo często
dużo mniejsza niż zapotrzebowanie procesów. Dlatego w systemach proces
najczęsciej nie posiada wszystkich potrzebnych do poprawnego działania
danych w pamieci RAM. W tym celu powstał model pamieci wirtualnej
i stronicowanie. Najprościej mówiąc polega on na tym, że proces posiada
w pamięci RAM tylko pewien zbiór stron, a w momencie kiedy odwołuje się
poza niego strona ta jest sprowadzana z dysku do pamięci.
W sytemie Linux aby pamięć mogła być przydzielana dla procesów i ich
stron system co jakiś czas wywoluje funkcję swap_out która próbuje
usunąć jakąś stronę z pamięci RAM.
Postawienie zadania
W momencie kiedy wybieramy proces (w funkcji swap_out z pliku
vmscan.c) któremu chcemy usunąć z pamięci stronę przeglądamy sekwencyjnie
tablicę zawierającą wskaźniki na procesy. Tablica ta zawiera wiele pól
o wartościach NULL. Ponadto zawsze zaczynamy od procesu na którym ostatnio
zakończyliśmy przeszukiwanie - zmienna statyczna 'swap_task '.
Zadanie polega na nastepujacej zmianie:
Chcemy aby zamiast przeszukiwania tablicy (o wielu polach równych NULL)
przeszukiwać procesy za pomoca listy.
Testy, obserwacje i wnioski
W celu przetestowania proponuję przetestować zmianę w sytuacji kiedy
w systemie będzie diametralnie zmieniała się liczba procesów i będzie
dużo żądań udostępnienia strony. Wtedy właśnie powstanie dużo pól w
tablicy o wartościach NULL i optymalizacja może być widoczna.
Bibliografia
- Pliki źródłowe Linuxa :
- linux/mm/vmscan.c
- linux/kernel/fork.c
- linux/include/sched.h
- Projekt LabLinux
Autor: Radosław Szymaszek