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 |
|
*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. |