假設此答案一臺PC,因爲它依賴於平臺比CPU更上。
它不能在任何地方靠近。但開始,
它會使用X + 1位,並有一些無效的地址?
它將始終使用所有位,CPU甚至不關心無效地址,您可以使用它們。它甚至不知道,所以它不在乎。
誰是確實知道BIOS是什麼,它會告訴你(「你」是操作系統,可能是)線性地址空間的景觀與幾個BIOS中斷看起來是什麼樣子。只能檢測到「低內存」的舊版本非常簡單,它只是告訴你有多少內存,然後留給你(風景不那麼複雜,所以這就夠了)。 「新」一個(很難,但相對較新),INT 0x15,EAX = 0xE820,會給你一個實際的地圖,它具有線性地址空間範圍列表的形式以及描述。
你不會發現所有實際RAM被在從0開始將在塊被映射,由其中例如存儲器映射裝置映射的孔分離的很好的連續範圍映射。
而且,由於有「低地址」孔(雖然「低」是相對的),一些真正的RAM可以得到推「漲」。所以如果你有4GB的內存,其中一些會被映射到高於0xFFFFFFFF的地址。雖然這些洞實際上取決於。閱讀內存映射。
舉個例子,地圖可能是這樣的:
第一列是起始地址,第二列是大小,最後一列是類型。類型1是普通的RAM,類型2不是RAM,類型3中有你想要讀取的東西,但你可以在完成後使用它,或者說明如下。還有幾種類型。這張地圖是通過給它4GB的RAM在VirtualBox中生成的。儘管如此,它並不完全相同。要點是,你可以看到這些洞。
如果RAM少得多,第二種類型的範圍會更短,但其餘的看起來相同(無論如何,在VirtualBox上,其他地方通常看起來有點不同) - 那些類型2範圍靠近32位邊界將仍然存在,並且只會有一堆「無」直接映射到它們下面。
因此,它不如在地址中使用一些位數那麼簡單。
當操作系統是16位時,他們使用EMM'擴展內存管理器'來允許尋址超過16位。然後,當操作系統是32位的時候,他們能夠處理4GB的內存,4GB以外的任何內存都不會被使用,除了Win32以外,它只使用3GB。現在使用64位,最大內存實際上是以兆兆字節爲單位。只要內存大於可尋址內存,CPU就無法達到超出其可尋址大小的那些內存。 – alvits
CPU受硬件位寬限制,而OS受軟件位寬限制。 – alvits