next up previous contents
Next: kswapd (Kernel Swap Daemon) Up: Algorytm postarzania stron Previous: Funkcja do_swap_page()   Spis tresci

Podsumowanie wiedzy o listach

Przyjrzyjmy się życiu strony:
  1. Podczas tworzenia strona nie jest na żadnej liście
  2. 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.
  3. 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).
  4. 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 up previous contents
Next: kswapd (Kernel Swap Daemon) Up: Algorytm postarzania stron Previous: Funkcja do_swap_page()   Spis tresci
Łukasz Heldt 2001-12-18