32 位 PAE 和 64 位核心有什麼區別?
我只問這個關於記憶體定址的問題。
我知道 PAE 核心允許作業系統訪問比標準 32 位核心更多的記憶體,但是,其他含義是什麼?64 位核心和 32 位 PAE 核心之間有什麼具體區別?
根據維基百科,程序地址空間保持在 32 位,這意味著它最多只能訪問 4GB 的記憶體。然而,作業系統可以訪問 64GB 地址空間,將 4GB 塊分配給程序。
對我來說,這似乎是一個很大的區別,似乎被許多人忽略了。
核心看到物理記憶體並提供程序視圖。如果您想知道如果您的整台機器只有 512 MB 的 RAM,一個程序如何擁有 4 GB 的記憶體空間,這就是原因。每個程序都有自己的虛擬記憶體空間。該地址空間中的地址映射到物理頁面或交換空間。如果要交換空間,則必須先將它們交換回物理記憶體,然後您的程序才能訪問頁面以對其進行修改。
Torvalds 在 XQYZ 的答案(DOS highmem)中的例子並不太牽強,儘管我不同意他的結論,即 PAE 通常是一件壞事。它解決了具體問題並有其優點——但所有這些都是有爭議的。例如,一個庫的實現者可能認為實現並不容易,而該庫的使用者可能會認為該庫非常有用且易於使用。Torvalds 是一個實施者,所以他一定會說出聲明中所說的內容。對於最終使用者來說,這解決了一個問題,而這正是最終使用者所關心的。
一方面,PAE 有助於解決 32 位機器上的另一個遺留問題。它允許核心映射完整的 4 GB 記憶體並解決許多機器上存在的 BIOS 記憶體漏洞,並導致沒有 PAE 的純 32 位核心“看到”只有 3.1 或 3.2 GB 的記憶體,儘管物理記憶體為 4 GB。
無論如何,對於 64 位核心,它是物理頁面和虛擬頁面之間的對稱關係(撇開交換空間和其他細節)。但是,PAE 核心在程序地址空間內的 32 位指針和物理記憶體中的 36 位地址之間進行映射。這裡需要更多的簿記。關鍵字:“擴展頁表”。但這更像是一個程式問題。這是主要區別。與完整的線性地址空間相比,更多的簿記。正如您提到的,對於 PAE,它是 4 GB 的塊。
除此之外, PAE 和 64 位都允許大頁面(而不是 32 位中的標準 4 KB 頁面)。
英特爾處理器手冊第 1 卷第 3 章有一些概述,第 3A 卷第 3 章(“保護模式記憶體管理”)有更多詳細資訊,如果您想閱讀的話。
對我來說,這似乎是一個很大的區別,似乎被許多人忽略了。
你說得對。但是,大多數人是使用者,而不是實施者。這就是他們不會在意的原因。而且只要您的應用程序不需要大量記憶體,很多人就不會在意(尤其是因為有兼容層)。