- ...do_swap_page()1
- Funkcja ta jest uruchamiana w przypadku błędu braku strony (page fault); znajduje się w pliku mm/memory.c
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...try_to_swap_out()
2
- Wszystkie funkcje swap_out_*() oraz try_to_swap_out() znajdują się w pliku mm/vmscan.c
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... odwiedzana3
- Warto zwrócić uwagę, że jest to drugie
miejsce, gdzie możemy postarzać stronę (po refill_inactive_scan()).
Różnica polega na tym, że tu patrzymy na bit _PAGE_BIT_ACCESSED, a nie
PG_referenced.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... stroną4
- System traktuje strony nieaktywne jako już wysłapowane, jedyna różnica polega na tym, że jeżeli ktoś się do nich odwoła to nie trzeba będzie ich ściągać z dysku
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... strony5
- Jeżeli dużo procesów odwołuje się do strony, to zostaje ona wyswappowana dopiero, gdy page->count == 1, czyli odwołanie tylko ze swap_cache. W ten sposób nie wyrzucamy strony, dopóki nie wyswappujemy jej od wszystkich procesów
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... wyswappowana6
- pte wskazuje na swap entry, do którego została przypisana strona
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... inactive\_target7
- To porównanie znajduje się w funkcji inactive_shortage()
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
inactive\_target8
- Deklaracja znajduje się w pliku includeinuxwap.h
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.