中断和异常的再总结
@(OS)
内部异常(内中断)
- 故障(fault)
- 自陷(trap)
- 终止(abort)
是源自CPU执行指令内部的事件。如:非法操作码,地址越界,算术溢出,虚存系统的缺页,陷入指令等引起的事件。内部异常不可被屏蔽,一旦出现立马处理。
外中断:来自CPU执行指令以外的事件。如:I/O中断,时钟中断等。
在操作系统层次上,我们多听到“异常”(Exception)而少见“中断”(Interrupt),且往往笼统地称其为异常,但处理器微体系结构规范通常会区分中断和异常。
一般而言,中断是异步的,异常是同步的,所谓同步和异步的概念,又与我们网络通信或函数调用中的同步异步有所不同。中断是来自处理器外部的I/O设备的信号的结果,它不是由指令流中某条指令执行引起的,从这个意义上讲,它是异步的,是来自指令流之外的。
异常又分为三类:陷阱(Trap)、故障(Fault)和终止(Abort),它们都是执行当前指令流中的某条指令的结果,是来自指令流内部的,从这个意义上讲它们都是同步的。
陷阱是有意而为之的异常,是明知有套还往里钻——人家要的就是这个结果