應用程式可以在 64 位元 x86 Linux 系統上分配多少 RAM?

應用程式可以在 64 位元 x86 Linux 系統上分配多少 RAM?

使用 32 位元 x86 PAE Linux 核心時,即使系統有 GiBs 更多可用內存,單一應用程式也不能分配超過 2 GiBs,這是真的嗎? 64 位元 x86 Linux 核心是否放寬了此限制?

答案1

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的設計記憶體管理單元目前,每個進程的位址空間限制為 128TB。

答案2

32 位元進程最多只能分配 1、2、3 或約 4GB,取決於建置 32 位元核心時選擇的記憶體分割。 64 位元核心上的 32 位元進程可以分配大約 4GB。 64 位元 x86-64 核心上的 64 位元進程可以分配高達 128TiB

相關內容