struct page * reclaim_page(zone_t *zone)
for each in zone->inactive_clean_list do
jeżeli strona ma ustawiony bit PG_referenced
wstaw stronę na listę active_list
continue;
jeżeli strona ma ustawiony bit PG_dirty
wstaw stronę na listę inactive_dirty_list
continue;
del_page_from_inactive_clean_list(page)
/* usuwamy stronę z list; teraz już do żadnej nie należy */
jeżeli strona ma swoje cache
/* niszczymy dodatkowe struktury związane ze swappowaniem strony */
__delete_from_swap_cache(page);
return page;
if (page->mapping)
/* strona jest mapą pliku, więc trzeba ustawić odpowiednie informacje w strukturach danych inodów */
__remove_inode_page(page);
return page;
Poniższy diagram pokazuje zależności między listami i rodzaje migracji stron między nimi: