Przydzielanie obszaru VMA

Przydzielaniem obszarów pamięci wirtualnej procesowi zajmuje się funkcja do_mmap_pgoff (zdefiniowana w pliku mmap.c), wywoływana przez funkcję do_mmap (plik mm.h). Poniżej podaję uproszczony opis, bez sytuacji wyjątkowych i obsługi błędów, działania tej funkcji.

Funkcja po sprawdzeniu prawidłowości parametrów wywołania i możliwości spełnienia żądań, w nich zawartych, przystępuje do realizacji zamówienia. Na początek znajduje pierwszy wolny obszar pamięci wirtualnej o żądanym rozmiarze (get_unmapped_area). Wywołuje funkcję do_munmap w celu sprawdzenia, czy przydzielony zakres nie pokrywa się z jakimś istniejącym VMA. Gdy ok, to przydziela pamięć na nowy deskryptor obszaru VMA. Po czym inicjalizuje go i wstawia do struktur związanych z zarządzaniem pamięcią procesu żądającego tego przydziału. Zwraca adres początku przydzielonego VMA.


Tomasz Szymko 27 listopada 2001