accessory 发表于 2009-09-29 05:46

看了半天,我也引用下手册吧:
link:http://www.intel.com/Assets/PDF/manual/253665.pdf

PAGE 68, PAGE 71.

下面是2张图,一个是32BIT cpu的。一个是64BIT CPU的。 注意画红线的地方

[ 本帖最后由 accessory 于 2009-9-29 05:47 编辑 ]

好人家 发表于 2009-09-30 10:48

学习一下!虽然不知道说什么呢?

drangon 发表于 2009-09-30 13:26

原帖由 rawa99999 于 2009-9-26 10:54 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
我描述的可能不够严格,这只是一种解释,但是虚拟地址空间最终转化为控制虚拟内存,还有很多办法,比如soft MMU(软件内存管理单元),CPU提供了这种寻址的能力,就一定能控制这么大的虚拟内存,况且64T虚拟内存 ...

我觉得还是好好看看intel volume 3,system program guide里面的第三章,关于 logical address,linear address,physical address及其相互计算的流程,虚拟内存这个词太模糊了。

简单来说,程序中用的是logical address,通过段机制转换成linear address。

linear address只有4G(32位)!!!

logical address无论通过GDT、LDT的几千上万多种表达方式,但每种表达方式只能表达同一个linear address的4G(32位CPU)的一部分或全部。
这样对同一个线性地址的不同表达方式可以直接累加吗?

回到286年代,一共有64K个段,每个段有64K,(只不过每个段比前一个段偏移16字节而重叠),这样我们能说286能访问4G内存吗?实际上还是只有1M的寻址能力,EMS、XMS等不讨论。

rawa99999 发表于 2009-10-09 08:10

呵呵,以楼上几位的意思,intel9000多个32位CPU的服务器也只能有4G内存了。

rawa99999 发表于 2009-10-09 08:16

Ubuntu安装server的kernel,32位的系统可以使用4G以上的内存,最多能到64G。这还不是改写linux内核,针对大内存修改内核能支持更高的内存容量,这还不是虚拟内存管理,还仅仅是物理内存。

saekil 发表于 2009-10-09 14:04

:shock: 晕死,你们两还在PK啊

qnxchina 发表于 2009-10-11 10:32

to rawa99999:
连手册都看不懂还来辩论??
页: 1 [2]
查看完整版本: 关于386CPU使用64TB虚拟内存的解释的另一种方法!