AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1680699
Accepted
Dxml
Dxml
Asked: 2021-10-09 17:59:46 +0800 CST2021-10-09 17:59:46 +0800 CST 2021-10-09 17:59:46 +0800 CST

为什么 64 位操作系统可以充分利用 4GB RAM 而 32 位操作系统却不能?[复制]

  • 772
这个问题在这里已经有了答案:
为什么 32 位操作系统不能处理超过 3.2/3.2 GB 的内存? (6 个回答)
去年关闭。

(前言:我知道有类似的问题,但我特别想了解为什么当拥有 2个 32 个地址足以访问 3.5 GB 的 RAM 时,拥有超过 32 位有助于访问 0.5 GB。)

我正在学习操作系统并阅读到在 4GB RAM 上运行 64 位操作系统允许用户充分利用 4GB,而这对于 32 位操作系统是不可能的(如果我理解正确,原因这是因为 4GB 与其他硬件组件共享,我知道其中之一是 GPU。)。

谁能帮我解释一下这是怎么可能的?如果 32 位操作系统不能使用所有 2个 32地址位置(即 4GB),那么将操作系统一次可以使用的位数增加到 64 位如何解决问题?

memory 64-bit
  • 2 2 个回答
  • 497 Views

2 个回答

  • Voted
  1. Best Answer
    phuclv
    2021-10-09T22:57:59+08:002021-10-09T22:57:59+08:00

    也就是说,如果 32 位操作系统只能使用 3.5 GB

    一个 32 位操作系统可以寻址 4GB 的地址空间,但是在该地址空间中不仅有 RAM,还有各种影子 内存和内存映射设备。在 x86 中端口映射的 IO 更常见,但仍然有很多内存映射的东西

    例如,其中一些可能保留给 COM 和 LPT 端口,而剩余的一些将保留给网络接口和图形卡。如果您的系统上有 1GB GPU,那么操作系统的 RAM 最多只有 3GB 的地址空间。那甚至不是3.5GB

    在大多数 RISC 架构上,内存映射 IO 更常用,因此 32 位 RISC 操作系统可以寻址更少的 RAM


    然而,这还不是全部,因为许多 32 位架构使用超过 32 位的地址,因此在这些架构上运行的 32 位操作系统不一定限于 4GB 的 RAM。例如,在 x86 中有PAE,它允许操作系统使用至少 36 位的地址,这意味着它们可以寻址 64GB 或更多的 RAM。ARM 中的等价物是LPAE

    但只有操作系统才能使用如此大量的 RAM。在该操作系统上运行的 32 位进程仍然使用 32 位地址,因此仍然只能寻址 2 32 个不同的内存位置,这些位置在大多数现代架构中都是字节,因此理论上它们最多可以访问 4GB 的 RAM

    实际上只有一部分属于进程,因为内核为自己保留了剩余的地址空间。在 Windows 上,默认拆分为 2GB/2GB(在Meltdown之前)。这就是为什么 Adob​​e Premiere CS4(仍然是仅 32 位版本)为系统中的每 2GB RAM 生成一个进程,以便利用操作系统中的所有可用 RAM

    额外的 32 位如何帮助访问剩余的 0.5 GB

    额外的 32 位有助于访问比 4GB 地址空间大32倍的新空间 2,因此显然它克服了几乎所有可以想象的限制。0.5GB 在那个空间里什么都不是

    将我的操作系统从 32 位升级到 64 位,同时将我的 RAM 保持在 4GB 不变,是否有助于访问 32 位操作系统无法访问的剩余 0.5 GB?如果是,如何?无论操作系统是否可以访问 2^23 或 2^64 地址空间,这 0.5 GB 是否仍需要与其他资源共享?

    为什么不?如果您有更大的空间,那么显然有更多的空间可以将 0.5GB 映射到其中。如果您有这么多可用空间,则可以将某些设备映射到 4GB 以上。在内存映射机制中,每个设备都将被映射到可用地址空间中的一个范围内。如果另一个设备正在使用地址空间,这并不意味着 RAM 空间会缩小。32位操作系统不能使用它不是因为地址空间更小,而是因为某些地址范围被映射到另一个设备而不是RAM

    例如,如果我们有 4GB 的地址空间,那么 RAM 可能会映射到 0-2GB 的范围内,而具有 1GB VRAM 的 GPU 将映射到顶部的 1GB(即地址 0xC0000000)。但是,如果我们有 4294967296GB 的地址空间,那么 GPU 可以映射到 12345678GB 的​​地址,从而为 RAM 留下 4GB 的低范围,现在您可以使用整个 4GB 内存(粗略地说,因为总是有小内存页由于阴影和其他原因不可用)

    您没有看到具有 8GB 或更多显存的现代 GPU 吗?一个系统中甚至可以有多个 GPU 和 NIC。有时可能会发生映射错误,例如 PCIe 设备映射到 2GB 的位置并限制可用 RAM。在这种情况下,需要进行一些调整来更改映射以最大化可用 RAM。看

    • Windows 仅检测到 4.75GB 的 8GB RAM
    • Windows 7 x64 中 8.00GB RAM(可用 3.22GB)
    • 安装内存(RAM):8GB(4GB可用)
    • 3
  2. John
    2021-10-09T18:45:48+08:002021-10-09T18:45:48+08:00

    为什么 32 位操作系统只能使用 3.5 GB?

    据我了解,限制的主要原因是 CPU 寄存器在 32 位和 64 位之间的差异

    为什么 32 位限制在 4 GB 以下

    CPU 寄存器存储内存地址,这是处理器从 RAM 访问数据的方式。寄存器中的一位可以引用内存中的单个字节,因此 32 位系统最多可以寻址 4 GB(4,294,967,296 字节)的 RAM。实际限制通常更小——大约 3.5 GB——因为注册表的一部分用于存储除内存地址之外的其他临时值。

    但不管是什么原因,上述限制对于现代操作系统来说是不够的,所以使用了 64 位系统。

    64 位操作系统可以寻址 18,446,744,073,709,551,616 字节(或大约 18.4 艾字节)的内存。

    • 2

相关问题

  • CPU/PC 冻结(温度?)

  • 可以读取硬盘驱动器并专门写入 RAM 的系统?

  • 购买合适的笔记本电脑 RAM [关闭]

  • RAM 安装顺序。8GB 和 16GB。哪个应该在插槽 0 中?

  • CPU、内存还是主板?(PEBCAK!)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve