Next: kswapd (Kernel Swap Daemon)
Up: Algorytm postarzania stron
Previous: Funkcja do_swap_page()
  Spis tresci
Przyjrzyjmy się życiu strony:
- Podczas tworzenia strona nie jest na żadnej liście
- Jeżeli systemowi zacznie brakować pamięci wywoła funkcję
swap_out() w celu zdeaktywowania pewnej liczby stron, czyli przeniesienia ich na listę
inactive_dirty_list. Od tego momentu proces odwołuje się do tej strony
poprzez wyjątek page fault ustawiając bit PG_referenced (poprzez funkcję do_swap_page()).
Strona teraz może przemieścić się na listę active_list, jeżeli proces się
do niej odwoła lub na listę inactive_clean_list, jeżeli będzie brakowało
pamięci i zostanie wywołana funkcja page_launder(), zapisująca stronę na
dysk.
- W momencie, gdy algorytm bliźniaków będzie potrzebował strony, w którejś
zonie wywoła funkcję
reclaim_page(), która wyrzuci jedną ze stron z listy
inactive_clean_list. W tym momencie strona nie jest na żadnej z list. Jej
obraz znajduje się na dysku (na urządzeniu swappującym, bądź w systemie plików,
jeżeli była ona mapą pliku).
- Teraz jeżeli proces znowu odwoła się do tej strony zostanie ona ściągnięta
poprzez funkcję
do_swap_page(), ale nie będzie się znajdowała na żadnej
z list. Czyli strona nie będzie swappowana, dopóki znów nie zostanie wywołana
funkcja try_to_swap_out() na tej stronie.
Next: kswapd (Kernel Swap Daemon)
Up: Algorytm postarzania stron
Previous: Funkcja do_swap_page()
  Spis tresci
Łukasz Heldt
2001-12-18