Struktura nagłówka ramki - opis skrócony

Bardziej szczegółowy opis powinien być w rozdziale poświęconym obsłudze tablicy ramek. Każda ramka w systemie Linux jest skojarzona ze strukturą page. Struktura przechowuje informacje o ramce pamięci fizycznej. Jest zdefiniowana w pliku mm.h.

typedef struct page {
struct list_head list;
struct address_space *mapping;
unsigned long index;
struct page *next_hash;
atomic_t count;
unsigned long flags;
struct list_head lru;
unsigned long age;
wait_queue_head_t wait;
struct page **pprev_hash;
struct buffer_head *buffers;
void *virtual;
struct zone_struct *zone;
} mem_map_t;

Znaczenie pól:

list
  1. jeżeli ramka jest wolna, to przez to pole jest dołączona do dwukierunkowej listy wolnych ramek
  2. jeżeli jest to ramka z mapowania i-węzła, to przez to pole jest dołączona do dwukierunkowej listy wczytanych stron tego i-węzła
*mapping wskaźnik (zwrotny) na strukturę opisującą przestrzeń adresową (np. przestrzeń inode'a) do której jest przypisana ta ramka
index offset w mapowanym pliku, od którego zaczyna się obszar mapowany w tej ramce. Offset ten nie musi być wielokrotnością rozmiaru ramki (PAGE_SIZE)
*next_hash wskaźnik na następną ramkę w kubełku tablicy mieszającej
count zawiera liczbę odniesień do ramki (0 ramka nie była używana)
flags flagi, szczegóły w rozdziale poświęconym tablicy ramek
lru lista do realizacji algorytmu LRU na ramkach
age licznik wieku ramki
wait kolejka procesów czekających na odblokowanie ramki (np. na zakończenie operacji I/O na ramce)
**pprev_hash wskaźnik na poprzednią ramkę w kubełku tablicy mieszającej
*buffers jeżeli ramka jest wykorzystywana na bufory dyskowe, to jest to wskaźnik na listę nagłówków buforów umieszczonych na tej ramce w przeciwnym przypadku jest tu NULL
*virtual adres wirtualny
*zone strefa pamięci, w której znajduje się ramka. Pamięć fizyczna PC jest dzielona na 3 strefy. W każdej strefie pamięć jest zarządzana osobno. Szczegóły powinny być w rozdziale o organizacji pamięci fizycznej i w pliku mmzone.h.


Tomasz Szymko 25 listopada 2001