Funkcja swap_out_vma sprawdza czy dany obszar VMA ma ustawione
flagi:
VM_LOCKED lub VM_RESERVED.
Jeśli tak to nic nie robi z tym obszarem, bo flagi
te oznaczają, że dany obszar nie może być zabrany z pamięci.
W przeciwnym przypadku zaczyna wymianę ramek wchodzących w skład tego VMA
i w tym celu wywołuje funkcję:
swap_out_pgd, która z kolei woła funkcję:
swap_out_pmd
Zadaniem tych dwóch funkcji jest wymiana wszystkich lub tylko
count ramek należących do danego VMA. Toteż dla każdej ramki,
o ile jest to poprawna ramka i nie ma ustawionej flagi zabraniającej
wymiany, wołana jest funkcja:
try_to_swap_out
Funkcja try_to_swap_out dla zadanej ramki robi co następuje:
jeśli ramka ta przed chwilą była używana, procesor ustawił jej flagę dostępu,
to zostawia ją w pamięci, ale kasuje tę flagę i zwiększa wiek o 3.
W przeciwnym przypadku podejmuje się wymiany. Strona jest wymieniana
jeśli jest na nią miejsce w obszarze wymiany.
(to jest niewielkie uproszczenie, ale dobrze odzwierciedla całość).