关于X86寻址的PAE模式的疑问?
时间:2010-08-24
来源:互联网
2 9 9 12 四级方式寻址.即36位的 前2位寻4个页目录表. 中间的9为寻512个中间页目录 再9为寻512位页表 最后12为是offset偏移量.
于是问题来了.
1、书上说CPU的地址总线是36位了。与之配套的主板及内存也是36位地址总线吗?
2、各种指针寄存器还是32位的,如何才能操作4G以上的地址呢?即操作32位以上的地址。
作者: zhangsuozhu 发布时间: 2010-08-24
第二个很简单嘛,8086时代也是16位CPU配20位地址总线。
作者: tempname2 发布时间: 2010-08-24
就是一个虚拟地址到物理地址映射的问题.程序中总是使用虚拟地址,并不表示映射后的物理地址就是在4G以下.
只要MMU知道访问哪里就可以了
作者: smalloc 发布时间: 2010-08-24
嗯。后来我想了想。第二个问题! 可能是因为页表中的基地址是应该是24位的,指针寄存器的低12位地址与之相加,得到36位地址,能寻到4G以外的地址。
但一个进程最大可用的线性地址是4G,即32位地址,决定这个大小的原因是因为指针寄存器的大小是32位的。 但这个线性地址可使用 2^24个页框中的任何2^20个。
比如从10G-14G这部分的物理空间可以分给一个进程, 而从18G-24G可以分给另一个进程。每个进程最大用4G。这样,扩大了物理空间,使理个系统可以同时运行更多的进程。
我说的对吗?
作者: zhangsuozhu 发布时间: 2010-08-24
不过,PAE是不是Intel的专利?俺AMD的内核,装了4G内存。每次装Linux时,安装程序检测到了4G内存,硬是给我装了PAE内核。装了不说,一启动就panic。结果每次安装时都得先拔根内存,装好了再安上去。。。。。
作者: tempname2 发布时间: 2010-08-24
PAE 不时 INTEL 专利. AMD 也支持.
作者: accessory 发布时间: 2010-08-24
作者: tempname2 发布时间: 2010-08-24
兄台,即然说到这儿了。我还有一事不太明白。书上说把32位寄存器分三级址。即页目录10 页表10位 偏移量12位 。而不分二级是因为节约页表所占的内存,即如果二级寻址,如果页表为20位的话,全部分配4G线性地址将占用4M内存,这句话没错。 但为什么不按需分配呢。即20位的页表,如果程序只用1M的话,那页表里只分256项就够大了。
作者: zhangsuozhu 发布时间: 2010-08-24
可能是因为页表中的基地址是应该是24位的,指针寄存器的低12位地址与之相加,得到36位地址,能寻到4G以外的地址。
zhangsuozhu 发表于 2010-08-24 22:49
这句我觉得不对. 后面那些是对的.
作者: accessory 发布时间: 2010-08-24
不知道. 可以自己分析下PANIC 信息.或者贴出来,或者GOOGLE.
作者: accessory 发布时间: 2010-08-24
理由呢?我想知道原因?
作者: zhangsuozhu 发布时间: 2010-08-24
最上面那级的 PAGE TABLE 不能为空.它的下级可以为空. 所以如果只有2级的话, 那么第1级(最上面那级)一定要都在. 这样一来就很占内存.
3级的话,也是最上面一级不能为空. 但是占的地方就小了.
作者: accessory 发布时间: 2010-08-24
我还google了怎么让安装程序不安装PAE内核,还是无果。
作者: tempname2 发布时间: 2010-08-24
兄台,即然说到这儿了。我还有一事不太明白。书上说把32位寄存器分三级址。即页 ...
zhangsuozhu 发表于 2010-08-24 23:16
只要用了某一级,不管用多少项,都得把那一级的表项全分了。
作者: tempname2 发布时间: 2010-08-24
上级原来不能为空啊。如果为空会如何呢?呵呵。问问。别嫌我烦啊。
还有。还可以把页表设为10位。offset设为22位。这样就二级了。不过分的一页太大了。一页4M。好象intel的P4已经支持了。不过一页分的太大了有点浪费。
作者: zhangsuozhu 发布时间: 2010-08-24
作者: tempname2 发布时间: 2010-08-24
4M PAGE 是已经有了啊. 看我前面英文贴的那个连接.要翻墙.
是会浪费些,如果那一页东西很少的话. 实际上, WINDOWS 内核里就用到了 4M AND 4K PAGE. 这样一来提高效率. 也是 INTEL 所提倡的. LINUX 不清楚. 似乎没用.
作者: accessory 发布时间: 2010-08-24
accessory 发表于 2010-08-24 23:23
and page directory grows to 64 bits (8 bytes) 说的是页表项,或页目录项,但页目录项中用于寻址的基址是多少呢?因为页目录项中还有一些flag位啊。
作者: zhangsuozhu 发布时间: 2010-08-24
4M PAGE 是已经有了啊. 看我前面英文贴的那个连接.要翻墙.
是会浪费些,如果那一页 ...
accessory 发表于 2010-08-24 23:29
Wiki早解禁了吧。。。。。
作者: tempname2 发布时间: 2010-08-24
回19楼,我猜基地址应该是 36位, 可以自己看看 INTEL CPU MANUAL. 上面说的非常清楚.
另外 24位"加"12位是得不到36位的.要"乘"才可以.
作者: accessory 发布时间: 2010-08-24
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28