免费注册 查看新帖 |

Chinaunix

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

请教:gdtr和ldtr [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-24 19:07 |只看该作者 |倒序浏览
请问这两个寄存器中的地址是各描述符表的虚拟地址还是描述符表的物理地址

论坛徽章:
0
2 [报告]
发表于 2009-02-24 19:13 |只看该作者
我的理解,gdtr在开启了页保护机制后,存放的应该是线性地址。肯定不是虚拟地址了,要不就鸡生蛋,蛋生鸡了;
ldtr无所谓什么地址,它只是指向gdtr里的偏移值而已。

论坛徽章:
0
3 [报告]
发表于 2009-02-24 19:22 |只看该作者
原帖由 wmjob 于 2009-2-24 19:07 发表
请问这两个寄存器中的地址是各描述符表的虚拟地址还是描述符表的物理地址

gdtr ldtr为线性地址, 在开启了页式存储管理之后也是需要页表转换一下才能得到物理地址的.

论坛徽章:
0
4 [报告]
发表于 2009-02-24 20:00 |只看该作者

回复 #3 scutan 的帖子

谢谢解惑!
这个线性地址的转化过程和普通的线性地址的转化转化过程有没有区别?
如果是普通的一个用户进程地址空间的线性地址肯定是需要页表转换一下才能得到物理地址的.
但对于这个内核地址空间的一个虚拟地址的转化是不是直接减掉0xc0000000(因为看到《Linux内核源代码情景分析》上说通过一个宏__pa(virtual_addr)可以得到virtual_addr的物理地址)。
或者说MMU在映射内核地址空间的虚拟地址的时候也没有任何特别的也是要查页表的,这个宏只是提供了一种在程序中实现虚拟地址到物理地址转换的接口

论坛徽章:
0
5 [报告]
发表于 2009-02-24 20:02 |只看该作者

回复 #2 huanggao 的帖子

谢谢解惑!

论坛徽章:
0
6 [报告]
发表于 2009-02-24 20:03 |只看该作者
原帖由 wmjob 于 2009-2-24 20:00 发表
谢谢解惑!
这个线性地址的转化过程和普通的线性地址的转化转化过程有没有区别?
如果是普通的一个用户进程地址空间的线性地址肯定是需要页表转换一下才能得到物理地址的.
但对于这个内核地址空间的一个虚拟 ...


没有区别, 和普通的线性地址转换是一样的. 都是通过查找页目录页表得到它的物理地址的.

只是说通过查找页目录页表得到的物理地址在数值上与减去那个PAGE_OFFSET的值是相同的而已.

论坛徽章:
0
7 [报告]
发表于 2009-02-24 20:08 |只看该作者

回复 #6 scutan 的帖子

呵呵  明白了 谢谢大牛

论坛徽章:
0
8 [报告]
发表于 2009-02-24 20:16 |只看该作者
原帖由 wmjob 于 2009-2-24 20:08 发表
呵呵  明白了 谢谢大牛


你的这些疑问我以前也有, 只是比你先知道而已.
你也可以看看下面 这个贴子中的资料:

http://linux.chinaunix.net/bbs/viewthread.php?tid=915518
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP