Do tematu: Zarządzanie pamięcią

Do tematu: Struktury danych

struct mem_map_t ( page )

    Strukturę zdefiniowano w pliku: ../include/linux/mm.h
    Struktura przechowuje informacje o ramce pamięci fizycznej.  W pliku ../include/linux/mm.h zadeklarowano tablice :

    extern mem_map_t *mem_map.

Służy do trzymania informacji o każdej ramce fizycznej pamięci oprócz tej, ktora została wykorzystana przy inicjowaniu systemu.
 
Typ  Nazwa Opis
atomic_t  count mówi nam czy dana ramka jest wolna ( 
count == 0) czy też nie  (count == liczba procesów  odwołujących się do tej ramki  +1 jeżeli ma zaalokowane bufory)
unsigned  dirty:16, 
age:8
mówi czy ramka była modyfikowana; 
służy do trzymania wieku ramki
unsigned  flags  różne  flagi
struct  wait_queue *  wait kolejka procesów czekających na zakończenie operacji I/O na ramce.
struct page *  next 1.jeżeli ramka jest wolna to pole sluży do zarządzania  wolnymi ramkami ( patrz struct  free_area_struct  )  tworząc dwukierunkową listę cykliczną wraz z polem prev. 
2. jeżeli  jest to ramka z mapowania i-węzła to z polem prev tworzą dwukierunkową listę stron tego i-węzła.
struct page * next_hash wraz z polem prev_hash tworzą kolejkę haszującą do wyszukiwania stron z mapowania i_węzłów przez jądro w tablicy haszujacej.
unsigned long offset  offset w pliku 
struct  i_node  * inode  i_węzeł z mapowania, z którego ta strona pochodzi, jeżeli nie to NULL.
struct page * prev patrz struct page ->next
struct page * prev_hash patrz pole struct page->next_hash
struct buffer_head  * buffers gdy ramka ma zaalokowane bufory to wówczas page->buffers tworzy cykliczną listę tych buforów.
unsigned long swap_unlock_entry
unsigned long map_nr offset w tablicy stron mem_map (page->map_nr ==  page -mem_map )