Kto zaczyna wymianę stron?

Wymiana stron jest realizowana w funkcji swap_out. Funkcja ta jest wołana tylko przez funkcję refill_inactive, która jest z kolei wołana tylko przez funkcję do_try_to_free_pages. Funkcja do_try_to_free_pages jest zaś wołana przez demona kswapd i w pewnych szczególnych przypadkach przez funkcję __alloc_pages przydzielającą ramki pamięci (szczegóły w pliku page_alloc.c).

Tak więc widzimy, że wymiana stron jest inicjalizowana przez funkcje związane ze zwalnianiem i przydzielaniem pamięci. Każde żądanie wymiany stron dotyczy całego systemu, i gdy tylko jest zgłaszane to system (po przez funkcję swap_out) stara się wymienić tak dużo stron jak tylko jest to możliwe.


Tomasz Szymko 27 listopada 2001