免费注册 查看新帖 |

Chinaunix

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

[内存管理] 页目录项,页表项前20bit的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-01-28 09:38 |只看该作者 |倒序浏览
i386 32位二级页映射结构中:
页目录项,页表项的结构基本相同。
页表项前20bit 右移12bit后得到的是物理地址,也就是放到地址总线上的。

那么页目录项前20bit右移12bit后得到的是物理地址还是线性地址?
因为这个地址可以用来找到页表,
所以找页表的时候是否还要经过地址转换(也就是地址是线性地址),
还是CPU直接把这个地址当做物理地址放到地址总线上找到页表?
求高手指点啊。

论坛徽章:
0
2 [报告]
发表于 2013-01-28 17:15 |只看该作者
物理位置。

论坛徽章:
0
3 [报告]
发表于 2013-01-29 12:52 |只看该作者
谢谢楼上,也就是说如果内核要去访问这个页表,还需要将从这个从页目录项中获得的页表地址用__va()转化成虚拟地址才能使用是吧?因为内核本身运行时就在32bit线性空间

论坛徽章:
0
4 [报告]
发表于 2013-01-29 14:06 |只看该作者
高20个bit右移12位是PFN,也就是页号,是物理地址的高20bit。内核一般不需要这样逐级访问内存,这个是为硬件MMU服务的

论坛徽章:
0
5 [报告]
发表于 2013-01-29 15:18 |只看该作者
内核出现缺页时,应该需要去修改相应的页表,如果缺页的线性地址没有对应的页目录项,那分配一个页表,然后初始化对应的页表项,
但是如果有对应的页目录项,也就是页表存在,那么只要找到页目录项前20bit来找到页表,这时再对页表项进行操作,这里内核需要去访问这个页表时,是不是应该把这个通过左移得到的页表地址转化成线性地址从而来访问页表?


回复 4# janetliu9


   

论坛徽章:
4
丑牛
日期:2014-01-11 15:11:12亥猪
日期:2014-12-15 22:19:092015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之约旦
日期:2015-03-13 19:45:11
6 [报告]
发表于 2013-03-03 19:00 |只看该作者
我们通过页目录页表找到物理地址,如果页目录页表中放都是线性地址,那就无解了

论坛徽章:
22
丑牛
日期:2014-08-15 14:32:0015-16赛季CBA联赛之同曦
日期:2017-12-14 15:28:14黑曼巴
日期:2017-08-10 08:14:342017金鸡报晓
日期:2017-02-08 10:39:42黑曼巴
日期:2016-11-15 15:48:38CU十四周年纪念徽章
日期:2016-11-09 13:19:1015-16赛季CBA联赛之同曦
日期:2016-04-08 18:00:03平安夜徽章
日期:2015-12-26 00:06:30程序设计版块每日发帖之星
日期:2015-12-03 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-09 06:20:002015亚冠之吉达阿赫利
日期:2015-07-03 08:39:42
7 [报告]
发表于 2013-03-03 20:12 |只看该作者
就是一个虚拟地址到物理地址的转换过程,自己画画图多想想就明白了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP