中断与异常详解(一)


Intel x86共有256种异常或者中断,也就是常说的中断向量,分别有对应的中断类型码,分布如下

0-31

异常和非屏蔽中断

32-47

I/O设备引起的屏蔽中断,书中所讲为8259A单片机来处理响应34号中断外的其他中断

48-255

标识软中断,linux系统只使用了128号即0x80来实现系统内调用,在用户态下执行int 0x80汇编,cpu切换到内核态,执行system_call()函数

对于cpu跑指令的过程中遇到的突发情况分为两大类
 
CPU内部
 
cpu内部出现的问题,必须马上处理,所以叫异常;
 
CPU外部
 
cpu外部出现问题,可以不马上处理,所以采用可屏蔽和不可屏蔽中断的方式来区分。
 
为了管理方便,异常和不可屏蔽中断都当作异常来处理,这类问题有专门的异常处理程序,是linux要解决的问题。
 
0-17号是intel定义异常,除了3,4,5(以及后面的128)号是陷进外(留给系统调用),其他的都是故障,cpu跑不下去了,所以需要处理
18-31号为将来的cpu保留
 
32-47由8259A响应,对应下面的IRQ0-IRQ15,34号中断也就是IRQ2不知道做什么
还有个128号软中断系统调用

相关内容

    暂无相关文章