32位Linux核心的最大記憶體分配
我正在閱讀這篇文章,它討論了在 32 位視窗中專用於核心使用的最大記憶體量是 2GB,即使記憶體總量大於 4GB。
- 對於 32 位 ubuntu 10.04 等 32 位 linux 環境,這是否相同?即使總主記憶體> 4GB,IE的最大核心分配2GB記憶體?
- 如果在啟用 PAE 選項的情況下通過重新編譯核心將記憶體總量增加到 64GB 記憶體,那麼您可以為核心使用的最大記憶體量是多少?還是2GB嗎?或者你能增加它嗎?
兩個核心都將虛擬地址空間分為使用者部分和核心部分。核心部分在系統中的所有程序之間共享,因此核心僅限於可直接定址的記憶體。系統中的每個使用者程序都有自己的地址空間使用者部分。傳統上,這種拆分是在中間完成的,每半個 2gb。可以使用 /3gb boot.ini 開關指示 Windows 將拆分移動到使用者的 3gb 和核心的 1gb。linux 核心在建構時是相當可配置的,最後我檢查了一下,Ubuntu 核心以 3:1 拆分建構。
PAE 允許定址 64 GB 的物理記憶體,但任何給定的頁表仍然限制為 4 GB。因為該地址空間中只有一個核心部分在系統上的所有程序之間共享,所以無論如何它都被限制為 1 或 2 GB 的直接可定址 RAM。可以使用額外的物理記憶體,但它必須在任何給定時間僅部分映射到虛擬地址空間,並且在需要時更改映射。因為每個程序都有一個單獨的使用者地址空間,例如,您可以擁有 5 個不同的程序,每個程序都有 2gb 自己的記憶體,映射到您安裝的 16gb 物理記憶體的不同部分,核心使用另外 2gb。
請注意,文件系統記憶體不必一直保持頁面映射,因此它可以使用更多的物理記憶體,並且核心會在需要時自動映射它的位,然後取消映射以便映射其他頁面。即使核心只有 1gb 的虛擬地址空間可供使用,這個詭計允許核心使用許多 gb 的記憶體用於記憶體,而將幾百 mb 的記憶體用於其他用途。
另外值得注意的是,在最近的 Windows 版本中,微軟制定了各種人為的產品許可限制。即使我啟用了 PAE,我在我的 PC 上使用的 Windows 7 Pro 拒絕使用大於 4gb 的物理記憶體地址,這導致它只能使用已安裝的 4.0 gb 記憶體中的 3.4 個,因為一大塊ram 被重新定位在 4gb 標記之上,以便為影片 ram 等位於 4gb 以下的東西留出空間。