+ -
当前位置:首页 → 问答吧 → 【虎彡】中断门, 陷阱门,任务门还不太透彻

【虎彡】中断门, 陷阱门,任务门还不太透彻

时间:2011-02-19

来源:互联网

进入中断门的条件为CPL>=处理程序的DPL对么?
需要检查CPL<=中断DPL吗?
进入中断后,CPL=中断处理程序DPL(还是中断门的DPL)?
有一致和非一致代码的区别吗?


进入陷阱门的条件为?

若CALL或JMP指令通过TSS描述符去执行一个任务的条件为?


普通跳转、通过任务门、调用门的条件以及CPL的变化已经弄清楚了 谢谢!

作者: znxllyuan   发布时间: 2011-02-19

陷阱门才需要检查CPL<=陷阱门DPL。IDT由于不能存放代码段描述符,所以根本不存在有一致和非一致代码的问题。
CPL>=处理程序的DPL
这个不管是中断门还是陷阱门都需要检查的,陷阱门多一个检查就是CPL<=陷阱门DPL。
因为陷阱门其实是由指令主动引起的,就如果主动调用一个程序,所以要检查CPL<=陷阱门DPL。
不管你引用什么描述符,只要有可能引起CPL改变的都要求EPL<=指令所引用的描述符的DPL的。

作者: manfeng   发布时间: 2011-02-19

其实对于这些特权比较你只要站在操作系统的角度想一想就知道了,如果不那样会不会有什么漏洞。

作者: manfeng   发布时间: 2011-02-19

引用 1 楼 manfeng 的回复:
陷阱门才需要检查CPL<=陷阱门DPL。IDT由于不能存放代码段描述符,所以根本不存在有一致和非一致代码的问题。
CPL>=处理程序的DPL
这个不管是中断门还是陷阱门都需要检查的,陷阱门多一个检查就是CPL<=陷阱门DPL。
因为陷阱门其实是由指令主动引起的,就如果主动调用一个程序,所以要检查CPL<=陷阱门DPL。
不管你引用什么描述符,只要有可能引起CPL改变的都要求EPL<=指令所……

 我归纳了一下,调用门、陷阱门需要门的DPL、目标代码DPL参加检查;
 中断门不需要门的DPL检查,只检查CPL和目标代码DPL;
 而任务门只需满足CPL(RPL)<=GatedescriptorDPL即可,  
 目的TSS描述符的DPL不参与检查。
 而陷阱门,中断门,普通跳转到一致代码段不需要检查RPL
 陷阱门、中断门、任务门不存在一致和非一致代码段之说!

 请问大侠 我总结的对吗

作者: znxllyuan   发布时间: 2011-02-19

软中断指令中根本就没有选择子,自然没有RPL,也就不存在检查RPL,JMP指令只能用于同CPL之间的跳转。(不包括任务切换)
其它总结没什么问题。

作者: manfeng   发布时间: 2011-02-19

引用 4 楼 manfeng 的回复:
软中断指令中根本就没有选择子,自然没有RPL,也就不存在检查RPL,JMP指令只能用于同CPL之间的跳转。(不包括任务切换)
其它总结没什么问题。

硬中断也不存在选择子吧?

作者: znxllyuan   发布时间: 2011-02-19

后面那句JMP是说 JMP用于跳转到普通段 CALL用于调用一致代码段?

作者: znxllyuan   发布时间: 2011-02-19

引用 6 楼 znxllyuan 的回复:
后面那句JMP是说 JMP用于跳转到普通段 CALL用于调用一致代码段?
 
任务内不同特权级的转移途径:段间调用指令CALL通过调用门实现从外层到内层的转移,段间返回指令RET实现内层到外层的转移. 不能用JMP指令实现任务内不同特权级的转移 明白了

作者: znxllyuan   发布时间: 2011-02-19

MARK,学习一下,呵呵

作者: va_zaixuexi   发布时间: 2011-02-19

2个问题
 1硬中断有选择子吗?

 2若CALL或JMP指令通过TSS描述符去执行一个任务,必须满足CPL<=DPL,RPL<=DPL
  此DPL是TSS描述符的DPL,而目标任务的DPL不参与检查对吗?

 

作者: znxllyuan   发布时间: 2011-02-19