CSAPP阅读笔记(6)-异常控制流
2009-06-07 21:39
423 查看
这一章讲述异常控制,这里的异常控制并不简单地指程序代码中的Exception,而是具有更广泛意义的概念。它包括计算机系统中各个层次中的异常控制,从底层的中断,到程序员层的Exception,都属于这一范围。
从底层来说,异常控制是指由中断机制支持的异常处理。一般是由硬件触发,比如I/O访问、缺页等,共分四种:interrupt、fault、abort、trap。其中interrupt是由I/O设备发出的中断引起的,采用异步方式,处理数据收取等;trap是内部异常,采用同步方式,一般的系统调用以及int指令就对应这种方式;fault是可恢复的错误,也是同步方式,比如内存访问缺页或页保护等;abort是最严重的错误且不可恢复,基本上是直接当机。
中断处理程序的入口地址由中断向量表维护,一般最大可有256项,具体各项的意义在此不赘述,需要的时候再查。另,X86架构中,实模式下,采用的是中断向量表,表项就是入口地址,而在保护模式下,采用的是中断描述符表,这个表项包含的信息稍多一些,具体就不在这里说明了,可以查阅计算机组成原理相关资料。
好,下面稍稍提高下层次,关注一下进程。由于现在的系统都是多任务的,即同时有多个进程在运行,操作系统维护各进程状态并采取一定策略让它们不断地切换执行,这样的运行模式称为并发。并发的进程间存在两个问题,一个是内存缺页,这会引发fault来将相关的页调度进内存中;另一个是进程切换,由于切换时需保存当前进程运行现场,需要进行一定的操作,这些操作全部都是内核程序,而用户程序是无法运行的,所以需要中断机制来进行特权级切换,将用户权级提升为内核权级,保存现场,回到用户级,执行切换后的进程,如此往复。
后面涉及的还有Signal和进程管理方面的内容,比较琐碎,不总结了。
从底层来说,异常控制是指由中断机制支持的异常处理。一般是由硬件触发,比如I/O访问、缺页等,共分四种:interrupt、fault、abort、trap。其中interrupt是由I/O设备发出的中断引起的,采用异步方式,处理数据收取等;trap是内部异常,采用同步方式,一般的系统调用以及int指令就对应这种方式;fault是可恢复的错误,也是同步方式,比如内存访问缺页或页保护等;abort是最严重的错误且不可恢复,基本上是直接当机。
中断处理程序的入口地址由中断向量表维护,一般最大可有256项,具体各项的意义在此不赘述,需要的时候再查。另,X86架构中,实模式下,采用的是中断向量表,表项就是入口地址,而在保护模式下,采用的是中断描述符表,这个表项包含的信息稍多一些,具体就不在这里说明了,可以查阅计算机组成原理相关资料。
好,下面稍稍提高下层次,关注一下进程。由于现在的系统都是多任务的,即同时有多个进程在运行,操作系统维护各进程状态并采取一定策略让它们不断地切换执行,这样的运行模式称为并发。并发的进程间存在两个问题,一个是内存缺页,这会引发fault来将相关的页调度进内存中;另一个是进程切换,由于切换时需保存当前进程运行现场,需要进行一定的操作,这些操作全部都是内核程序,而用户程序是无法运行的,所以需要中断机制来进行特权级切换,将用户权级提升为内核权级,保存现场,回到用户级,执行切换后的进程,如此往复。
后面涉及的还有Signal和进程管理方面的内容,比较琐碎,不总结了。
相关文章推荐
- CSAPP阅读—第八章 异常控制流
- CSAPP阅读—第八章 异常控制流
- 【CSAPP笔记】14. 异常控制流和进程
- More Effective C++ 阅读笔记(八)--“抛出一个异常”与“传递一个参数”或“调用一个虚函数”间的差异
- [置顶] [CSAPP笔记][第八章异常控制流][呕心沥血千行笔记]
- iso15675 道路车辆控制局域网络诊断 第二部分 网络层服务 阅读笔记 (1)
- thinking in java 阅读笔记 第三章 程序控制流程
- thinking in java 阅读笔记 第三章 程序控制流程
- java编程思想阅读笔记(二)访问权限控制和复用类
- Scala学习笔记05【Scala函数定义、流程控制、异常入门】
- PL/SQL笔记(1)-流程控制,循环,异常,块
- Python 教程阅读笔记(三):更多控制流工具
- Python 教程阅读笔记(七):错误和异常
- 版本控制之道-使用git 阅读笔记一
- SCJP笔记_章五_流程控制、异常与断言
- CSAPP阅读笔记(4)-进程间通信
- CSAPP阅读笔记
- CSAPP(6):异常控制流
- Yii源码阅读笔记 - 错误/异常处理
- thinking in java 阅读笔记 第三章 程序控制流程