8.1 异常
ECF
异常控制流(Exceptional Contral Flow)
可以简单地理解成,你在做一件事,这时候突然有人叫你,让你去做另一件事。
如:
-
硬件层,类似于各种中断;
-
操作系统层,内核通过上下文切换将控制从一个用户进程转移到另一个用户进程;
-
应用层,一个进程可以发送信号到另一个进程,而接收者会将控制突然转移到它的一个信号处理函数,就和聊QQ一样,有人给你发了一个消息,你切换聊天界面,查看这个消息;
其实中断只能算是异常的一种,除此之外,还有陷阱、故障、终止。
-
陷阱:是一种有意的异常,它有一个很重要的用途——系统调用,在用户程序和内核之间提供一个像过程一样的接口。
-
故障:它是因为错误情况引起的,当出现故障时,处理器会把控制转交给故障处理程序,如果能修好就返回到引起故障的指令,再次重新执行;如果修不好,处理程序就会返回到abort例程,直接终止引起故障的应用程序。典型的故障,而且能修好的就是——缺页异常。
-
终止:不可恢复的致命错误,大多数时候是硬件错误,比如DRAM或者SRAM被损坏了,处理程序直接返回给一个abort例程,终止该应用程序。