从给处理器加电开始,直到断电为止,PC(程序计数器)都在不间断的读取并执行指令。
最简单的一种控制流是一个”平滑的”序列,其中每个 instk 和 instk+1 在存储器中都是相邻的。典型地,这种平滑流的突变,也就是 instk 和 instk+1 不相邻,是由诸如跳转(jump)、调用(call)和返回(ret)这样一些熟悉的程序指令造成的。这样一些指令都是必要的机制,使得程序能够对由程序变量表示的内部程序状态中的变化做出反应。
但是系统也必须能够对系统状态的变化做出反应,这些系统状态不是被内部程序变量捕获的,而且,也不一定要和程序的执行相关。比如,一个硬件定时器定期产生信号,这个事件必须得到处理。包(package)到达网络适配器后,必须存放在存储器中。程序向磁盘请求数据,然后休眠,直到被通知数据己就绪。当子进程终止时,创造这些子进程的父进程必须得到通知。
现代系统通过使控制流突变来对这些情况做出反应。一般而言,我们把这些突变称为异常控制流(Exceptional Control Flow, ECF)异常控制流发生在