Windows /3gb 開關與物理 RAM 有何關係?
我有一個具有 4 GB RAM 的 32 位 Windows 伺服器。
通過閱讀網路上的各種文章,我了解到在 boot.ini 中啟用 /3GB 開關意味著在我的 4 GB RAM 中,可以將 3 GB 分配給使用者模式記憶體。如果沒有此開關,則只有 2 GB 用於使用者模式,系統保留另外 2 GB 用於核心模式。
然而, Mark Russinovich 的這篇文章讓我認為我之前的結論是錯誤的——/3GB 開關所做的只是允許程序使用其 4 GB 地址空間中的 3 GB 而不是僅使用 2 GB。
讓我們設置幾個場景來說明我認為它是如何工作的以及何時該開關有用:
1:數據庫伺服器 - 一個記憶體密集型程序
如果沒有 /3GB 開關,數據庫程序將只能使用 2 GB 記憶體。使用 /3GB 開關,程序最多可以分配 3 GB。該開關在這種情況下很有用。
2:執行 4 個程序的伺服器,每個程序消耗 750 MB 記憶體。
使用 /3GB 開關不會帶來任何好處 - 每個程序已經可以分配它需要的所有記憶體,並且系統已經可以將所有程序保存在物理記憶體中。
我是對還是錯?如果我錯了,/3GB 開關如何真正影響物理記憶體使用?
3GB 和 PAE 開關是獨立的,可以處理不同的事情。
3GB 開關- 在 x86 平台上,程序接收虛擬記憶體空間。他們沒有得到實際的記憶體地址。出於各種目的,該虛擬記憶體空間被分成多個塊。通常前半部分(2GB)是為程序的一般用途保留的。另一半保留用於其他事情(通常是核心記憶體)。TL/DR:此開關影響虛擬地址空間的切片方式。
PAE 開關- 原始 80386 平台最多可處理 32 位物理 RAM;這是 4GB。為了增加更多,英特爾提出了 4 個額外的位,並將它們稱為物理地址擴展。如上所述,程序不知道物理記憶體是什麼樣的,它們看到的是虛擬地址空間。然而,作業系統可以使用 PAE 添加超過 4GB 的 RAM(實際上是 ~3.7GB,因為 BIOS 和記憶體映射 IO 也佔用了空間)。TL/DR:此開關影響作業系統定址物理記憶體的方式。
上面已經稍微簡化了,事情從來沒有我們想要的那麼簡單。