首页 > 其他 > 详细

中断描述表基础

时间:2021-06-04 14:21:26      阅读:8      评论:0      收藏:0      [点我收藏+]

几种门的介绍:

任务门:

  里面包含TSS选择子,可以在GDT, LDT, IDT中

中断门:

  里面有例程选择子和对应偏移量,可以在IDT中

陷阱门:

  和中断门一样,只是进入后IF位不会自动置0,在IDT中

调用门:

  格式和上面一样,用call和jmp,可以在GDT和LDT中

符表特点

使用IDTR存表的长度和地址,同样是先是16位的表界限,然后是32位的表基址。但是由于int 后面是8位数,所以门描述符中需要利用P位表示是否存在例程

中断过程与保护:

①根据中断向量号定位中断例程

②进行特权级检查,检查方法和调用门检查一样

③执行中断例程,此时NT位和TF位置零,IF位自动置零避免嵌套中断。

④返回,使用IRET

  补充:

  TF为陷阱标志位,为零表示禁止单步执行。NT位为任务嵌套标志,如果NT为1表示这个任务是嵌套了别的任务才执行的,在IRET的时候会自动返回之前的任务,

  否则就直接返回中断点。

  中断的时候,同样要判断特权级是否改变,从而决定是否要换特权级栈。处理器依次在旧栈中压入SS_OLD, ESP_OLD, EFLAGS, CS_OLD, EIP_OLD,然后在把

  这些值复制到新栈中。同样注意是否有错误码,不然最后还要压入错误码,这个需要在返回的时候手动跳过它。

  在返回的时候同样要进行特权级检查

中断错误码:

有32位,功能就是指定中断发生在哪个端上

  格式:

  高字保留0 15-3为选择子 3为TI 2为IDT 1为EXT

  其中IDT表示是否在IDT中,EX表示是否中断源来自处理器外部

  全0的时候表示中断的发生与特定的段无关,或者引用了一个空描述符

        补充:

  通常,压入错误码的中断号在0-32之间

中断描述表基础

原文:https://www.cnblogs.com/TherLF/p/14849001.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!