Do tematu: Struktury danych
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 ) |