首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >32/64位应用程序、操作系统和处理器之间有什么关系?

32/64位应用程序、操作系统和处理器之间有什么关系?
EN

Stack Overflow用户
提问于 2012-03-21 15:43:32
回答 1查看 2.3K关注 0票数 0

我搜索过这些话题,但不确定我是否正确地理解了它们之间的关系。我总结了以下几点,请更正/补充。

  • 32位或64位处理器意味着处理器可以同时处理32/64位。使用32位或64位处理器表示底层寄存器、地址总线或数据总线的大小也是相同的。
  • 为了在32/64位处理器上工作,我们有32/64位操作系统。
  • 为了在32/64位操作系统中工作,我们开发了32/64位应用程序。
  • 可以在64位操作系统中运行32位应用程序,在32位操作系统(LinuxPAE64)中运行64位应用程序。
  • 不可能在32位处理器上运行64位应用程序/操作系统。

另外,我有两个问题与记忆有关。

  1. 处理器内存映射的布局似乎与处理器的指令大小无关。例如,大多数Intel Core 2系统(64位)的内存映射非常接近下图所示。为什么64位处理器不选择更大范围的内存映射?
  1. 什么限制64位操作系统使用最多(2^64设备/总线地址)的内存大小?
EN

回答 1

Stack Overflow用户

发布于 2012-03-21 16:37:07

有许多不同的处理器(ARM,MIPS,x86,…)。。

我可以只讨论x86(32位)/x86-64(64位)。

位计数主要指寄存器大小。对于x86,虚拟地址空间被限制为32位(4GiB)。这意味着32位应用程序(假设它运行在32位CPU上)只能同时看到4 4GiB。

对于x86-64,所有虚拟地址都是64位大小的.但是CPU可以自由地不支持所有64位,因为它要求所有不受支持的位都具有与最重要的支持位相同的值。操作系统必须查询支持的位数。(我的核心i5在这里支持48位)

物理地址空间,即实际可由CPU处理的内存量,首先是用于x86的32位大小。但是由于Pentium 1,CPU支持一个并行地址扩展(PAE),允许最多36位(64 Bit)的RAM。(操作系统必须启用扩展)

目前,x86-64将物理地址空间限制为52位(4 4PiB)。这里再一次CPU免费支持更少的位。(我的核心i5在这里支持36位)

由于x86和x86-64都使用了含义略有不同的相同操作码,所以32位应用程序不能只在64位CPU上运行(在64位模式/长模式下)。

但是x86-64有一种所谓的兼容性模式(长模式的子模式),它允许执行32位应用程序。(操作系统必须切换模式。)

处理器不选择内存映射。这是主机和BIOS的责任,可以部分地由操作系统进行配置。mainbord & BIOS制造商之所以要将所有内容保存在地址空间的较低的4GiB中,是因为它与32位OSes兼容。(由于与旧的16位DOS应用程序的兼容性原因,甚至x86-64 CPU在默认情况下每2 MiB就禁用物理地址空间的访问)

如前所述,x86-64按规范将物理地址空间限制为52位。更远的是地址空间受到CPU实现的限制,更远的是受主板实现的限制。(所做的一切都是为了减少执行费用)。因此,没有办法解决2⁶⁴的内存。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9808014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档