Pracuję na małym jądrze x86. Uzyskuję dostęp i próbuję odczytać mapę pamięci udostępnioną przez GRUB w nagłówku multiboot. Mam procesor Intel i3 i 4 GB pamięci RAM. Podczas pracy na tym urządzeniu, Czytam następujące mapy pamięci:Mapa pamięci pokazuje więcej pamięci RAM niż fizycznie dostępna
--Base Address-- --Length-- --Type--
0x0000000000000000 0x000000000009d000 0x1
0x000000000009d000 0x0000000000003000 0x2
0x00000000000e0000 0x0000000000020000 0x2
0x0000000000100000 0x00000000bb53f000 0x1
0x00000000bb63f000 0x0000000000080000 0x2
0x00000000bb6bf000 0x0000000000100000 0x4
0x00000000bb7bf000 0x0000000000040000 0x3
0x00000000bb7ff000 0x0000000000001000 0x1
0x00000000bb800000 0x0000000004800000 0x2
0x00000000e0000000 0x0000000010000000 0x2
0x00000000feb00000 0x0000000000004000 0x2
0x00000000fec00000 0x0000000000001000 0x2
0x00000000fed10000 0x0000000000004000 0x2
0x00000000fed18000 0x0000000000002000 0x2
0x00000000fed1b000 0x0000000000005000 0x2
0x00000000fee00000 0x0000000000001000 0x2
0x00000000ffe80000 0x0000000000180000 0x2
0x0000000100000000 0x0000000038000000 0x1
Kiedy wynieść maksymalnie dostępne obszary pamięci, mam ...
0x1 (dostępnych) - 3893.8 MiB
Co wydaje się być w porządku, pozostawiając ostatnie 200-te MiB zarezerwowane dla innych urządzeń. Jedynym problemem jest łącznie z innymi rodzajami pamięci:
0x2, 0x3, 0x4 - 331,5 MiB
Umieszczenie mi całkowitą ilość pamięci RAM, przy 4225.3 MiB lub nieco ponad 4,1 GB miejsca, co prowadzi mnie do mojego pytania:
Dlaczego łącznej ponad 4GiB RAM gdy mam zainstalowane tylko 4GiB?
Dlaczego ostatni adres bazowy na mapie pamięci 0x0000000100000000? Tylko 4GiB pamięci RAM, 32 bity powinny być maksymalnym rozmiarem adresu potrzebnym do adresowania tego wszystkiego. Czy coś tu nie rozumiem?
Wiele zakresy adresów niekoniecznie są prawdziwe pamięć, mogą mapować DMA/wyświetlacz/etc. –
Prawda, ale czy to powoduje, że potrzeba 0,875 GB poza zasięgiem 32 bitowym? – Joel