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

  1. Pliki źródłowe Linuxa :
  2. Projekt LabLinux

Autor: Radosław Szymaszek