Memory 32位PC,指针大小

Memory 32位PC,指针大小,memory,pointers,byte,32bit-64bit,32-bit,Memory,Pointers,Byte,32bit 64bit,32 Bit,对于4G ram,有4*1024*1024*1024*8=2^(32+3)位。我的问题是,一台32位的PC如何能够访问4G内存。我所能想到的是“一个字节是存储单元,一个字节不能存储一个数据”。这是正确的吗 另一个问题是:在这样的PC中,指针的大小是否总是32位?这对我来说似乎是合理的,因为我们有2^32个存储单元来存储数据。但事实上,这被认为是错误的。如果它是错误的,为什么?通过读取包含它的字节的地址、修改字节并在必要时写回来访问各个位 在某些体系结构中,最小的可寻址单元是双字,在这种情况下,不

对于4G ram,有4*1024*1024*1024*8=2^(32+3)位。我的问题是,一台32位的PC如何能够访问4G内存。我所能想到的是“一个字节是存储单元,一个字节不能存储一个数据”。这是正确的吗


另一个问题是:在这样的PC中,指针的大小是否总是32位?这对我来说似乎是合理的,因为我们有2^32个存储单元来存储数据。但事实上,这被认为是错误的。如果它是错误的,为什么?

通过读取包含它的字节的地址、修改字节并在必要时写回来访问各个位

在某些体系结构中,最小的可寻址单元是双字,在这种情况下,不能“按原样”访问单个字节。从理论上讲,我们可以设计一种体系结构,用32位唯一地址寻址16GB内存。几年前也发生了类似的事情,当时硬盘的可寻址单元被限制为512字节扇区的2^28个单元左右

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

StuartLC一直在谈论寻呼。即使在当前的32位系统中,也可以使用旧段寄存器使用48位寻址。(不记得是否有段寄存器低三位为零的限制…)但无论如何,这将允许2^45字节的单个地址,其中只有一小部分可以同时出现在主内存中。如果开发了支持该寻址模式的操作系统,那么可能会为指针分配完整的64位。就像今天的64位处理器一样

我的问题是,一台32位的PC怎么能访问4G内存

您可能会混淆地址总线(可寻址内存)和处理器寄存器的大小。这个

分页是一种常用的技术,它允许对内存进行超出操作系统能力大小的寻址,例如,请参阅

指针的大小总是32位吗

不,不一定-例如,在16位DOS和Windows上,指针可能与段相关

一个人能不能一点点地存储数据

是的,您可以,例如在C语言中,可以这样做,尽管这是以性能和可移植性为代价的

如今,性能更为重要,出于性能原因,编译器通常会尝试将数据与其大小对齐