GDTR和LDTR如何把虚拟地址转换成线性地址
来源:互联网 发布:在线ftp源码 编辑:程序博客网 时间:2024/04/28 18:44
DTR是一个48位寄存器,指向全局描述符表GDT,从16位到47位前32位表示GDT在内存中的地址,是线性地址,需要通过页表转换成物理地址
LDTR是一个16位寄存器,是在GDT中的索引,指向局部描述符表LDT,每个任务有一个LDT,不同的LDT占用不同的内存段,由不同的系统描述符描述,这些系统描述符放在GDT中.
LDTR里面保存的是索引值,指向LDT在GDT中的位置
如果手头上有虚拟地址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得到线性地址
LDTR是一个16位寄存器,是在GDT中的索引,指向局部描述符表LDT,每个任务有一个LDT,不同的LDT占用不同的内存段,由不同的系统描述符描述,这些系统描述符放在GDT中.
LDTR里面保存的是索引值,指向LDT在GDT中的位置
如果手头上有虚拟地址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得到线性地址
- GDTR和LDTR如何把虚拟地址转换成线性地址
- 虚拟地址、线性地址和物理地址的转换
- Linux_虚拟地址、线性地址和物理地址的转换
- 虚拟地址、线性地址和物理地址的转换
- 虚拟地址、线性地址和物理地址的转换
- 虚拟地址、线性地址和物理地址的转换
- Linux_虚拟地址、线性地址和物理地址的转换
- 虚拟地址、线性地址和物理地址的转换
- 虚拟地址、线性地址和物理地址的转换
- GDTR LDTR
- 理解的逻辑地址、线性地址、物理地址和虚拟地址
- 逻辑地址、线性地址、物理地址和虚拟地址
- 逻辑地址、线性地址、物理地址和虚拟地址
- 逻辑地址、线性地址、物理地址和虚拟地址的区别
- 逻辑地址、线性地址、物理地址和虚拟地址理解
- 逻辑地址、线性地址、物理地址和虚拟地址(转)
- 逻辑地址、线性地址、物理地址和虚拟地址
- 逻辑地址、线性地址、物理地址和虚拟地址
- Android UI学习 - TableLayout
- Hanoi学习笔记
- 数据结构笔记---单链表
- Android UI学习 - Tab的学习和使用
- Android UI学习 - GridView和ImageView的使用
- GDTR和LDTR如何把虚拟地址转换成线性地址
- 用c++和python写GUI程序(python嵌入方式)
- Activity生命周期的学习以及Logcat的使用
- Activity的跳转与传值
- 单链表的反转
- Perl:关于标准输出STDOUT和标准错误STDERR z
- Android开发指南-框架主题-安全和许可
- Linux C编程连载(2)-鼠标控制
- MZ Header Notes (1)