Next: 1.3.2 Prawa dostępu do
Up: 1.3 Regiony pamięci
Previous: 1.3 Regiony pamięci
  Spis rzeczy
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
|
Rysunek:
Regiony pamięci w drzewie AVL
|
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: 1.3.2 Prawa dostępu do
Up: 1.3 Regiony pamięci
Previous: 1.3 Regiony pamięci
  Spis rzeczy
2001-11-25