next up previous contents
Next: inactive_clean_list's Up: Listy active_list, inactive_dirty_list oraz Previous: active_list   Spis tresci

inactive_dirty_list

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):

  1. Najpierw próbuje wyczyścić strony, które nie wymagają wykonania operacji IO czyli:
  2. 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 up previous contents
Next: inactive_clean_list's Up: Listy active_list, inactive_dirty_list oraz Previous: active_list   Spis tresci
Łukasz Heldt 2001-12-18