Podział wirtualnego adresu 3/1 na Linuxa
Brakuje mi czegoś, jeśli chodzi o zrozumienie, że highmem potrzebuje więcej niż 1 GB pamięci RAM. Czy ktoś mógłby wskazać, gdzie się mylę? Dzięki!
Co wiem:
1 GB pamięci wirtualnej procesów (duży obszar pamięci) jest zarezerwowany dla operacji jądra. Przestrzeń użytkownika może wykorzystać pozostałe 3 GB. To jest podział 3/1.
Funkcje pamięci wirtualnej maszyny wirtualnej odwzorowują (ciągłe) strony pamięci wirtualnej na strony fizyczne (RAM).
Czego nie wiem:
Jakie operacje używają pamięci wirtualnej jądra? Przypuszczam, że takie rzeczy jak kmalloc (...) w przestrzeni jądra użyją pamięci wirtualnej jądra.
Myślę, że w ramach tego schematu można by użyć 4 GB pamięci RAM. Nie rozumiem, dlaczego przestrzeń wirtualna jądra 1 GB jest czynnikiem ograniczającym przy adresowaniu przestrzeni fizycznej. To jest miejsce, w którym załamuje się moje zrozumienie. Proszę doradź.
Czytałem to (http://kerneltrap.org/node/2450), który jest świetny. Ale to nie do końca odpowiada mojemu pytaniu.