概念
- 中断(Interrupt)
由外部硬件设备或异步事件产生的 - 异常(Exception)
- 故障
- 陷阱
故障与陷阱都是可恢复的 - 终止
不可恢复的
IDT(Interrut Decription Table)
IDT表是位于物理内存中的线性表。当有中断或者异常发生时,CPU会通过IDT来寻找处理函数。
操作系统在启动阶段会初始化这个表,系统中每一个CPU都有一份IDT的拷贝
IDT的位置与长度由CPU的IDTR寄存器描述。高32位是IDT的基址,低16位是长度
IDT有256项,每一项是一个门结构,包括三种门描述符:
- 任务门,用于CPU任务切换
- 中断门,描述中断处理程序入口
- 陷阱门,描述异常处理程序入口
数据结构
CONTEXT
记录环境
1 | typedef struct DECLSPEC_NOINITALL _CONTEXT { |
EXCEPTION_RECORD
记录异常信息
1 | typedef struct _EXCEPTION_RECORD { |
流程