CSAPP第八章

欠伸展肢体,吟咏心自愉。这篇文章主要讲述CSAPP第八章相关的知识,希望能为你提供帮助。
CSAPP第八章
参考https://www.cnblogs.com/zy691357966/p/5480537.html
8.1异常
异常是异常控制流的一种形式,一部分由硬件实现,一部分由操作系统实现
a transfer of control to the OS kernel in response 
to some event
异常(exception)控制流的突变,用来响应处理器状态的某些变化。
事件(event)状态变化

  • 事件可能与当前执行指令有关
    • 存储器缺页,算数溢出
    • 除0
  • 也可能与当前执行指令无关
    • I/O请求
    • 定时器产生信号
【CSAPP第八章】
CSAPP第八章

文章图片

 
通过异常表(exception table)的跳转表,进行间接过程调用(异常),到专门设计处理这种事件的操作系统子程序(异常处理程序(exception handler)
 
  异常处理程序在执行结束后,会发生以下三种情况之一:
1. 返回应用程序当前指令Icurr
2. 返回应用程序的下一条指令Inext
3. 异常处理程序终止被中断的应用程序
8.1.1 异常处理
系统启动时,操作系统分配和初始化一张称为异常表的跳转表。
  • 条目k包含异常k的处理程序的地址。
  • 异常表的起始地址放在叫异常表基址寄存器的特殊CPU寄存器中。
  • 异常类似过程调用,不过有以下不同
    • 过程调用,跳转到处理程序前,处理器将返回地址压入栈中。对于异常,返回地址是当前,或下一跳指令。
    • 处理器会把额外的处理器状态压入栈中。
    • 如果控制一个用户程序到内核,那么所有这些项目会被压入内核栈中,而是用户栈。
    • 异常处理程序运行在内核模式下,这意味他们对所有系统资源有完整访问权限。
CSAPP第八章

文章图片

 

  8.1.2 异常的类别
CSAPP第八章

文章图片

 

  同步 synchronous 当一个方法被调用时,调用者需等待该方法执行完毕返回才能继续执行
  异步 asynchronous 当一个方法被调用时,立即返回,并获取一个线程执行该方法内部的业务,调用者不用等待该方法执行完毕
CSAPP第八章

文章图片

 

  1.中断
中断异步发生,来自处理器外部的I/O设备的信号的结果
硬件中断不是由任何一条专门的指令造成,从一定意义上时异步的
CSAPP第八章

文章图片

 


    推荐阅读