前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >7.4.2 程序中断方式

7.4.2 程序中断方式

作者头像
week
发布2018-08-24 15:21:44
1.2K0
发布2018-08-24 15:21:44
举报
文章被收录于专栏:用户画像用户画像

1.中断的基本概念

程序中断是指在计算机执行现行程序的过场中,出现某些急需处理的异常情况或特殊请求,CPU暂停中断现行程序,而专区对这些异常情况或特殊情况进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序。

程序中断的作用如下: ①实现CPU与I/O设备的并行工作。

②处理硬件故障和软件错误。

③实现人机交互,用户干预机器需要用到中断系统。

④实现多道程序、分时操作,多道程序的切换需要借助于中断系统。

⑤实时处理需要借助中断系统来实现快速响应。

⑥实现应用程序和操作系统(管态程序)的切换,称为“软中断”。

⑦多处理系统中各处理器之间的信息交流和任务切换。

思想:CPU在程序中安排好某一时刻启动某一台外设,然后CPU继续执行原来程序,不需要像查询方式那样一直等待外设准备就绪。一旦外设完成数据传送的准备工作,便主动向CPU发送中断请求,请求CPU为自己服务。在可以相应中断的条件下,CPU暂停终止正在执行的程序,转去执行中断服务程序为外设服务,在中断服务程序中完成一次主机与外设之间的数据传送,传送完成后,CPU返回原来的程序。

2.程序中断工作流程

(1)中断请求

中断请求是指中断源向CPU发送中断请求信号。

①内中断和外中断

中断源是请求CPU中断的设备或事件,一台计算机允许有多个中断源。根据中断源的类别,可把中断源分为内中断和外中断两种。

每一个中断源向CPU发送中断请求的时间是随机的。为了记录中断时间并区分不同的中断源,中断系统需对每个中断源设置中断请求标记触发器INTR,当其状态为“1”时,表示中断源有请求,这些触发器可组成中断请求标记寄存器,该寄存器可集中在CPU中,也可以分散在各种中断源中。

外中断是指来自处理器和内存以外的部件引起的中断,包括I/O设备发出的I/O中断、外部信号中断(如用户按<ESC>键),以及各种计时器引起的时钟中断等。外中断在狭义上一般被称为中断。

内中断主要指在处理器和内存内部产生的中断。包括程序运算引起的各种错误,如地址非法、检验错、页面失效、存储访问控制错、算术操作溢出、数据格式非法、除数为0、非法指令、用户程序执行特权指令、分时操作系统中的时间片中断以及用户态到核心态的切换等。

②硬件中断和软件中断

硬件中断:通过外部的硬件产生的中断。硬件中断属于外中断。

软件中断:通过某条指令产生的中断。这种中断可以编程实现,软件中断属于内中断

③非屏蔽中断和可屏蔽中断(全是外中断)

非屏蔽中断:非屏蔽中断是一种硬件中断,此种中断通过不可屏蔽中断请求NMI控制,不受中断标志位IF的影响,即使关中断(IF=0)的情况下也会被响应。

可屏蔽中断:可屏蔽中断也是一种硬件中断,此种中断通过中断请求标记触发器INTR控制,且受中断标志位IF的影响,在关中断情况下不接受中断请求。

(2)中断判优

中断系统在任意瞬间只能响应一个中断源的请求,由于许多中断源提出中断请求的时间都是随机的,因此当多个中断源同时提出请求时,需通过中断判优逻辑确定哪个中断源的请求。如故障中断的优点级较高,然后是I/O中断。

中断判优既可以用硬件实现,也可以用软件实现。硬件实现是通过硬件排队器实现的,它既可以设置在CPU中,也可以分散在各个中断源中,软件实现是通过查询程序实现的。

一般来说,硬件故障中断属于最高级,其次是低速设备,输入设备优于输出设备,实时设备低于普通设备。

(3)CPU响应中断的条件

CPU在满足一定的条件下响应中断源发出的中断请求,并经过一些特定的操作,专区执行中断服务程序。

条件:

①中断源有中断请求。

②CPU允许中断及开中断。

③一条指令执行完毕,没有更紧迫的任务。

注意:I/O设备的就绪时间是随机的,而CPU是在统一的时刻即每条指令执行阶段结束前后,接口发出中断查询信号,以获取I/O的中断请求,也就是说,CPI响应中断的时间是在每条执行阶段的结束时刻。这里说的中断仅指外中断,内中断不属于此类情况。

(4)中断隐指令

CPU响应中断后,经过某些操作,转去执行中断服务程序。这些操作是由硬件直接实现的,把它称为中断隐指令。中断隐指令并不是指令系统中的一条真正的指令,它没有操作码。所以中断隐指令是一种不允许、也不可能为用户使用的特殊指令。它完成的操作是: ①关中断。在中断服务程序中,为了保护中断现场(即CPU主要寄存器的内容)期间不被新的中断所打断,必须关中断,从而保证被中断的程序在中断程序服务程序完毕之后能接着正确地执行下去。

②保存断点。为了保证在中断服务程序执行完毕后能正确地返回到原来的程序,必须将原来程序的断点(即程序计数器(PC)的内容)保存起来。

③引出中断服务程序。取出中断服务程序的入口地址(中断向量)并传送给程序计数器(PC).

(5)中断向量

不同的设备有不同的中断服务程序,每个中断服务程序都有一个入口地址,CPU必须找到这个入口地址,即中断向量,把系统的全部中断向量存放到存储器的某一区域内,这个存放中断向量的存储区就叫中断向量表,即中断服务程序入口地址表。

当CPU响应中断后,中断硬件会自动将中断向量地址传动到CPU,由CPU实现程序的切换,这种方法称为中断向量法,采用中断向量法的中断称为向量中断。

注意:中断向量是中断服务程序的入口地址,中断向量地址是指中断服务程序的入口地址的地址。

(6)中断处理过程

①关中断。

处理器响应中断后,首先要保护程序的现场状态,在保护现场过程张,CPU不应该响应更高级中断源的中断请求。否则,如果现场保存不完整,在中断服务程序结束后,就不能正确地恢复并继续执行现行程序。

②保存断点。为了保证中断服务程序执行完毕后正确地返回到原来的程序,必须将原来程序的断点保存起来。断点可以压入堆栈,也可以存入主存的特定单元中。

③引出中断服务程序。取出中断服务程序的入口地址(中断向量)并传送给程序计数器(PC).

通常由两种方法寻址中断服务程序的入口地址:硬件向量法和软件查询法。

硬件向量法是通过引荐产生中断向量地址,再由中断向量地址找到中断服务的入口地址,软件查询法是用软件编程的办法找到入口地址。

注意:硬件产生的实际是中断类型号。而中断服务程序后首先要保存现场,现场信息一般指的是程序状态字、中断屏蔽寄存器和CPU中某些寄存器的内容。

④保护现场和屏蔽字。进入中断服务程序后首先要保存现场,现场信息一般指的是程序状态字,中断屏蔽寄存器和CPU中某些寄存器的内容。

⑤开中断。这将允许更高级中断请求得到响应,实现中断嵌套。

⑥执行中断服务程序。这是中断系统的核心。

⑦关中断。保证在恢复现场和屏蔽字时不被中断。

⑧恢复现场和屏蔽字。将现场和屏蔽字恢复到原来的状态。

⑨开中断、中断返回。中断服务程序的最后一条指令通常是一条中断返回指令,使其返回到源程序的断点处,以便继续执行远程序。

其中,①~③在CPU进入中断周期后,由中断隐指令(硬件自动)完成;④~⑨由中断服务程序完成。

注意:恢复现场是指在中断返回前,必须将寄存器的内容恢复到中断处理前的状态,这部分工作由中断服务程序完成,中断返回由中断服务程序的最后一条中断返回指令完成。

3.多重中断和中断屏蔽技术

如果CPU在执行中断服务程序的过程中,又出现了新的更高的优先级的中断请求,而CPU对新的中断请求不予响应,这种中断为单重中断。

如果CPU在执行现行的中断服务程序,转去处理新的中断请求,这种中断为多重中断,又称中断嵌套。

中断屏蔽技术主要用于多重中断,CPU要具备多重中断的功能,必须满足下列条件。

①在中断服务程序中提前设置开中断指令。

②优先级别高的中断源有权中断优先级别低的中断源。每个中断源都有一个屏蔽触发器1表示屏蔽该中断源的请求,0表示可以正常申请,所有屏蔽触发器组合在一起,便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年09月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档