免费注册 查看新帖 |

Chinaunix

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

页目录表中的页框地址 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-15 17:51 |只看该作者 |倒序浏览
请问:
  页目录表中的20位页框地址是指线性地址还是指物理地址?
我的理解应该是物理地址,不知对不对?

论坛徽章:
0
2 [报告]
发表于 2009-05-15 22:14 |只看该作者
原帖由 whoisliang 于 2009-5-15 17:51 发表
请问:
  页目录表中的20位页框地址是指线性地址还是指物理地址?
我的理解应该是物理地址,不知对不对?


页目录中的20位地址不是页框地址 页框就是指物理页
用在这里不恰当
页目录中的20位地址是线性地址
页表项中的20位地址才是物理地址

论坛徽章:
0
3 [报告]
发表于 2009-05-16 00:37 |只看该作者

回复 #2 eclipse_2 的帖子

程序编译装入内存运行时,当CPU寻址取数据时,首先拿到的是逻辑地址,只不过因段选择子(代码段对应CS,数据段对应DS,内核层和用户层分别对应页目录表中的某一表项,页目录表基地址由CR3决定)对应的是段地址为0,所以逻辑地址直接变成了线性地址,32位线性地址高10位指定页表基地址,32位线性地址的中间10位指定页表中的某一项(10位共有1024个表项),32位线性地址最后12位指定了页表中某一项所对应的内存基址开始处以后的偏移(最多能有4K的偏移)。

以上我的理解应该没错(可能表达不一定很正确,但相信意思是正确的)。也就是说基本上逻辑地址可以理解成线性地址。而我们知道用户层程序的地址<3G,内核层>3G且<4G,编译器应该不可能知道,只是有一个缺省的0X40000000(不知有没有记错具体数据,反正是<3G)作为基址,具体装入运行时由装入程序执行装入,很难理解装入之后运行时怎么保证第一段所述的取址不出问题?

论坛徽章:
0
4 [报告]
发表于 2009-05-18 23:35 |只看该作者

回复 #2 eclipse_2 的帖子

如果是如你所说:线性地址,那么请问:有了页目录项的20位线性地址而没有物理地址,到哪儿去找页表呢?

论坛徽章:
0
5 [报告]
发表于 2009-05-19 03:36 |只看该作者
可以看下这里:http://linux.chinaunix.net/bbs/thread-919019-1-3.html

“32位线性地址高10位指定页表基地址,”
错。PAGE TABLE的基地址在CPU的 CR3寄存器里。不过CR3里放的是虚拟地址还是物理地址呢?我觉得是虚拟地址。哪位大牛确认下?

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:09
6 [报告]
发表于 2009-05-27 15:43 |只看该作者

回复 #5 accessory 的帖子

CR3 用于保存页目录表页面的物理地址,因此被称为PDBR。由于目录是页对齐的,所以仅高20位有效,低12 位保留供更加高级的处理器使用。向CR3中装入一个新值时,低12位必须为0;但从 CR3中取值时,低12位被忽略。每当用MOV指令重置CR3的值时,会导致分页机制高速缓冲区的内容无效,用此方法,可以在启用分页机制之前,即把PG 位置1之前,预先刷新分页机制的高速缓存。CR3寄存器即使在CR0寄存器的PG位或PE位为0时也可装入,如在实模式下也可设置CR3,以便进行分页机制的初始化。在任务切换时,CR3要被改变,但是如果新任务中CR3的值与原任务中CR3的值相同,那么处理器不刷新分页高速缓存,以便当任务共享页表时有较快的执行速度

论坛徽章:
0
7 [报告]
发表于 2009-05-27 23:22 |只看该作者

回复 #7 liujunwei1234 的帖子

明白,多谢

论坛徽章:
0
8 [报告]
发表于 2009-05-28 11:22 |只看该作者

回复 #5 accessory 的帖子

你的整个理解都有问题:
1:CR3里存放的是页目录表的物理地址(见linux内核完全剖析-P228-head.s)
2:32位线性地址的高10位,通过这10位在页目录表中的定位即页目录表项就能找到页表的位置,线性地址的中10位定位了页表中的页表项,由页表项中的20位加上32位线性地址中的最后12位就形成的一个32位的物理地址.

论坛徽章:
0
9 [报告]
发表于 2009-05-28 22:05 |只看该作者
同意楼上, 我5楼的打错了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP