当前位置: 技术问答>linux和unix
求教一个 GDT 和 LDT 关系的问题
来源: 互联网 发布时间:2017-02-19
本文导语: 假如用a:b这个逻辑地址, 当T1=1时,LDTR就可以当成段选择符,先由GDTR找到GDT表, 然后加上LDTR的偏移值,找到LDT描述符,再由里面的基值加上a的偏移值(即LDT段基址+a段选择符), 最后找到LDT中的局部段描述符,加上b的偏移值来得到最终...
假如用a:b这个逻辑地址,
当T1=1时,LDTR就可以当成段选择符,先由GDTR找到GDT表,
然后加上LDTR的偏移值,找到LDT描述符,再由里面的基值加上a的偏移值(即LDT段基址+a段选择符),
最后找到LDT中的局部段描述符,加上b的偏移值来得到最终的线性地址呢?
=3=抱歉,有点绕,,但这就是我现在所能了解的,,,求救高人,,没积分了,,,
当T1=1时,LDTR就可以当成段选择符,先由GDTR找到GDT表,
然后加上LDTR的偏移值,找到LDT描述符,再由里面的基值加上a的偏移值(即LDT段基址+a段选择符),
最后找到LDT中的局部段描述符,加上b的偏移值来得到最终的线性地址呢?
=3=抱歉,有点绕,,但这就是我现在所能了解的,,,求救高人,,没积分了,,,
|
形象的比喻是这么的,GDT是内核的‘GDT’,LDT是进程的‘GDT’,但是LDT的入口在GDT登记,LLDT时,要是是LDT,那么先去GDT找到LDT(s)的索引,然后顺着索引,找到LDT实体,然后就加载啦....,你滴明白的干活?