next up previous contents
Next: Przydział pamięci dla jądra Up: Pamięć Wirtualna w Linuksie Previous: Postępowanie przy dużym obciążeniu   Spis rzeczy

Pamięć podręczna stron i pliku wymiany (ang. page cache, swap cache)

Celem pamięci podręcznej jest utrzymywanie w pamięci jak największej ilości przydatnych danych, w ten sposób żeby błędy braku strony były obsługiwane szybko. Większość pamięci procesu użytkownika znajduje się w pamięci podręcznej stron lub pliku wymiany (ang. swap cache). Przeważnie strona użytkownika jest dodawana do pamięci podręcznej podczas pierwszego odwzorowania w przestrzeń adresową procesu i pozostaje tam do momentu odwołania do użycia przez inny proces lub przez jądro.

Pamięć podręczna jest ,,warstwą'' systemu znajdującą się pomiędzy jądrem i kodem obsługującym dyskowe operacje wejścia wyjścia. Strony wymiatane z pamięci procesu nie są natychmiast zapisywane na dysk, ale dodawane do pamięci podręcznej.

Każda strona kodu (lub pliku odwzorowywanego do pamięci) jest związana z pamięcią podręczną i-węzłów (ang. inode cache), dzięki czemu plik dyskowy może posłużyć jako zewnętrzny magazyn. Strony anonimowe, nie związane z definicji z jakimś plikiem (np. przydzielane przez malloc()) magazynuje się w systemowym pliku wymiany (ang. swap file) i czasowo przechowuje w pamięci podręcznej pliku wymiany. Dopóki nie zostaną wycofane z odwzorowania pamięci procesu, w którym rozpoczęły swoje istnienie strony te nie są dodawane do pamięci podręcznej pliku wymiany i nie mają zarezerwowanej przestrzeni w pliku wymiany . W przeciwieństwie do stron odwzorowywanych z plików, które po utworzeniu znajdują się w pamięci podręcznej stron. Stąd widać potrzebę istnienia dwóch rodzajów pamięci podręcznych stron.

Listy opisane w rozdziale ,,Postarzanie stron...'' są częścią pamięci podręcznej stron. Dodatkowo w jej skład wchodzą tablice mieszające i inne struktury związane z plikami odwzorowywanymi w pamięci.

Strony dodawane do pamięci podręcznej stron najpierw umieszczane są na liście stron nieaktywnych.


next up previous contents
Next: Przydział pamięci dla jądra Up: Pamięć Wirtualna w Linuksie Previous: Postępowanie przy dużym obciążeniu   Spis rzeczy
Jarek Babel 2002-12-10