3

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

4

4 回答 4

4

它仍然是 32 位。

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

于 2014-10-15T06:27:41.637 回答
1

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

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

于 2014-10-15T06:27:04.387 回答
1

只是。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

于 2014-10-15T06:32:30.100 回答
0

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

于 2014-10-18T13:26:30.043 回答