Ponieważ w funkcjach wstawiających stronę do bufora
stron nie ma specjalnych rewelacji, to ograniczę się do opisu
algorytmu dodawania nowej strony. Ciekawskich odsyłam do pliku
filemap.c. W szczególności warto zajrzeć do funkcji:
page_cache_read - wczytanie strony do bufora
add_page_to_hash_queue - dodanie strony do kubełka
add_page_to_inode_queue - dodanie strony do przestrzeni adresowej pliku
Wszystkie inne funkcje dodające stronę do bufora, służą do
obsłużenia różnych przypadków ustawienia flag i ochrony, ale
zasadniczo do wykonania właściwej roboty korzystają z trzech
powyższych funkcji.
Ogólnie rzecz biorąc, strona jest dodawana do bufora stron zawsze,
gdy funkcja obsługująca wyjątek braku strony (ang. page fault), nie
znajdzie tej strony w buforze stron. Bez zagłębiania się w szczegóły
techniczne, można powiedzieć, że dodawanie strony do bufora wygląda tak:
-- tworzona jest nowa ramka, do której wczytywane są dane z pliku.
-- ramka ta dołączana jest do odpowiedniego kubełka tablicy mieszającej.
-- ponadto wstawia się tę ramkę do listy ,,czystych'' stron związanej
z przestrzenią adresową danego pliku.
Tomasz Szymko 25 listopada 2001