我正在研究一個小的x86內核。我正在訪問並嘗試讀取GRUB在多引導標題中提供的內存映射。我有一個Intel i3 cpu和4 GiB的RAM。這臺機器上運行時,我讀了下面的內存映射:內存映射顯示比物理內存更多的內存
--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
當我起來總可用內存方面,我得到...
爲0x1(可選) - 3893.8 MIB
這似乎是正確的,留下最後200ish MiB爲其他設備保留。 唯一的問題是總的其他存儲器類型:
0X2,0x3,爲0x4 - 331.5 MIB
把我的內存總量爲4225.3 MIB或略高於4.1吉布,這引導我到我的問題:
爲什麼我總共超過4GiB的RAM,當我只有4GiB安裝?
爲什麼內存映射0x0000000100000000中的最後一個基地址?只有4GiB的RAM,32位應該是解決所有問題所需的最大地址大小。我在這裏誤解了什麼嗎?
許多地址範圍不一定是真實的存儲器,它們可映射到DMA /顯示/等。 –
確實如此,但這是否會造成對.875 GB的需求超出32位範圍? – Joel