一、硬中断
1、实现:
中断由CPU来实现
2、触发:
A、外部设备触发( INTR 引脚)
B、CPU 执行指令的过程中自己触发
C、软件调用 INT 指令触发
3、处理流程
1、当 CPU 接收到中断号后 例如: 系统调用的中断 0x80。
#中断描述符表由操作系统实现
2、通过IDTR寄存器找到中断描述符表,定位到中断号对应的中断描述符,
取出中断描述符表中存储的程序入口地址。
3、进行一些压栈操作:
①、如果发生了特权级转移,压入之前的堆栈段寄存器 SS 及栈顶指针 ESP 保存到栈中,
并将堆栈切换为 TSS 中的堆栈
②、压入标志寄存器 EFLAGS
③、压入之前的代码段寄存器 CS 和指令寄存器 EIP,相当于压入返回地址
④、如果此中断有错误码的,压入错误码 ERROR_CODE
⑤、结束(之后就跳转到中断程序了)
4、跳转到入口地址处执行代码
二、软中断
由软件 【实现】 的中断