Next: inactive_clean_list's
Up: Listy active_list, inactive_dirty_list oraz
Previous: active_list
  Spis tresci
Na tej liście znajdują się strony, które ''zostały skazane`` na ewentualne wyswappowanie, ale
muszą jeszcze być zapisane na urządzenie swappujące, zanim zostaną zwolnione.
Zapisywaniem brudnych stron na urządzenia swappujące zajmuje się w głównej mierze funkcja
page_launder() (plik mm/vmscan.c). Ma ona za zadanie przeniesienie jak największej liczby stron z listy
inactive_dirty_list na listy page->zone->inactive_clean_list.
Funkcja ma dwa przebiegi (przechodząc po wszystkich stronach na liście inactive_dirty_list):
- Najpierw próbuje wyczyścić strony, które nie wymagają wykonania operacji IO czyli:
- strony, które są mapami plików i nikt do nich nie pisał
- strony, które są buforami (wtedy funkcja wywołuje try_to_free_buffers(), próbując uwolnić bufory; jeżeli się powiedzie i nie ma dodatkowych procesów odwołujących się do tej strony to przerzucama ją do page->zone->inactive_clean_list)
- Jeżeli po przejściu pierwszego przebiegu nadal brakuje stron (free_shortage() > 0) wtedy funkcja
inicjuje faktyczny zapis stron na urządzeniach swappujących (budząc jednocześnie bdflushd odpowiedzialnego za operacje IO). Dokładniej wykonuje dla strony page:
page->mapping->a_ops->writepage(page)
Dodatkowo funkcja page_launder() sprawdza czy nie został ustawiony bit PG_referenced i jeżeli tak to przesuwa stronę na listę active_list.
Next: inactive_clean_list's
Up: Listy active_list, inactive_dirty_list oraz
Previous: active_list
  Spis tresci
Łukasz Heldt
2001-12-18