next up previous contents
Next: 1.3.2 Prawa dostępu do Up: 1.3 Regiony pamięci Previous: 1.3 Regiony pamięci   Spis rzeczy

1.3.1 Struktury danych regionu pamięci

Wszystkie posiadane przez proces regiony są połączone w liste prostą. Zazwyczaj proces ma tylko kilka regionów pamięci, wtedy jądro do wyszukiwania ich stosuje przechodzenie po liście prostej. Gdy jednak liczba regionów przekroczy AVL_MIN_MAP_COUNT budowane jest z nich drzewo AVL, posortowane względem pola vm_end.

Na rysunku  1.3.1 widzimy powiązania pomiędzy deskryptorem pamięci procesu, a jego regionami pamięci. Z kolei na rysunku  1.3.1 widzimy drzewa AVL deskryptorów regionów pamięci.

Rysunek: Deskryptory związane z przestrzenia adresową procesu
\includegraphics[scale=0.75]{desc_pamieci.ps}

Rysunek: Regiony pamięci w drzewie AVL
\includegraphics[scale=0.75]{avl.ps}

Kolejnymi ważnymi polami deskryptora pamięci procesu są:

mmap
Wskazuje na pierwszy element na liście deskryptorów regionów pamięci danego procesu.
mm_count
Liczba regionów pamięci posiadanych przez proces (<= MAX_MAM_COUNT).
mmap_cache
Adres deskryptora regionów, z którego proces ostatnio korzystał.
mmap_avl
Wskazuje na korzeń drzewa AVL deskryptorów regionów pamięci.

Następnymi interesującymi nas polami deskryptora regionu pamięci są:

vm_next
Wskazuje na następny element na liście deskryptorów regionów pamięci.
vm_avl_left
Adres lewego potomka każdego węzłą drzewa AVL.
vm_avl_right
Adres prawego potomka każdego węzłą drzewa AVL.
vm_avl_height
Wysokość podrzewa o korzeniu w danym regionie.

Gdy do przestrzeni adresowej procesu dodawany jest nowy zakres adresów, jądro najpierw sprawdza czy można rozszerzyć juz istniejący region. Jeżeli można to go rozszerza, w przeciwnym przypadku dodaje nowy region.


next up previous contents
Next: 1.3.2 Prawa dostępu do Up: 1.3 Regiony pamięci Previous: 1.3 Regiony pamięci   Spis rzeczy
2001-11-25