next up previous
Next: Funkcje wywoływane podczas przydzielania Up: Tablice stron procesu Previous: Obsługa tablic stron

Przydzielanie i zwalnianie pamięci tablic stron

W pierwszym przybliżeniu przydzielanie i zwalnianie pamięci tablic stron nie różni się od sposobu w jaki jądro przydziela i usuwa pamięć przeznaczoną do innych celów: By przydzielić jądro wywołuje funkcję kmalloc(), albo __get_free_page(), by zwolnić funkcję kfree, albo free_page() (są to standardowe funkcje przydzielające i zwalniające pamięć na potrzeby jądra, ich działanie nie modyfikuje tablic stron, więc mogą zostać wykorzystane w funkcjach je obsługujących).

Szczegółowy opis jest bardziej skomplikowany:

Aby przyspieszyć przydzielanie i usuwanie ramek przeznaczonych do pamiętania tablic stron wprowadzono pamięć podręczną tablic stron. Idea jej działania jest taka sama jak idea działania innych pamięci podręcznych w Linuxie. Składa się ona z trzech list wolnych ramek -- po jednej liście na każdy typ tablicy stron. Makro xxx_quicklist wskazuje na głowę danej listy. Zwalniane ramki są umieszczene w odpowiedniej liście, dopóki jej rozmiar nie przekroczy poziomu krytycznego, co sprawdza funkcja check_xxx_cache(). Gdy zostanie przekroczony poziom krytyczny funkcja ta zwalnia bloki stronicowe, aż do osiągnięcia pewnego poziomu minimalnego.



Wojciech Jaworski 2001-12-16