2013-03-11 76 views
0

有很多问题决定了指针的大小。 基本上作为一个经验法则,你可以说这是处理器架构,指针相对于RAM的大小,体系结构

86 - > 4个字节指针

64 - > 8个字节指针

我看到也有人这里说的是系统总线负责它,但其他的被拒绝。假设架构告诉我指针的大小是多少。

要寻址4GB的RAM,您需要4,294,967,296映射,大小为4字节的指针可以寻址4,294,967,296个内存位置。

要寻址8GB的RAM,您需要8,589,934,592个映射,并且大小为4字节的指针不能解决所有可能的值。 所以这就是为什么我不能在x86架构上拥有超过4GB内存的原因?

回答

2

RAM数量不受架构限制(32位或64位)。体系结构仅决定可由操作系统及其上运行的程序在时间处寻址多少存储器。在32位机器上,即32位宽内存总线的机器,操作系统和程序只能“看到”4 GB的内存。但这并不意味着只有4 GB的RAM。如果制造商提供了它,则可以拥有16 GB或4x4 GB的RAM。在这种情况下,将会有2个“隐藏”地址线,并且还会有硬编码逻辑来决定这2行的电平,从而选择任何可用的4 GB RAM - 00 01 10 11。这些“隐藏的”地址位不被软件层使用,所以对于这些层,它们只能使用4字节的指针。这些“隐藏”地址线的数量取决于您可以扩展RAM的数量。

这只是一个例子。这取决于供应商,他们如何决定提供额外的RAM。

+0

但是应用程序仍然可以处理4GB的RAM,因此它如何从剩余的3 * 4GB中受益? – 4pie0 2013-03-11 18:04:23

+1

其优点是,在可用的总内存中。程序1 +程序2 +程序3总共可以使用8或12或11 GB,而且每个程序都不会意识到系统具有超过4G的内存。 – 2013-03-11 20:45:55

+0

,所以每个应用程序都可以使用不同的RAM块,现在我明白了 – 4pie0 2013-03-11 20:49:20