软件中断、硬件中断及其相关概念

中断

中断是指计算机在执行程序的过程中,当出现异常情况或特殊请求时,中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,再返回被中断程序的间断处,继续执行原程序。

l          硬件中断导致处理器通过一个上下文切换context switch)来保存执行状态(以程序计数器和程序状态字等寄存器信息为主);

l          软件中断则通常作为CPU指令集中的一个指令,以可编程的方式直接指示这种上下文切换,并将处理导向一段中断处理代码。中断在计算机多任务处理,尤其是实时系统中尤为有用。

 

问题的提出

如果计算机系统没有中断,则处理器与外部设备通信时,它必须在向该设备发出指令后进行忙等待(Busy waiting),反复轮询该设备是否完成了动作并返回结果,这就造成了大量处理器周期被浪费。

 

问题的解决

引入中断以后,当处理器发出设备请求后就可以立即返回以处理其它任务,而当设备完成动作后,该设备发送中断信号给处理器,处理器就可以再回过头获取处理结果。这样,在设备进行处理的周期内,处理器可以执行其它一些有意义的工作,而只付出一些很小的、切换上下文所引发的时间代价。

 

中断向量表

中断向量中断源的识别标志,可用来存放中断服务程序的入口地址或跳转到中断服务程序的入口地址。   

<1>    存放中断服务程序的入口地址 

PC/AT机中,中断向量是指中断服务程序的入口地址,每个中断向量分配4个连续的字节单元,两个高字节单元存放入口的段地址CS,两个低字节单元存放入口的段内偏移量IP

PC/AT中,规定内存储器的最低1 KB用来存放中断向量(256),称这一片内存区为中断向量表,地址范围是0~3FFH,如图所示:

 

软件中断、硬件中断及其相关概念 - U-BOOT - 少就是多,慢就是快!

 

PC/AT中由硬件产生的中断标识码被称为中断类型号(当然,中断类型号还有其他的产生方法,如指令中直接给出、CPU自动形成等),即在中断响应期间8259A产生的是当前请求中断的最高优先级的中断源的中断类型号。

中断类型号和中断向量之间有下面的关系:   

中断类型号×4 == 存放中断子程序的首地址 == 中断向量   

有了存放中断向量的首地址,从该地址开始的4个存储单元中取出的就是中断服务程序的入口。

<2>    跳转到中断服务程序的入口地址  AVRARM微处理器中中断向量的大小也是4个字节但其中存放的不是中断服务程序的入口地址,而是可执行的代码。当响应中断时,硬件自动执行相应中断向量处的跳转代码,然后跳转到具体的中断服务程序的入口地址。   

 

中断处理过程

    CPU得到中断类型码后,先进行现场保护,主要包括:

<1>    状态寄存器FLAGS压栈

<2>    关闭中断

<3>    将当前代码段寄存器CPSR和程序计数器PC压栈

<4>    现场保护完成后,CPU开始骤翻译中断程序入口地址。在得到中断处理程序地址之后但调用中断处理程序之前,CPU会再检查一下NMI引脚是否有信号,以防在刚才的处理过程中忽略了可能的NMI中断。

<5>    恢复现场

<6>    开中断

 

中断的屏蔽

中断屏蔽也是一个十分重要的功能,所谓中断屏幕蔽是指通过设置相应的中断屏蔽位,禁止响应某个中断。这样作的目的,是保证在执行一些重要的程序中不响应中断,以免造成迟缓而引起错误。例如,在系统启动执行初始化程序时,就屏蔽键盘中断,使初始化程序能够顺利进行。这时,敲任何键,都不会响应。当然对于一些重要的中断是不能屏蔽的,例如重新启动、电源故障、内存出错、总线出错等影响整个系统工作的中断是不能屏蔽的。因此,从中断是否可以被屏蔽来看,可分为可屏蔽中断和不可屏蔽中断两类。

 

中断源

  凡是能够引起中断原因或提出中断请求的设备和异常故障均称被称为中断源通常中断源有以下几种:

<1>    外部设备请求中断。一般的外部设备(如键盘、打印机和A / D转换器等)在完成自身的操作后,向CPU发出中断请求,要求CPU为他服务。由计算机硬件异常或故障引起的中断,也称为内部异常中断。

<2>    故障强迫中断。计算机在一些关键部位都设有故障自动检测装置。如运算溢出、存储器读出出错、外部设备故障、电源掉电以及其他报警信号等,这些装置的报警信号都能使CPU中断,进行相应的中断处理。

<3>    实时时钟请求中断。在控制中遇到定时检测和控制,为此常采用一个外部时钟电路(可编程)控制其时间间隔。需要定时时,CPU发出命令使时钟电路开始工作,一旦到达规定时间,时钟电路发出中断请求,由CPU转去完成检测和控制工作。

<4>    数据通道中断。数据通道中断也称直接存储器存取(DMA)操作中断,如磁盘、磁带机或CRT等直接与存储器交换数据所要求的中断。

<5>    程序自愿中断。CPU执行了特殊指令(自陷指令)或由硬件电路引起的中断是程序自愿中断,是指当用户调试程序时,程序自愿中断检查中间结果或寻找错误所在而采用的检查手段,如断点中断和单步中断等。

 

中断分类

<1>    按中断处理方式,可分为简单中断和程序中断。

l          简单中断采用周期窃用的方法来执行中断服务,有时也称数据通道或DMA

l          程序中断不是窃用中央处理机的周期来进行中断处理,而是中止现行程序的执行转去执行中断服务程序。

<2>    按中断产生的方式,中断可分为自愿中断和强迫中断。

l          自愿中断即通过自陷指令引起中断,或称软件中断,例如程序自愿中断;

l          强迫中断是一种随机发生的实时中断,如外部设备请求中断、故障强迫中断、实时时钟请求中断和数据通道中断等。

<3>    按引起中断事件所处的地点,中断可分为内部中断和外部中断。

l          外部中断也称为外部硬件实时中断,他由来自CPU某一引脚上的信号引起;

l          内部中断也称软件指令中断,他是为了处理程序运行过程中发生的一些意外情况或调试程序而提供的中断。

<4>    根据微处理器内部受理中断请求的情况,中断可分为可屏蔽中断和不可屏蔽中断。

l          可屏蔽中断(maskable interrupt),硬件中断的一类,可通过在中断屏蔽寄存器中设定位掩码来关闭。

l          非可屏蔽中断(non-maskable interruptNMI):硬件中断的一类,无法通过在中断屏蔽寄存器中设定位掩码来关闭。典型例子是时钟中断(一个硬件时钟以恒定频率50Hz—发出的中断)。

 

中断系统的功能

中断系统应具有的功能可归结为中断处理和中断控制。

<1>    中断处理。中断处理包括发现中断请求、响应中断请求、中断处理和中断返回。

<2>    中断控制。中断控制主要是实现中断优先级的排队和中断嵌套。

 

中断的优先级

  一个形象的例子:如果在电话铃响的同时,门铃也响了,那么你将在接电话开门这两个中断请求中选择,先响应哪一个请求。这就有一个谁优先的问题。如果开门接电话重要(或者说开门接电话的优先级高),那么就应该先开门,然后再接电话,接完电话后再回头来继续写信。这就是说,当同时有多个中断请求时,应该先响应优先级较高的中断请求。

此外,如果在响应一个中断,执行中断处理的过程中,又有新的中断事件发生而发出了中断请求,应该如何处理也取决于中断事件的优先级。当新发生的中断事件的优先级高于正在处理的中断事件时,又将中止当前的中断处理程序,转去处理新发生的中断事件,处理完毕才返回原来的中断处理。在上面的例子中,我们假设开门接电话的优先级高。在你写信时,电话铃响了,你去接电话,在通话的过程中,门铃又响了。因为开门的优先级高,你只能让通话的对方稍等,放下电话去开门。开门之后再回头继续接电话,通话完毕再回去继续写信。而如果开门接电话的优先级低,那么在通话的过程中门铃响了也可以不予理睬,通话结束再去开门。

当然,在日常生活中,谁也不会为开门接电话规定一个优先级别的高低。但是在计算机中,各种中断事件很多,其优先级都有规定,否则就会乱套。在计算机中,中断事件的优先级是根据事件的实时性、重要性和软件处理的方便性来安排的。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【摘要】本文详解了 Linux 内核的中断实现机制。首先介绍了中断的一些基本概念,然后分 析了面向对象的 Linux 中断的组织形式、三种主要数据结构及其之间的关系。随后介绍了 Linux 处理异常和中断的基本流程, 在此基础上分析了中断处理的详细流程, 包括保存现场、 中断处理、中断退出时的软中断执行及中断返回时的进程切换等问题。最后介绍了中断相关 的 API,包括中断注册和释放、中断关闭和使能、如何编写中断 ISR、共享中断中断上下 文中断状态等。 【关键字】中断,异常,hw_interrupt_type,irq_desc_t,irqaction,asm_do_IRQ,软中断, 进程切换,中断注册释放 request_irq,free_irq,共享中断,可重入,中断上下文 1 中断概述 1.1 为什么需要中断处理器的速度跟外围硬件设备的速度往往不在一个数量级上,因此,如果内核采取让处理器硬件发出一个请求,然后专门等待回应的办法,显然差强人意。既然硬件的响应这么慢, 那么内核就应该在此期间处理其他事务,等到硬件真正完成了请求的操作之后,再回过头来 对它进行处理。想要实现这种功能,轮询(polling)可能会是一种解决办法。可以让内核定期 对设备的状态进行查询, 然后做出相应的处理。 不过这种方法很可能会让内核做不少无用功, 因为无论硬件设备是正在忙碌着完成任务还是已经大功告成,轮询总会周期性地重复执行。 更好的办法是由我们来提供一种机制,让硬件在需要的时候再向内核发出信号(变内核主动 为硬件主动)。这就是中断机制。
软件设计师考试真题 附带2010年的考试大纲 考试科目1:计算机与软件工程知识  1.计算机科学基础   1.1 数制及其转换      • 二进制、十进制和十六进制等常用制数制及其相互转换   1.2 数据的表示      • 数的表示(原码、反码、补码、移码表示,整数和实数的机内表示,精度和溢出)      • 非数值表示(字符和汉字表示、声音表示、图像表示)      • 校验方法和校验码(奇偶校验码、海明校验码、循环冗余校验码)   1.3 算术运算和逻辑运算      • 逻辑代数的基本运算和逻辑表达式的化简   1.4 数学基础知识      • 命题逻辑、谓词逻辑、形式逻辑的基础知识      • 常用数值计算(误差、矩阵和行列式、近似求解方程、插值、数值积分)      • 排列组合、概率论应用、应用统计(数据的统计分析)      • 运算基本方法(预测与决策、线性规划、网络图、模拟)   1.5 常用数据结构      • 数组(静态数组、动态数组)、线性表、链表(单向链表、双向链表、循环链表)、队列、栈、树(二叉树、查找树、平衡树、线索树、线索树、堆)、图等的定义、存储和操作      • Hash(存储地址计算,冲突处理)   1.6 常用算法      • 排序算法、查找算法、数值计算方法、字符串处理方法、数据压缩算法、递归算法、图的相关算法      • 算法与数据结构的关系、算法效率、算法设计、算法描述(流程图、伪代码、决策表)、算法的复杂性  2.计算机系统知识   2.1 硬件知识    2.1.1 计算机系统的组成、体系结构分类及特性      • CPU和存储器的组成、性能和基本工作原理      • 常用I/O设备、通信设备的性能,以及基本工作原理      • I/O接口的功能、类型和特性      • I/O控制方式(中断系统、DMA、I/O处理机方式)      • CISC/RISC,流水线操作,多处理机,并行处理   2.1.2 存储系统      • 主存-Cache存储系统的工作原理      • 虚拟存储器基本工作原理,多级存储体系的性能价格      • RAID类型和特性   2.1.3 安全性、可靠性与系统性能评测基础知识      • 诊断与容错      • 系统可靠性分析评价      • 计算机系统性能评测方式   2.2 软件知识    2.2.1 操作系统知识      • 操作系统的内核(中断控制)、进程、线程概念      • 处理机管理(状态转换、共享与互斥、分时轮转、抢占、死锁)      • 存储管理(主存保护、动态连接分配、分段、分页、虚存)      • 设备管理(I/O控制、假脱机)      • 文件管理(文件目录、文件组织、存取方法、存取控制、恢复处理)      • 作业管理(作业调度、作业控制语言(JCL)、多道程序设计)      • 汉字处理,多媒体处理,人机界面      • 网络操作系统和嵌入式操作系统基础知识      • 操作系统的配置    2.2.2 程序设计语言和语言处理程序的知识      • 汇编、编译、解释系统的基础知识和基本工作原理      • 程序设计语言的基本成分:数据、运算、控制和传输,过程(函数)调用      • 各类程序设计语言主要特点和适用情况   2.3 计算机网络知识      • 网络体系结构(网络拓扑、OSI/RM、基本的网络协议)      • 传输介质、传输技术、传输方法、传输控制      • 常用网络设备和各类通信设备      • Client/Server结构、Browser/Server结构      • LAN拓扑,存取控制,LAN的组网,LAN间连接,LAN-WAN连接      • 因特网基础知识以及应用      • 网络软件      • 网络管理      • 网络性能分析   2.4 数据库知识      • 数据库管理系统的功能和特征      • 数据库模型(概念模式、外模式、内模式)      • 数据模型,ER图,第一范式、第二范式、第三范式      • 数据操作(集合运算和关系运算)      • 数据库语言(SQL)      • 数据库的控制功能(并发控制、恢复、安全性、完整性)      • 数据仓库和分布式数据库基础知识   2.5 多媒体知识      • 多媒体系统基础知识,多媒体设备的性能特性,常用多媒体文件格式      • 简单图形的绘制,图像文件的处理方法      • 音频和视频信息的应用      • 多媒体应用开发过程   2.6 系统性能知识      • 性能指标(响应时间、吞吐量、周转时间)和性能设计     

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值