首页
社区
课程
招聘
[求助]保护模式下关于分页的疑问
发表于: 2008-10-19 22:45 4591

[求助]保护模式下关于分页的疑问

2008-10-19 22:45
4591
分页开启时,线性地址会转换为物理地址,我的疑问是,在由虚拟地址转换成线性地址时,需要由选择子找GDT中的描述符,那么查找GDT的过程是否也要转换?GDTR中原来装的是GDT的线性地址吧?如果查找GDT需要由线性地址转换为物理地址,是不是需要在PDE、PTE中有针对GDT地址的项?请解惑

[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!

收藏
免费
支持
分享
最新回复 (3)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
[QUOTE=;]...[/QUOTE]
GDTR是48位寄存器,从16位到47位前32位表GDT在内存中的地址,是线性地址,还是需要通过页表转换成物理地址
2008-10-20 00:39
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
刚才顺便复习了一下GDTR和LDTR,看看是不是有用,不知道有没有错误的地方?

GDTR是一个48位寄存器,指向全局描述符表GDT,从16位到47位前32位表示GDT在内存中的地址,是线性地址,需要通过页表转换成物理地址
LDTR是一个16位寄存器,是在GDT中的索引,指向局部描述符表LDT,每个任务有一个LDT,不同的LDT占用不同的内存段,由不同的系统描述符描述,这些系统描述符放在GDT中.
LDTR里面保存的是索引值,指向LDT在GDT中的位置,只需要修改LDTR寄存器的内容,就可以指向不同的LDT

如果手头上有虚拟地址xxxx:yyyyyyyy
首先从GDTR中取出GDT的基址BA找到GDT
xxxx一共16位,根据倒数第三位即T1位判断
如果T1=0,xxxx的前13位表示的是GDT的位置索引,根据索引得到一个描述符
该描述符含有段的基址与其他各种信息,段的起始地址+yyyyyyyyy就得到线程地址

如果T1=1,那么从LDTR得到LDT的位置索引,在GDT里面找到LDT描述符,LDT描述符里面包含LDT的线性地址
找到LDT,取出xxxx的前13位,在LDT中找到段描述符,该段描述符里面包含段的基址等信息.
而后段的基址加上yyyyyyyy得到线性地址
2008-10-20 00:51
0
雪    币: 214
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
同问。
http://bbs.pediy.com/showthread.php?t=92299
2009-6-26 02:29
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册