architecture - 32 位与 64 位架构 - 虚拟地址空间

标签 architecture 32bit-64bit virtual-address-space

我正在参加操作系统类(class),其中讲师提到了 32 与 64 位架构。

我对这种与我的架构类别的差异的理解是,32 位与 64 位表示 CPU 字大小、寄存器大小以及 ALU 可以执行计算的大小。

导师说:“现在使用的是64位架构,因此进程的虚拟地址空间大小是64位。”

我想问32位v/s 64位是否也表示进程的虚拟地址空间大小是否是32位v/s 64位?如果不是,虚拟地址空间大小是否依赖于架构类型(32 位/64 位)。

最佳答案

没有。即使您拥有 64 位体系结构,虚拟地址空间也需要小于总虚拟可寻址空间,以便为操作系统提供操作空间。

每个进程分配多少空间取决于操作系统。 64 位架构表明,与 32 位架构相比,操作系统将为进程使用更大的默认进程空间。分配多少默认进程空间取决于操作系统。在 Windows 64 位中,进程的默认虚拟地址空间为 8 TB(64 位字节可寻址系统上总共有 2 ^ 24 个可寻址 TB),而在 32 位中只有 2 GB(4 GB 可寻址)全部的)。其他剩余内存是为 32 位系统中的操作系统保留的(不确定为什么在 64 位系统中该进程被限制为相对较低的数量)。

在 32 位架构上,这些默认值 can be changed on Windows (我确信在 Linux 上可以通过其他方法)到 2 GB - 3 GB 之间的任何位置,但最后一个 GB 必须始终保留给操作系统。

这并不意味着 64 位架构中的进程必须是 64 位。 64位操作系统可以通过兼容模式在64位架构上运行32位进程。正如 John Saunders 所指出的,有些 64 位架构具有可用于运行 32 位进程的 32 位处理器,而无需兼容模式; Intel 的 Itanium 处理器就是一个例子。

32位架构可以通过使用Physical Address Extensions来扩展进程的内存空间。 (PAE) 使用完整的 4 GB 内存,尽管 Windows PAE允许 64 - 128 GB 物理内存,具体取决于处理器。

这意味着单个 32 位进程可以使用 PAE“查看”最多 4 GB 的主内存,但仅限于此。据我所知,在可预见的将来,没有任何进程会使用接近 2 ^ 64 字节的任何地方,因此 PAE 不用于 64 位系统。

<小时/>

所有超出您问题范围的内容:

存在虚拟地址空间,因此操作系统可以为每个进程分配比实际可用的更多的进程空间。它还允许保护进程空间并通过 Virtual Machine Monitor 启用虚拟化。 (VMM)。这种使用 VMM 对进程空间的保护允许虚拟化指令集架构。这使得人们可以在 Windows 中的虚拟机上运行 Linux(请注意,处理器硬件和操作系统都必须支持虚拟化才能实现这一点)。

64 位架构相对于 32 位架构的优势的最常见/简单示例是 RAM/主内存超过 4 GB 的系统。 32 位系统在使用 PAE 的情况下最多只能使用 4 GB 物理/主内存/RAM,但 64 位系统可以轻松地允许进程寻址多于 PAE 的内存,而无需 PAE 。请记住,2^32 位 = 4 * 1024 * 1024 * 1024 = 4 GB。 32 位地址空间中的每一位代表字节可寻址系统中的 1 个字节

关于architecture - 32 位与 64 位架构 - 虚拟地址空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23036497/

相关文章:

c - 将微服务(使用 ZeroMQ、C 和 Python 进程)从 64 位硬件移动到 32 位硬件后的延迟,但名义上的 cpu 使用率

memory - 当一个程序具有相同的虚拟地址空间时,什么情况

caching - 在处理器 x86/x86_64 中使用物理或虚拟寻址来缓存 L1、L2 和 L3?

java - 注入(inject)设置还是加载一次全局查找?

architecture - Azure 上的高流量、每天超过 5 亿次点击(类似分析)的应用程序架构

ruby-on-rails - 在设计 Rails 数据库模式时如何避免使用关注点?

.net - 在混合托管/非托管环境中支持多种架构的最佳方式是什么?

c# - 在异常和返回值之间进行选择

c - 将项目从 64 位移植到 32 位时 : float changed to long double gives error for %f

memory - 为什么 32 位操作系统支持 4 GB RAM?