深入理解计算机系统 第八章 异常控制流 part1

本章主旨

第八章的目的是阐述清楚应用程序是如何与操作系统交互的(之前章节的学习是阐述应用程序是如何与硬件交互的)

异常控制流

异常控制流,即 ECF(exceptional contril flow)

ECF 的重要性

ECF 对于程序员的重要性体现在以下几点:

理解 ECF 将帮助我们理解重要的系统概念

理解 ECF 将帮助我们理解应用程序是如何与操作系统交互的

理解 ECF 将帮助我们编写有趣的新应用程序

理解 ECF 将帮助我们理解软件异常如何工作

异常处理程序

在任何情况中,当处理器检测到有事件发生时,它就会通过一张叫做异常表(exception table)的跳转表,进行一个间接过程调用(异常),到一个专门设计用来处理这类事件的操作系统子程序(即,异常处理程序),当异常处理程序完成处理之后,根据引起异常的事件的类型,会发生以下三种情况的一种:

1、处理程序将控制返回给当前指令 Icurr(当事件发生时正在执行的指令)

2、处理程序将控制返回给 Inext(如果没有发生异常将会执行的下一条指令)

3、处理程序终止被中断的程序

异常分类

异常可以分为四类:中断(interrupt)、陷进(trap)、故障(fault)和终止(abort)

中断:

来自 I/O 设备的信号可能会导致中断,中断是异步的,且总是会返回到下一条指令

陷阱:

陷阱即有意的异常,是同步的,且总是会返回到下一条指令

故障:

潜在的可恢复的错误会导致故障,是同步的,且可能返回到当前指令

终止:

不可恢复的错误会导致终止,是同步的,不会返回到原来的指令序列中

原文地址:https://www.cnblogs.com/stone94/p/10165167.html