linux内核完全剖析之(2)中断和异常处理
2012-04-24 10:38
204 查看
1.中断的概念
所谓中断是指CPU对系统发生的某个事件作出的一种反应:CPU暂停正在执行的程序,保留现场后自动地转去执行相应的处理程序,处理完该事件后再返回断点继续执行被“打断”的程序。
引起中断的事件称为中断源,中断源向CPU提出进行处理的请求称为中断请求。
2.中断类型
按中断事件来源进行分类,主要有两类:
(1)中断。由CPU以外的事件引起的中断,如I/O中断、时钟中断、控制台中断等。
(2)异常(exception)。来自CPU的内部事件或程序执行中的事件引起的过程。如由于CPU本身故障、程序故障和请求系统服务的指令引起的中断等。
3.中断的一般处理过程
中断处理一般分为中断响应和中断处理两个步骤。中断响应由硬件实施,中断处理主要由软件实施。
(1)中断响应
对中断请求的整个处理过程是由硬件件和软件结合起来而形成的一套中断请求机构实施的,发生中断时,CPU暂停执行当前的程序,而转去处理中断。这个硬件对中断请求作出反应的过程,称为中断响应。
一般来说,中断响应顺序执行下述三步动作:①中止当前程序的执行;②保存原程序的断点信息;③转到相应的处理程序。
通常CPU在执行一条指令后,立即检查有无中断请求。如有,则立即作出响应。
(2)中断处理
中断响应后,就由软件(中断处理程序)进行相应处理。中断处理过程大致分为四个阶段:保存被中断程序的现场,分析中断原因,转入相应处理程序进行处理,恢复被中断程序现场(即中断返回)。中断处理过程为:①保存现场;②分析原因;③分析原因;④中断返回。
中断发生在程序执行的随机时刻(异步中断),异常发生在处理器执行一条指令时(同步中断)。
中断源有:1、外部产生的中断(硬件产生)。2、软件产生的中断。
异常源有:1、处理器检测到的程序错误异常。2、软件产生的异常。
异常可以分为:故障(Fault(可以被纠正的异常,纠正后返回地址指向出错指令))、陷阱(Trap(可以被纠正返回地址指向出错指令的下一条指令))、中止(Abort(导致异常的程序不可重新执行))。
异常和中断的优先级:处理器会首先处理最高级的异常和中断。低优先级的异常被丢弃,低优先级的中断则会保持等待,当处理完异常和中断时,被丢弃的异常会重新发生。
所谓中断是指CPU对系统发生的某个事件作出的一种反应:CPU暂停正在执行的程序,保留现场后自动地转去执行相应的处理程序,处理完该事件后再返回断点继续执行被“打断”的程序。
引起中断的事件称为中断源,中断源向CPU提出进行处理的请求称为中断请求。
2.中断类型
按中断事件来源进行分类,主要有两类:
(1)中断。由CPU以外的事件引起的中断,如I/O中断、时钟中断、控制台中断等。
(2)异常(exception)。来自CPU的内部事件或程序执行中的事件引起的过程。如由于CPU本身故障、程序故障和请求系统服务的指令引起的中断等。
3.中断的一般处理过程
中断处理一般分为中断响应和中断处理两个步骤。中断响应由硬件实施,中断处理主要由软件实施。
(1)中断响应
对中断请求的整个处理过程是由硬件件和软件结合起来而形成的一套中断请求机构实施的,发生中断时,CPU暂停执行当前的程序,而转去处理中断。这个硬件对中断请求作出反应的过程,称为中断响应。
一般来说,中断响应顺序执行下述三步动作:①中止当前程序的执行;②保存原程序的断点信息;③转到相应的处理程序。
通常CPU在执行一条指令后,立即检查有无中断请求。如有,则立即作出响应。
(2)中断处理
中断响应后,就由软件(中断处理程序)进行相应处理。中断处理过程大致分为四个阶段:保存被中断程序的现场,分析中断原因,转入相应处理程序进行处理,恢复被中断程序现场(即中断返回)。中断处理过程为:①保存现场;②分析原因;③分析原因;④中断返回。
中断发生在程序执行的随机时刻(异步中断),异常发生在处理器执行一条指令时(同步中断)。
中断源有:1、外部产生的中断(硬件产生)。2、软件产生的中断。
异常源有:1、处理器检测到的程序错误异常。2、软件产生的异常。
异常可以分为:故障(Fault(可以被纠正的异常,纠正后返回地址指向出错指令))、陷阱(Trap(可以被纠正返回地址指向出错指令的下一条指令))、中止(Abort(导致异常的程序不可重新执行))。
异常和中断的优先级:处理器会首先处理最高级的异常和中断。低优先级的异常被丢弃,低优先级的中断则会保持等待,当处理完异常和中断时,被丢弃的异常会重新发生。
相关文章推荐
- [Linux内核完全剖析]第五章Linux内核体系结构5.4-5.6总结 x86中断和时间控制
- <<Linux内核完全剖析 --基于0.12内核>>学习笔记 第4章 80x86保护模式及其编程 4.6 中断和异常处理
- linux0.11内核完全剖析 - 块设备驱动程序
- 《linux 内核完全剖析》chapter 13 内存管理 (不含swap.c)
- linux0.11内核完全剖析 - ramdisk.c
- 《linux 内核完全剖析》 chapter 8 内核代码
- 《linux 内核完全剖析》 void free_page() 分析
- Linux内核之内存管理完全剖析
- 【深入剖析Linux内核】Linux内核之旅——(二)内核抢占与中断返回
- <<Linux内核完全剖析 --基于0.12内核>> 学习笔记 第4章 80x86保护模式及其编程 4.1 80x86系统寄存器和系统指令
- 《linux 内核完全剖析》 vsprintf.c 代码笔记
- 《linux 内核完全剖析》 chapter 2 微型计算机组成结构
- 《linux 内核完全剖析》 由逻辑地址转换成线性地址代码分析 get_base get_limit 代码分析笔记
- 赵炯<<Linux 0.11内核完全剖析>>P30 MBR程序调试
- linux0.11内核完全剖析- sched.c
- <<Linux内核完全剖析 --基于0.12内核>>学习笔记 第4章 80x86保护模式及其编程 4.7 任务管理
- 《linux 内核完全剖析》 include/asm/io.h
- [Linux内核完全剖析]第七章 初始化程序(init)总结
- 编译Linux0.00内核(《Linux内核完全剖析-基于0.12内核》)linux-0.00-041217和linux-0.00-050613
- [Linux内核完全剖析]第四章总结