Odwrotne odwzorowanie stron

Przypomnienie pojęć

Pamięć fizyczna podzielona jest na ramki (jednakowego rozmiaru).
Logiczna przestrzeń adresowa każdego procesu dzieli się na strony, o rozmiarze takim jak ramki.

Każdy proces posiada tablicę stron odwzorowującą adresy logiczne w adresy fizyczne (funkcja strony -> ramki).
Kiedy proces chce zajrzeć w miejsce w pamięci, które nie znajduje się w żadnej ramce, w wolną ramkę ładujemy potrzebne mu dane.

Zwalnianie ramek

System stara się utrzymywać pewną liczbę wolnych ramek, mniej używane odsyłając na dysk.
Jeżeli jednak chcemy zwolnić jakąś ramkę, procesy z niej korzystające muszą o tym wiedzieć.

Jedyną dostępną możliwością w Linuksie 2.4 było w takim przypadku przejrzenie tablic stron wszystkich procesów,
w celu odszukania tych odwołujących się do zwalnianej ramki i uaktualnienia bitu poprawności odwołania.

W jądrze Linuksa 2.6 dodatkowo z każdą ramką związana jest lista stron (wpisów w tablicach procesów),
które są w nią odwzorowywane.
Taka struktura pozwala na natychmiastowy dostęp do wpisów, które trzeba uaktualnić.

Na rysunku wygląda to tak:


odwrotne odwzorowanie stron w Linuksie 2.6
(źródło: www-106.ibm.com/developerworks/linux/library/l-mem26/?ca=dgr-lnxw95MemManage26)

Struktury

Pojedyncza ramka (strona fizyczna), jest reprezentowana następująco:
struct page {
page_flags_t flags; /* atomic flags, some possibly updated asynchronously */
atomic_t count; /* Usage count, see below. */
struct list_head list; /* ->mapping has some page lists. */
struct address_space *mapping; /* The inode (or ...) we belong to. */
unsigned long index; /* Our offset within mapping. */
struct list_head lru; /* Pageout list, eg. active_list;
protected by zone->lru_lock !! */

union {
struct pte_chain *chain;/* Reverse pte mapping pointer. */
* protected by PG_chainlock */
pte_addr_t direct;
} pte;

unsigned long private; /* mapping-private opaque data */
.............

};
Nowością w stosunku do jądra wesji 2.4 jest w tutaj unia pte.
Znajduje się tutaj lista wskaźników do wpisów w tabliach stron (PTE = Page Table Entry)
lub pojedynczy taki wskaźnik, gdy ramka znajduje się dokładnie w jednej stronie (taka optymalizacja).

Zalety

Wady

Literatura:


Powrót

Autor: Paweł Wrzeszcz, pw209308@zodiac.mimuw.edu.pl