【问题标题】:memory allocation for 64 bit OS64 位操作系统的内存分配
【发布时间】:2012-11-16 12:50:06
【问题描述】:

内存分为两部分
1) 为操作系统系统进程保留的一些内存部分
2) 用户进程的剩余内存。
32 位操作系统为操作系统进程分配 4GB 内存。像这样为 64 位操作系统分配了多少内存空间(内存空间仅用于系统进程,即操作系统进程)。面试时问过这个问题

【问题讨论】:

    标签: memory-management operating-system


    【解决方案1】:

    我不清楚这个问题对 Windows 有多具体。从一般的角度来看 232 给你约 40 亿,即 4GB。所以 264 会给你 16 exabytes (!)

    请参阅here 了解更多信息。

    一个 64 位寄存器可以存储 264 个(超过 18 quintillion)不同的 价值观。因此,具有 64 位内存地址的处理器可以直接 访问 264 字节(=16 exbibytes)的字节寻址内存。

    请注意附带条件。外部总线。仅仅因为 CPU 寄存器是 64 位宽,它并不必然暗示外部总线将具有相同的宽度。因此,CPU 和机器架构将共同决定实际限制。请注意标记为Limitations of Practical Processors 的部分。

    【讨论】:

      【解决方案2】:

      毕竟不是那么真实。

      Windows 提供的不仅仅是 1 个内核或变体。

      例如市面上有内核支持 PAE 的 Windows 操作系统,这足以证明你的说法不正确。

      Windows 的 32 位桌面版本也无法提供 4Gb 的可寻址内存,而只能提供 ~3.5 。

      编辑 详情请参考this link。

      【讨论】:

      • 这并不能完全回答问题。
      【解决方案3】:

      最大内存地址空间取决于您拥有的操作系​​统版本。

      见Physical Memory Limits: Windows 7

      在Pushing the Limits of Windows: Physical Memory 和Pushing the Limits of Windows: Processes and Threads 上阅读更多内容

      【讨论】:

      • 您可以在 32 位 Windows 7 上安装 4gb,但您将永远无法在 32 位 Windows 下将 4gb 用于任何进程。该表指的是物理限制,而不是针对每个流程施加的限制。
      • @user1802174 我认为OP在采访中的问题没有很好地表达。我想他应该回答“更多,但这完全取决于操作系统和 CPU 架构”
      猜你喜欢
      • 2016-08-06
      • 1970-01-01
      • 2021-04-10
      • 2019-08-29
      • 2017-07-11
      • 2012-12-02
      • 2013-08-29
      • 2013-07-30
      • 2012-10-29
      相关资源
      最近更新 更多