Küçük bir x86 çekirdeği üzerinde çalışıyorum. GRUB'un multiboot üstbilgisinde sağladığı bellek haritasını okumaya ve okumaya çalışıyorum. Intel i3 işlemci ve 4 adet RAM RAM'i var. - 3893,8 MiBBellek haritası, mevcut olandan daha fazla RAM gösteriyor
Ben kullanılabilir bellek alanları toplam zaman--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
, ben olsun ...
0x1 (Mevcut): Bu makinede çalışırken, aşağıdaki hafıza haritası okuyorum
Diğer cihazlar için ayrılan son 200ish MiB'yi bırakarak doğru görünüyor. tek sorun diğer bellek türleri toplamı olan:
0x2, 0x3, 0x4 - gib, 4.1 üzerinde 4225,3 MIB'den biraz az RAM zaman toplam miktarını koymak 331.5 MIB
olan sorularıma götürüyor: Neden sadece 4GiB yüklü olduğunda RAM 4GiB daha bulan ediyorum
?
Neden bellek verisindeki son temel adres 0x0000000100000000? Sadece 4GiB RAM ile 32 bit, hepsine hitap etmek için gereken maksimum adres boyutu olmalıdır. Burada bir şeyi yanlış anladım mı?
Birçok adresi aralıkları mutlaka gerçek bellek değildir, onlar DMA/ekran/vb eşleyebilirler. –
Doğru, ancak bu 32 bit aralığın dışında olmak için .875 GB'ye ihtiyaç duyuyor mu? – Joel