深入理解计算机系统 第八章 异常控制流 part1
本章主旨
第八章的目的是阐述清楚应用程序是如何与操作系统交互的(之前章节的学习是阐述应用程序是如何与硬件交互的)
异常控制流
异常控制流,即 ECF(exceptional contril flow)
ECF 的重要性
ECF 对于程序员的重要性体现在以下几点:
理解 ECF 将帮助我们理解重要的系统概念
理解 ECF 将帮助我们理解应用程序是如何与操作系统交互的
理解 ECF 将帮助我们编写有趣的新应用程序
理解 ECF 将帮助我们理解软件异常如何工作
异常处理程序
在任何情况中,当处理器检测到有事件发生时,它就会通过一张叫做异常表(exception table)的跳转表,进行一个间接过程调用(异常),到一个专门设计用来处理这类事件的操作系统子程序(即,异常处理程序),当异常处理程序完成处理之后,根据引起异常的事件的类型,会发生以下三种情况的一种:
1、处理程序将控制返回给当前指令 Icurr(当事件发生时正在执行的指令)
2、处理程序将控制返回给 Inext(如果没有发生异常将会执行的下一条指令)
3、处理程序终止被中断的程序
异常分类
异常可以分为四类:中断(interrupt)、陷进(trap)、故障(fault)和终止(abort)
中断:
来自 I/O 设备的信号可能会导致中断,中断是异步的,且总是会返回到下一条指令
陷阱:
陷阱即有意的异常,是同步的,且总是会返回到下一条指令
故障:
潜在的可恢复的错误会导致故障,是同步的,且可能返回到当前指令
终止:
不可恢复的错误会导致终止,是同步的,不会返回到原来的指令序列中