深入理解计算机操作系统——第8章:异常

异常:

(1)异常是异常控制流(ECF)的一部分,它一部分是由硬件实现的,一部分是由操作系统实现的。

(2)异常:就是控制流的突变,用来响应处理器中发生的变化。

 

 

(3)当处理器检测到异常信号时,会通过一各异常表的跳转表,进行一个间接的过程调用,调用一个专门处理这种

异常的子程序,处理完后返回

返回:3种可能

        处理程序将控制权返回给当前正在执行的指令Icure

        处理程序将控制权返回到异常发生时将要执行的下一条指令。

        处理器终止被中断的程序。

8.1.1 异常处理

(1)异常号:

系统中可能每种类型的异常都给分配一个唯一的异常号。

其中有部分由处理器设计者分配:被零除,缺页,存储器访问违例,断点,算术溢出

部分由操作系统内核设计者分配:操作系统调用,来自外部设备的IO信号。

(2)异常表

系统重启或初始化时,会分配一张表,异常表,条目k包含了异常k的处理程序的地址。

(3)异常处理过程

 

<1>过程调用时,先将返回地址压入栈中,或者是当前处理的指令,或者是下一条指令

<2>会将一些额外的处理器状态压入栈中

<3>如果控制由用户程序转入到内核,那么将所有状态压入到内核栈而不是用户栈。

<4>当运行在内核模式下,意味着程序可以访问所有的资源。

8.1.2 异常的类别

中断,陷阱,故障,终止。

 

中断:

异步的异常

 

陷阱:

陷阱是有意的异常,是执行一条指令的结果。这里陷阱将控制权返回给下一条指令,

陷阱最大的用途是在用户程序和内核之间提供一个像过程一样的接口。

普通的函数运行在用户的模式下。只能访问与调用函数相同的栈。

系统调用是运行在内核模式下。

 

故障:

故障是由错误情况引起的,它可能被故障处理程序修正,也可能就直接退出了

一个典型的故障就是缺页异常

 

终止:

终止通常是不可挽回的错误,通常是一些硬件错误

 

posted @ 2015-08-24 21:24  弱水三千12138  阅读(1077)  评论(0编辑  收藏  举报