next up previous contents
Next: Realizacja Up: Zarządzanie nieciągłymi obszarami pamięci Previous: Problem   Spis rzeczy

Rozwiązanie

Linux używa jeszcze jednej metody alokacji pamięci dostarczającej nieciągłych zestawów ramek fizycznych tłumaczonych na ciągłe adresy logiczne. Wymaga to oczywiście zmiany tablic stron jądra (warto zdać sobie sprawę, że dwa poprzednie sposoby przydziału pamięci nie zmieniały liniowej przestrzeni adresowej jądra!).

Począwszy od adresu PAGE_OFFSET (w typowej konfiguracji wynosi ona 0xC0000000, a zatem mowa tutaj o 4GB liniowej przestrzeni adresowej) służy do odwzorowania na potrzeby jądra pamięci fizycznej. Natomiast przestrzeń adresowa powyżej (oddzielona 8MB przerwą), czyli począwszy od identyfikatora VMALLOC_START służy do mapowania nieciągłych obszarów pamięci, przydzielanych przez funkcję vmalloc na ciągłe adresy logiczne. Lepiej te zależności powinien wyjaśnić rysunek:

\includegraphics{pic/figVmalloc0.eps}
Organizacja 4GB przestrzeni adresowej - rysunek zaczerpnięty z [1].



Adam Koprowski 2001-12-18