32位PC,指针的大小



对于4G RAM,有4 * 1024 * 1024 * 1024 * 8 = 2^(32 3)位。我的问题是32位PC如何访问4G内存。我能想到的是"一个字节是存储单元,一个人无法存储数据"。这是正确的吗?

另一个问题是:在这样的PC中,指针始终具有32位?对我来说似乎是合理的,因为我们有2^32个存储单元存储数据。但是在这个答案和下一个言论中,据说这是错误的。如果是错误的,为什么?

可以通过阅读包含它的字节的地址,修改字节并在必要时退缩来访问单个位。

在某些架构中,最小的可寻址单元是双词,在这种情况下,"按原样"无法访问单个字节。从理论上讲,人们可以设计一个可以用32位独特地址来解决16 GB内存的体系结构。几年前,当硬盘驱动器的可寻址单元仅限于512个字节扇区左右的28个单位。

说PC有32位指针并不是完全错误的。这只是一些旧的信息,因为较新的型号是内部64位系统,并且可以根据OS访问2^48字节的内存。目前,大多数现有的PC是32位,对此无能为力。

好吧,Stuartlc剩下的关于分页。即使在当前的32位系统中,一个 can 也使用48位使用老年片寄存器解决。(不记得段登记处是否存在限制,低三位为零...)但是无论如何,这将允许2^45个字节的单个地址,其中只有一小部分可以同时出现在主要内存中。如果开发了支持该寻址模式的操作系统,则可能为指针分配完整的64位。就像今天有64位处理器一样。

我的问题是32位PC如何访问4G内存

您可能会混淆地址总线(可寻址内存)和处理器寄存器的大小。此超级用户帖子详细介绍了差异。

分页是一种通常用于允许内存超出操作系统功能大小的技术,例如请参阅Pae

指针总是有尺寸32位

不,不一定 - 例如在16位DOS和Windows上,以及指针可能与一个细分市场相关。

一个人不能稍微存储数据吗?

是的,您可以,例如在C中,尽管以性能和可移植性为代价,但可以完成结构中的位包装。

今天的性能更为重要,出于性能原因,编译器通常会尝试将数据与机器单词大小保持一致。

最新更新