80386可以有256个中断。 被分为5类: 外部硬件中断, 非屏蔽中断, 软件中断, 内部中断,及异常, 复位;
外部硬件, 软件, 非屏蔽中断 由用户定义.
中断按其中断号的优先级来提供服务: 基于五种层次的优先级, 基于类型号的优先级.
保护模式的中断描述符表:
中断描述符是门描述符. 最多包括256个门. 可以定以为陷阱门, 中断门, 任务门. 中断门, 陷阱门允许控制转交给当前的任务的其他服务程序(内核属于当前任务的一部分, 内核中的驱动程序, 单内核). 任务门主要用来任务切换(控制转交给不同的任务, 微内核).
中断描述符包括:段选择符, 偏移量, 访问权限, 类型. 这些标识了服务程序入口点. 描述符的访问权限, 标识了有效性, DPL特权级, T陷阱门还是中断门. 陷阱门在上下文切换时并不清除IF, 来禁止外部硬件中断.
一般来讲, 外部硬件中断由中断门描述符配置. 一旦相应了中断, 则IF置位, 禁止中断. 除非软件重新允许接口(中断保存现场, 要置位), 不可能接受其他硬件中断. 另一方面内部中断, 使用陷阱门描述(系统调用, 不设置IF, 允许硬件中断).
中断指令:
CLI
STL
LIDT
INT n
IRET
INTO
BOUND
HLT
WAIT
设置IF标志位, 清除标志位. 保护模式下, 会比较当前特权级和IOPL特权, 如果小于IO则失败, 产生一般性保护异常.
INTO中断溢出指令, 可能溢出的算术指令后面. 异常 4
BOUND检查阵列索引寄存器置是否在最大最小之间, 异常 5
HLT等待外部中断;
WAIT忙查询外部设备.
在启动中断门时, 80386自动清除if, 可以屏蔽外部中断. 如果要允许中断可以在isr中 sti来重新允许外部中断. 否则只可在结束时的iret来允许.
8259a
![](http://img.zemanta.com/pixy.gif?x-id=86de3db4-6ca9-8af3-8758-11c08d4a1613)
作者:liyonghelpme 发表于2010/6/11 13:45:00
原文链接
阅读:196 评论:0
查看评论