next up previous contents
Next: Postępowanie przy dużym obciążeniu Up: Pamięć Wirtualna w Linuksie Previous: Obsługa błędów strony   Spis rzeczy

Postarzanie stron (ang. page aging)

Na różnych architekturach bit ,,brudnej strony'' jest ustawiany sprzętowo lub nie.

Każda ramka ma przypisany wiek - pewną liczbę większą lub równą zero. Podczas przeglądania pamięci (przeglądamy fizyczne ramki) w poszukiwaniu stron do usunięcia zwiększamy wiek strony jeżeli był do niej dostęp i zmniejszamy jeżeli nie było. Po osiągnięciu wieku zerowego ramka staje się kandydatem do usunięcia z pamięci fizycznej.

Jądro przechowuje listy stron: aktywnych i nieaktywnych. Struktury te pozwalają na przybliżone posortowanie stron według najdłuższego okresu nieużywania (Linux przybliża algorytm LRU).

Proces postarzania stron (zmniejszania ich wieku w związku z brakiem odwołań) odbywa się na liście stron aktywnych. Strony, które osiągną zerowy wiek są przenoszone na listy stron nieaktywnych.

Strony, które nie są jeszcze kandydatami do usunięcia znajdują się na liście stron aktywnych, w tablicach stron procesów lub jednocześnie w obu. Jeżeli podczas przeglądania pamięci znajdziemy ramkę odwzorowaną przez jakiś proces, ale nie używaną, to przenosimy ją na listę stron aktywnych, aby umożliwić zwolnienie miejsca.

Strony nieaktywne (o wieku równym zero) są podzielone na dwie listy: nieaktywne ,,brudne'' (ang. inactive dirty) i nieaktywne ,,czyste'' (ang. inactive clean). Te drugie mogą być w każdej chwili udostępnione jako wolna pamięć, ponieważ są zgodne ze swoim odpowiednikiem dyskowym (plik wymiany, plik z kodem itd.), czyli ,,czyste'', dodatkowo dane na nich zawarte są aktualne, więc nowe odwołanie do nich skutkuje w natychmiastowym odwzorowaniu. Nieaktywne strony ,,brudne'' są wymiatane na dysk po zebraniu pewnej ich ilości (w celu usprawnienia operacji dyskowych - zapisywanie pojedynczych stron często przerywa strumieniowy odczyt drastycznie zmniejszając wydajność) i przenoszone na listę nieaktywnych ,,czystych''.

W trakcie postarzania wiek stron jest zmniejszany dwukrotnie. Zmniejsza to obciążenie procesora i pozwala na szybsze reagowanie na zmiany obciążenia systemu.

Postarzanie stron odbywa się ciągle ,,w tle''. Dzięki temu na bieżąco wiadomo, które strony są mało używane i w przypadku gwałtownego wzrostu obciążenia wiadomo co usunąć z pamięci.


next up previous contents
Next: Postępowanie przy dużym obciążeniu Up: Pamięć Wirtualna w Linuksie Previous: Obsługa błędów strony   Spis rzeczy
Jarek Babel 2002-12-10