免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2385 | 回复: 9
打印 上一主题 下一主题

[内存管理] 为什么PAE要引入新一级Page Directory Pointer Table [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-06-30 18:16 |只看该作者 |倒序浏览
启用PAE是在32的基础上增加系统对超过4G物理内存的支持,使用的还是32位线性地址,因此进程能使用的还是4G。

这里有个疑问,线性地址是32位的,本身就可以支持4G,PAE完全可以在 页目录+页表 两级分页的情况下支持64G内存,只要CR3支持到27位即可。

线性地址中同样还是使用:
页目录使用线性地址高位10比特,64位8字节码一项,共1024项,占内存大小:8K
页表使用线性地址中间10比特,64位8字节码一项,共1024项,占内存大小:8K
线性地址低12位作4K的内页偏移。这样只是增加了页目录和页表的大小,但是同样保证了是页目录、页表两级分页。

而实际PAE中增加了Page Directory Pointer Table这一级:
高2位指向Page Directory Pointer Table
次高9位指向页目录 共512项 每项64位8字节,4K(正好一页,与未启用PAE一致)
次次高9位指向页表 共512项 每项64位8字节,4K(正好一页,与未启用PAE一致)
低12位作4K的页内偏移。

PAE这样做的好处是保证了页目录和页表跟未启用PAE时一样,都处于4K(一页)内,但不知保证大小是其用意。

请问各位高手,为什么要引入“Page Directory Pointer Table”

另外摘录了 维基百科上的解释,http://zh.wikipedia.org/wiki/%E7 ... 0%E6%89%A9%E5%B1%95
“启用PAE(通过设置控制暂存器CR4的第5位来启用)会改变上面的方案。默认情况下,每页的大小是4KiB的。页表和页目录中的表项都从32位扩为64位(8字节)以使用附加的地址位。但是,页表和页目录的总大小不变。所以,页表和页目录现在都只有512个表项。因为这变成了原来方案的一半,所以另外的一个级加了进来:CR3现在指向的是页目录指针表,即一个包含4个页目录指针的表。”

论坛徽章:
0
2 [报告]
发表于 2012-07-01 20:39 |只看该作者
自己顶一下,盼高手解答!

论坛徽章:
0
3 [报告]
发表于 2012-07-01 21:24 |只看该作者
回复 1# hellolwq


   page size=4KB, 如果页表项是4B, 则能存储1024项(10位),两级页表是够的 。但是PAE方式页表项是8B,只能存储512项(只能索引9位),两级是不够的

论坛徽章:
0
4 [报告]
发表于 2012-07-02 00:18 |只看该作者
回复 3# baozhao
多谢 baozhao ,这样解释能理解,但是有一点不明:
page size=4KB
这个是从哪里来的呢?

page size不能是8KB或是其它值吗?



   

论坛徽章:
0
5 [报告]
发表于 2012-07-02 08:59 |只看该作者
hellolwq 发表于 2012-07-02 00:18
回复 3# baozhao
多谢 baozhao ,这样解释能理解,但是有一点不明:
page size=4KB


Intel 32的页面大小一般是4KB,没有8KB的。但是有superpage,2MB或4MB。

论坛徽章:
0
6 [报告]
发表于 2012-07-02 09:58 |只看该作者
回复 5# baozhao


“     page size=4KB, 如果页表项是4B, 则能存储1024项(10位),两级页表是够的 。但是PAE方式页表项是8B,只能存储512项(只能索引9位),两级是不够的”
这里看错了描述,所以我上条的回答是错误的。

page size=4KB 这个理解。
但是它跟页目录总大小关系是怎么来的呢?
你的回答里面大意是指,页目录固定为4K(一页)大小,因此在增加页表项大小后,为保证总页表大小必须减少页表页的数目?


论坛徽章:
0
7 [报告]
发表于 2012-07-02 10:01 |只看该作者
回复 6# hellolwq


    是的

论坛徽章:
0
8 [报告]
发表于 2012-07-02 20:26 |只看该作者
回复 7# baozhao

原谅我还得纠缠不休的追问一句。
为什么页目录固定为一页,不能是两页么?

是说页目录超过一页可能存在跨页,要求分配连续页管理麻烦么?


   

论坛徽章:
0
9 [报告]
发表于 2012-07-03 17:12 |只看该作者
回复 8# hellolwq


    从理论上说,用连续两个页面不是不可以,但是PAE这里取消最顶层的一级需要连续四个页面,而且与页表必然不一致,给软件和硬件的管理和复用都可能带来麻烦。不妨想想自己来实现会怎么办,就容易理解一些设计抉择。

论坛徽章:
0
10 [报告]
发表于 2012-07-06 11:28 |只看该作者
回复 9# baozhao
听君一席话,受益匪浅。
非常感谢!


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP