Kernel

一個應用程序可以在 64 位 x86 Linux 系統上分配多少 RAM?

  • June 10, 2012

使用 32 位 x86 PAE Linux 核心時,即使系統有更多 GiB 的可用記憶體,單個應用程序也不能分配超過 2 GiB 是真的嗎?64 位 x86 Linux 核心是否放寬了這個限制?

32 位程序具有 32 位地址空間,根據定義:“32 位”表示程序中的記憶體地址為 32 位寬,如果您有 2 32 個不同的地址,則最多可以定址 2 32個字節( 4GB)。32 位 Linux 核心只能執行 32 位程序。根據核心編譯選項,每個程序只能分配 1GB、2GB 或 3GB 記憶體(其餘的在核心處理系統呼叫時保留)。這是一個虛擬記憶體量,與 RAM、交換和映射文件之間的任何故障無關。

64 位核心可以執行 64 位程序和 32 位程序。一個 64 位程序原則上最多可以定址 2個 64字節 (16EB)。在x86_64 架構上,部分由於 x86_64 MMU的設計,目前每個程序的地址空間限制為 128TB。

引用自:https://unix.stackexchange.com/questions/34992