PAE系统上C中的指针大小是多少?

问题描述 投票:0回答:4

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

c operating-system x86 32-bit virtual-address-space
4个回答
4
投票

仍然是32位。

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


1
投票

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

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


1
投票

仅限32 位。因为:

PAE 是一项允许 32 位中央处理单元 (CPU) 访问物理地址空间(包括随机存取存储器和 内存映射设备)大于 4 GB。

请参阅:维基百科 — 物理地址扩展


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.