我知道通常在 32 位机器中,常规 C 程序中使用的指针大小是 32 位。在具有 PAE 的 x86 系统中怎么样?
仍然是32位。
PAE增加了物理内存地址的大小,这使得操作系统可以使用超过4GB的RAM来运行应用程序。为了运行应用程序,操作系统将较大的物理地址映射到 32 位虚拟地址。这意味着每个应用程序中的地址空间仍然限制为 4GB。
PAE 更改页表的结构,使其能够寻址超过 32 位的物理内存。虚拟内存寻址保持不变——用户空间应用程序中的指针仍然是 32 位。
请注意,这意味着 32 位应用程序无需修改即可在 PAE 系统上使用,但每个应用程序仍只能使用 4 GB 内存。
可以通过窗口(地址范围)访问内存。每次您必须使用该范围之外的内容时,您应该使用系统调用来映射另一个范围。考虑使用多个堆,在窗口内有一个偏移量(指针) - 那么完整的指针将是堆标识符和窗口偏移量(结构),总共 64 位,每次你必须走出当前堆时,你必须不过要切换它们。