/ / Maksymalny / minimalny adres fizyczny - jądro Linux - linux, linux-kernel

Maksymalny / minimalny adres fizyczny - jądro Linux - linux, linux-kernel

Jak to się dzieje, że dany adres wirtualny (tylko przykład):

Adres wirtualny ffffffffa08f9533 odpowiada adresowi fizycznemu: 0x24a5adff8

Mam tylko 0x200000000 (8 gb) ilości fizycznejpamięć (zakładając, że pierwszy adres to zero - prawdopodobnie błędne założenie), więc zwrócony adres fizyczny znajduje się poza moją prawdziwą pamięcią fizyczną. Co ja robię źle?

Funkcje, których używam to:

virt_to_phys & phys_to_virt

Dzięki

Odpowiedzi:

0 dla odpowiedzi № 1

Komputery PC mają pewne przestrzenie adresowe, które nie sązwiązane z rzeczywistą pamięcią RAM. Kilka dni temu zainstalowałem kartę graficzną z 4 GB pamięci RAM. Ale są też inne urządzenia na PC z własną pamięcią, do której CPU może nadal uzyskać dostęp: kontrolery RAID, karty sieciowe, karty I / O obsługujące DMA.

W czasach przed 64-bitowych te obszary pamięci musiały być mapowane gdzieś w fizycznej przestrzeni adresowej pamięci RAM. Co oznaczało, że można zainstalować więcej niż 3,5 GB pamięci RAM na komputerze, ale nie można go użyć.

W procesorach 64-bitowych wszystkie te obszary pamięci mogą być teraz mapowane gdzieś poza rzeczywistą / normalną pamięcią RAM.

W systemie Linux można uzyskać bieżący układ 64-bitowej pamięci fizycznej /proc/iomem

Związane z: Pobieranie mapy pamięci każdego urządzenia w systemie Linux