【问题标题】:What is the size of pointers in C on PAE system?PAE系统上C中的指针大小是多少?
【发布时间】:2014-12-10 03:05:43
【问题描述】:

我通常知道在 32 位机器中,常规 C 程序中使用的指针大小是 32 位的。在带有 PAE 的 x86 系统中呢?

【问题讨论】:

  • 你说的是应用程序代码还是内核代码?
  • @DavidHeffernan 应用程序代码
  • 从应用程序的角度来看,指针仍然是 32 位的。所有 PAE 细节都在内核方面。

标签: c operating-system x86 32-bit virtual-address-space


【解决方案1】:

您可以通过窗口(地址范围)访问内存。每次您必须使用该范围之外的东西时,您应该使用系统调用来映射另一个范围。考虑使用多个堆,在窗口内有一个偏移量(指针)——那么完整的指针将是堆标识符和一个窗口偏移量(结构),总共 64 位,每次你必须离开当前堆时,你必须切换它们。

【讨论】:

    【解决方案2】:

    它仍然是 32 位。

    PAE 增加了物理内存地址的大小,这让操作系统可以使用超过 4GB 的 RAM 来运行应用程序。为了运行应用程序,操作系统将较大的物理地址映射到 32 位虚拟地址。这意味着每个应用程序中的地址空间仍然被限制为 4GB。

    【讨论】:

      【解决方案3】:

      只有32 bit。因为,

      PAE is a feature to allow 32-bit central processing units (CPUs) to access a physical address space (including random access memory and memory mapped devices) larger than 4 gigabytes.

      看到这个http://en.wikipedia.org/wiki/Physical_Address_Extension

      【讨论】:

        【解决方案4】:

        PAE 更改了页表的结构,以允许它们寻址超过 32 位的物理内存。虚拟内存寻址保持不变——用户空间应用程序中的指针仍然是 32 位。

        请注意,这意味着 32 位应用程序可以不加修改地在 PAE 系统上使用,但每个应用程序仍只能使用 4 GB 内存。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-10-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多