2011-07-20 47 views
2

對進程可用的虛擬地址空間的限制是什麼?什麼決定了一個進程可用的虛擬地址空間的大小?

是否

  1. 32位和64位地址總線?

  2. 32位和64位處理器?

  3. 可以使用輔助存儲?

  4. 最大交換空間配置?

在此先感謝

+0

你可能想看看這裏的答案:http://www.unix.com/programming/87988-find-virtual-address-space-size-process.html –

回答

5

二級存儲/交換空間都沒有關係,因爲頁面可以映射到你的地址空間而不被分配。同一頁面可以映射到多個虛擬地址。 ([編輯]這是默認行爲,但是可以使用sysctl設置來防止沒有RAM或交換可用的VM頁面的映射。請在該sysctl設置上搜索以獲取更多信息。)

CPU肯定會有一個上限,這實質上是64位系統上的唯一限制。雖然注意當前x86_64 processors do not actually let you use the entire 64-bit space

在32位Linux上,事情變得更加複雜。較舊版本的Linux爲內核的每個進程保留了2GB的虛擬空間;較新的預留1GB。 (如果內存是服務的,那就是,我相信在編譯內核時這些內存是可配置的。)您是否認爲「可用於進程」的空間是語義問題。

Linux還具有每進程資源限制RLIMIT_AS,可通過setrlimitgetrlimit訪問。

相關問題