一些概念:
- 控制转移(control transfer):程序计数器的跳转
- 控制流(control flow):程序计数器的顺序跳转,即连续执行的两条指令的地址也连续
- 异常控制流(exception control transfer):程序计数器的突然变化,即连续执行的两条指令的地址不连续
异常的类型:
- Interrupt
唯一的一种异步异常,发生这种异常的原因是收到了处理器外部的I/O设备发出的信号。
- trap
通常是执行某条指令的结果,常用作系统调用(system call)。
- fault
一般是异常处理程序(exception handler)不能正确纠正(correct)的结果。当错误出现的时候,处理器把控制交给错误处理程序(fault handler),如果其可以正确处理这个错误,则引起错误的指令将获得控制,再次执行这条指令;如果不能正确处理,处理程序(handler)将会返回到内核中的异常终止程序(abort routine)并终止引起错误的应用程序。
虚拟内存中的页缺失(page fault exception)就是一个典型的例子。
- abort
由不可恢复的致命错误引起。不再将控制交给引起错误的指令,而是调用异常终止程序并结束引起错误的应用程序。