7.4.2 程序中断方式

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表示可以正常申请,所有屏蔽触发器组合在一起,便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏架构技术

【转】如何将MySQL数据目录更改为CentOS 7上的新位置

数据库随着时间的推移而增长,有时超过了文件系统的空间。当它们与操作系统的其他部分位于同一分区上时,也可能遇到I / O争用。RAID,网络块存储和其他设备可以提...

11030
来自专栏乐沙弥的世界

关于 Private strand flush not complete

      网友发来告警日志,原本是关于一个死锁的情形,而另外的一个问题则是从redo log buffer写出到redo log file出现了不能分配新的日...

14630
来自专栏我叫刘半仙

SpringBoot+JWT+Shiro+MybatisPlus实现Restful快速开发后端脚手架

1.1K30
来自专栏北京马哥教育

使用monit搭建一个监控系统

马哥linux运维 | 最专业的linux培训机构 ---- 上周用monit搭建或者说定制了一个监控系统,来监控服务器发生事情。当然了主要是监控异常,因为我...

43970
来自专栏技术博文

linux ss命令使用详解

ss是Socket Statistics的缩写。顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够...

51760
来自专栏我叫刘半仙

SpringBoot+JWT+Shiro+MybatisPlus实现Restful快速开发后端脚手架

前后端分离已经成为互联网项目开发标准,它会为以后的大型分布式架构打下基础。SpringBoot使编码配置部署都变得简单,越来越多的互联网公司已经选择Spring...

1.3K130
来自专栏Ryan Miao

Linux文件属性,权限和修改文件权限,所属者和所属组

剩下的三组主要由[rwx]组成,r-read, w-write, x-execute, [-]表示占位符,即没权限。

12530
来自专栏Jerry的SAP技术分享

使用ABAP批量下载有道云笔记中的图片

当您看到一篇好的有道云笔记分享时,可能会想将其精美的图片下载到本地。作为程序猿,我们不会去手动一张张下载。写个程序帮我们自动下载吧。

12520
来自专栏PHP在线

php + mysql 分布式事务

事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元; 事务应该具有4个属性:原子性、一致性、隔离性、持续性; 原子性(atomi...

52060
来自专栏Seebug漏洞平台

从 CVE-2018-8495 看 PC 端 url scheme 的安全问题

本文受 CVE-2018-8495 漏洞的启发,以学习的目的,针对 PC 端 url scheme 的安全问题进行了分析研究。

13910

扫码关注云+社区

领取腾讯云代金券