<<<<<<<<<<           >>>>>>>>>>

Struktury danych - page

 
 
 
 
 
 
 
 
 

Każda ramka w pamięci posiada swój opis w postaci struktury page. Opisy wszystkich ramek są inicjowane przy starcie systemu. Rozmiar struktury page to około 50 bajtów, tak więc ponad 1% całej pamięci jest przeznaczone na tablice struktur page (przy rozmiarze ramki równym 4096 bajtów i czterobajtowym słowie). Struktury są przechowywane w oddzielnych tablicach dla każdej strefy pamięci. Mając adres ramki można znaleźć opisującą ją strukturę. Mianowicie mając adres ramki i początkowy adres strefy do której ramka należy, można wyznaczyć numer ramki w danej strefie, a tym samym indeks do odpowiedniej tablicy.

Struktura list_head zawiera dwa wskaźniki tej samej struktury. Jest używana do łączenia ramek w listy. Listy mogą być różne, w zależności od tego, jak strona jest używana. Jeśli jest to pierwsza ramka wolnego bloku, to lista jest listą wolnych bloków. Przykładowo, jeśli w systemie są wolne ramki o numerach 0, 1, 2, 3, 4 to ramka 0 leży na liście wolnych bloków rozmiaru 4. Ramki 1, 2, 3 nie leżą na żadnej liście wolnych bloków, a ramka 4 leży na liście wolnych bloków rozmiaru 1. Widać już jak można w czasie stałym usunąć bliźniaka z listy wolnych bloków. Trzeba w tym celu znaleźć jego adres, na podstawie adresu znaleźć właściwą strukturę page i zmienić następnika poprzedniego elementu listy i poprzednika następnego.