欠伸展肢体,吟咏心自愉。这篇文章主要讲述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请求
- 定时器产生信号
文章图片
通过异常表(exception table)的跳转表,进行间接过程调用(异常),到专门设计处理这种事件的操作系统子程序(异常处理程序(exception handler)
异常处理程序在执行结束后,会发生以下三种情况之一:
1. 返回应用程序当前指令Icurr
2. 返回应用程序的下一条指令Inext
3. 异常处理程序终止被中断的应用程序
8.1.1 异常处理
系统启动时,操作系统分配和初始化一张称为
异常表
的跳转表。- 条目k包含异常k的处理程序的地址。
异常表
的起始地址放在叫异常表基址寄存器
的特殊CPU寄存器中。异常
类似过程调用
,不过有以下不同- 过程调用,跳转到处理程序前,处理器将返回地址压入栈中。对于异常,返回地址是当前,或下一跳指令。
- 处理器会把额外的处理器状态压入栈中。
- 如果控制一个用户程序到内核,那么所有这些项目会被压入内核栈中,而是用户栈。
- 异常处理程序运行在内核模式下,这意味他们对所有系统资源有完整访问权限。
文章图片
8.1.2 异常的类别
文章图片
同步 synchronous 当一个方法被调用时,调用者需等待该方法执行完毕返回才能继续执行
异步 asynchronous 当一个方法被调用时,立即返回,并获取一个线程执行该方法内部的业务,调用者不用等待该方法执行完毕
文章图片
1.中断
中断异步发生,来自处理器外部的I/O设备的信号的结果
硬件中断不是由任何一条专门的指令造成,从一定意义上时异步的
文章图片
推荐阅读
- 极光推送-java消息推送app
- CentOS7根目录磁盘扩容(/dev/mapper/centos-root 空间不足)
- 如何通过UX设计吸引电子商务购物者
- UX和Web可访问性的重要性
- 通过这些Photoshop教程掌握热门设计趋势
- 如何在设计中有效引导自我
- 未来的无按钮UI设计
- 完善你的UX设计流程-原型设计指南
- 增强用户流程– UX分析指南