中断与异常
来源:互联网 发布:网络编辑好做吗 编辑:程序博客网 时间:2024/05/10 10:09
中断和异常一直是OS课程中的重点,最近在读Csapp中异常部分给了我一些不同的理解方式,在这里稍加总结。
首先,给出书中定义:
现代操作系统通过使控制流发生突变来对这些情况做出反应。一般而言,把这些突变称为ECF(exceptional control flow),即异常控制流。
异常可以分为四类:中断(interrupt)、陷阱(trap)、故障(fault)和终止(abort)。
中断
中断是异步的,是来自处理器外部的I/O设备的信号的结果。硬件中断不是由任何一条专门的指令造成的,从这个意义上来说它是异步的。硬件中断的异常处理程序常常被称为中断处理程序(interrupt handler)
下图概述了一个中断的处理。I/O设备通过向处理器芯片上的一个管脚发信号,并将异常号放到系统总线上,来处罚中断,这个异常号标示了引起中断的设备。中断处理程序将控制返回给应用程序控制流的下一条指令。
剩下的异常类型是同步的,是执行当前指令的结果。
陷阱
陷阱是有意的异常,是执行一条指令的记过。就像中断处理程序一样,陷阱处理程序将程序控制流返回到下一条指令。陷阱最重要的用途是在用户程序和内核之间提供一个像过程一样的接口,叫做系统调用。
故障
故障由错误情况引起,它可能被错误处理程序修正。当一个故障发生时,处理器讲控制转移给故障处理程序。如果处理程序能够修正这个错误情况,它就控制返回到故障指令,从而重新执行它。否则,处理程序返回到内核中的abort例程,终止引起故障的应用程序。
终止
终止时不可恢复的致命错误造成的过节——典型的是一些硬件错误。比如DRAM或者SRAM位被损坏时发生的奇偶错误。终止处理程序从不将控制返回给应用程序。
最后做简单举例帮助更好的理解
中断: 外部设备的响应请求,如敲击键盘,磁盘读取;
陷阱: 请求系统调用,如文件读取,创建进程;
故障: 不一定是致命性错误,如缺页异常;
终止: 致命性错误,如文中提到的奇偶错误;
说明:以上内容参照Csapp中文版第八章所写,图就是原书中的插图。
2010-09-04
- 中断与异常
- 3.中断与异常
- ARM异常与中断
- 中断与异常
- 关于中断与异常
- 中断与异常处理
- ARM7异常与中断
- 异常与中断处理
- 中断与异常
- 中断分类(异常 与 中断)
- 【中断异常】软中断与Bottom Half
- 中断与异常的关系
- 中断与异常的区别
- 异常与中断的区别
- 非屏蔽中断与异常
- ARM的异常与中断
- 异常处理与程序中断
- Linux2.6中断与异常
- 判断一个数是否是4的整数次方
- emacs undo/redo
- urxvt
- Lc.exe 已退出,代码 -1
- IS_ERR()宏是什么意思
- 中断与异常
- hibernate sef4j和login4j整合
- XSS攻击原理
- 手动备份驱动
- swap交换
- 和刘峰六学网络 --- VRRP原理讲座
- 伏尔泰-法国
- C++类中的4个特殊函数 - 缺省构造函数、拷贝构造函数、拷贝赋值操作符和析构函数
- 初级时间演化