当前位置: 技术问答>linux和unix
中断描述符表(IDT)问题
来源: 互联网 发布时间:2016-11-23
本文导语: 中断描述符表中表项的DPL为什么不一致,比如int0描述符的DPL为内核级(0)而断点中断(int3)和溢出中断(int4)的DPL为用户级(3)?如果是为了在不同的特权级下进行调用的话,那么8259A的15个中断都为内核级,岂不...
中断描述符表中表项的DPL为什么不一致,比如int0描述符的DPL为内核级(0)而断点中断(int3)和溢出中断(int4)的DPL为用户级(3)?如果是为了在不同的特权级下进行调用的话,那么8259A的15个中断都为内核级,岂不是在用户级是不能进行硬件中断了?求指点
|
1, int(int 3)、into(int 4)、bound(int 5)的DPL设为3,是为了使用户态程序可以使用相应的指令来进行相应的中断(当然你可以DPL设为0,这样操作系统就不会为用户程序直接提供相应的功能了。这只是操作系统实现的一种方法)。
2,硬件中断不受DPL影响。8259A的15个中断都为内核级,是为了禁止使用户程序用int指令模拟硬件中断。
可参阅《LINUX内核完全剖析》相关章节。
2,硬件中断不受DPL影响。8259A的15个中断都为内核级,是为了禁止使用户程序用int指令模拟硬件中断。
可参阅《LINUX内核完全剖析》相关章节。
|
顶一下