32 位操作系统是否可能使用超过 4 GB 的内存,如何使用?

Is it possible that a 32-bit operating system use more than 4 GB memory, and how?

大多数32位操作系统一般使用4GB物理内存,我应该使用只安装在32位上的MATLAB工具箱OS。你能给我推荐一个使用超过 4 GB 内存的 32 位 OS 吗?

32 位操作系统通常使用 32 位虚拟地址;它将单个虚拟地址 space 限制为 4 GiB(通常分为 "user-space" 和 "kernel space",因此 "user space" 中的进程可能只能获得 2 GiB 或 3 GiB space).

虚拟地址转换为物理地址。此转换通常使用(层次结构)表,其中最终物理地址的大小可能与虚拟地址大小完全不同。举个具体的例子; 80x86 上的 PAE(物理地址扩展)特性(在 1990 年代引入)允许物理地址大小为 36 位,但它被扩展了(当另一个特性 "long mode" 在 2000 年代引入时)现在 PAE 支持甚至更大的物理地址(最多 "current architectural maximum" 52 位)。

本质上;它就像一个数组,其中索引的大小与条目的大小不同(例如,“uint64_t myArray[ my8bitIndex]”或“uint52_t myPageTable[my32bitVirtualAddress]”);除了它实际上不是一个单一的阵列(并且有多个级别,所以你不需要浪费 space 用于大面积的 "unused")。

当然不同的CPU有不同的限制(有的80x86的CPU只支持36位的物理地址,有的支持48位的物理地址,...);并且安装的 RAM 量总是小于物理地址量 space a CPU 支持(因为部分物理地址 space 用于 ROM,设备等;并且因为RAM 需要钱,大量的 RAM 需要大量的钱。

举个实际例子;如果计算机有 32 GiB 的 RAM;那么 32 位 OS 可以 运行 100 个进程,每个进程有 3 GiB space(总共 300 GiB "user space"),但其中大部分 space 将是未使用的部分将是相同的 RAM 映射到许多不同的虚拟地址 spaces,因此这 100 个进程可能只使用 12 GiB 的 RAM;然后 OS 可能会使用剩余的 20 GiB RAM 来缓存文件系统数据(其中文件数据可以缓存在 RAM 中,而无需将该 RAM 映射到任何虚拟地址 space until/unless一个进程需要它)。