中断系统

news/2025/3/20 7:49:29/

引起中断的各种因素

1.人为设置的中断
2.程序性事故:溢出,除法非法,操作码不能识别
3.硬件故障
4.I/O设备
5.外部事件,键盘ESC退出

中断系统需要解决的问题

(1)各中断源怎么向CPU提出中断请求
(2)多个中断源同时提出了中断请求,怎么办
(3)CPU在什么条件,什么时间,以什么方式响应中断
(4)如何保护现场(就是中断结束后,要返回到原来的中断的地方,需要保存原来中断的地方继续向下执行)
(5)如何寻找入口地址(要执行中断程序,需要有一个入口地址)
(6)如何恢复现场,如何返回?
(7)如果在处理中断的过程又出现中断怎么办?
我们采用软件+硬件的方式来实现的

中断请求标记和中断判优逻辑

1.中断请求标记 INTR
一个请求源,一个INTR中断请求标记触发器
多个INTR,就组成了中断请求标记寄存器
在这里插入图片描述

2.中断判优逻辑

哪一种中断源的优先级最高,就先响应哪一个中断请求
(1)硬件操作 (排队器)
a。将排队器分散在各个中断源的接口电路中 链式排队器
b。集中在CPU的内部
用硬件的方式:
在这里插入图片描述
用软件实现(程序查询):
在这里插入图片描述
那么就会有一个问题了,怎么去找到中断服务程序的入口地址呢?

终端服务器入口地址的查找

1.硬件向量法
在这里插入图片描述
2.软件查询方法
在这里插入图片描述

中断响应

1.响应中断的条件
也就是说,如果这个时候CPU正在响应中断,如果这个时候又有中断请求了,CPU可以响应吗,明显是不能的,所以这个时候就要出现响应中断请求的条件
允许中断触发器 EINT=1时,表明可以响应中断
2.响应中断的时间
是不是在任何时间都可以响应中断呢?很明显是不可以的,比如在指令的执行期间
一般是在指令执行完毕之后,才可以响应中断请求
指令周期结束之后,由CPU发出查询信号
在这里插入图片描述
中断隐指令
(1)保护程序断点(因为在中断响应结束之后,要返回到断点处)
断点存于特定的地址 断点进栈
(2)寻找服务程序入口地址
向量地址 -> PC(硬件向量法)
中断识别程序 入口地址 M->PC (软件查询法)
(3)硬件关中断
避免在执行中断程序的时候又新的中断源干扰
INT中断标记
EINT允许中断
R-S触发器

保存现场和恢复现场

在这里插入图片描述

多重中断

如果在执行中断的过程中,出现了更重要的,需要及时处理的新事件,怎么办?
那么,中断是要被打断的:
在这里插入图片描述

实现多重中断的条件

要允许CPU在执行某个中断服务程序时,响应新的中断请求
(1)提前设置开中断指令(需要允许中断EINT打开
是不是任何一个新的中断服务请求都能打断当前的中断程序?
(2)优先级别高的中断源才能中断优先级别低的中断源
在这里插入图片描述
在主程序执行的时候,如果B和C发出中断请求,这时候因为B的优先级比C高,所以先响应B的中的中断请求,当响应完B的中断请求之后,CPU会查询还有没有中断请求,发现C这时中断请求还在,所以就会接着响应C的中断请求,执行完C的中断请求后,会返回到主程序,如果这时候D发出中断请求,那么这时候CPU就会响应D的中断请求,但是,在响应D的中断请求时候,CPU检测到有比D更高级别的中断请求,所以会打断D的中断程序执行,从而响应A的中断请求,只有在完成A的中断程之后,CPU才会返回去执行D的中断程序执行完D的中断程序之后,会返回到主程序。

3.屏蔽技术

(1)屏蔽触发器的作用
就是使得某一个中断源无法向CPU发出中断服务请求,也不能参加中断优先排队器的排队
在这里插入图片描述
屏蔽触发器对应的值就是屏蔽字
实际上每一个中断源对应一个0/1,多个中断源0/1排列
在这里插入图片描述
上面中,假如1号中断源在执行中断应用程序,那么如果下面的中断源发出中断请求那么CPU是不会进行响应的。

(3)屏蔽技术可以改变中断处理的优先等级
响应优先级 不可改变
处理优先级 可以改变 通过重新设置屏蔽字
也就是说,我们可以让优先级高的不能进入优先排队器中进行响应
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(4)屏蔽技术的其他应用
可以人为的屏蔽某个中断源的请求
在这里插入图片描述

4.多重中断的断点保护

(1)断点进栈 中断隐指令完成
(2)断点存入“0”地址 中断隐指令完成
但是,如果每个断点都保存在“0”地址的话,那么之前的保存的断点就会被冲掉,那么怎么存入断点呢?
在这里插入图片描述


http://www.ppmy.cn/news/123445.html

相关文章

单片机中断系统

前言:中断系统是单片机非常重要的组成部分,是为了使单片机能够对外部或者内部随机发生的事件实时处理而设置的。 一:单片机的概念 一个高速主机和一个低俗外设连接时,效率极低,低俗外设工作时无端大量占用CPU时间。一…

17.中断控制器

文章目录 中断控制器4412下的中断控制器本次实验用到的寄存器 编程 中断控制器 如果外设直接发送中断给CPU会存在下列问题: 当CPU在处理一个中断时会屏蔽其它中断由于CPU是多核的,中断请求会随机发送给任意CPU,会造成混乱中断不清楚是属于F…

中断系统结构及中断控制详解

中断系统结构及中断控制详解 MCS—51提供5个中断请求源,2个中断优先级,可实现两级中断服务程序嵌套。当CPU执行关中断指令后(或复位),将屏蔽所有中断请求,只有CPU执行开中断指令后才有可能接受中断请求&am…

中断控制器

在ARM中CPU有七种工作模式: 什么叫做工作模式? 每一种工作模式都有哪些东西? 每一种工作模式下面都有一些不同的寄存器、不同的权限、不同的触发条件; 不同的寄存器,如图: 可以看出,不同工…

Linux中断子系统(二)中断控制器GIC驱动分析

Linux中断子系统(二)中断控制器GIC驱动分析 备注:   1. Kernel版本:5.4   2. 使用工具:Source Insight 4.0   3. 参考博客: Linux中断子系统(一)中断控制器及驱动分析 吐血整…

ARM通用中断控制器GIC之中断控制

在阅读本章之前,可以参考笔者之前关于GIC的一些描述: ARM通用中断控制器GIC(generic Interrupt Controller)简介 ARM架构Generic Interrupt Controller(GIC)之Distributor和CPU interface功能介绍 ARM架构Generic Interrupt Controller(GIC)详解之术语…

Linux中断子系统(一)中断控制器GIC架构

Linux中断子系统(一)中断控制器GIC架构 备注:   1. Kernel版本:5.4   2. 使用工具:Source Insight 4.0   3. 参考博客: Linux中断子系统(一)中断控制器及驱动分析 吐血整理|肝…

day35|贪心算法-柠檬水找零用最少的箭引爆气球

今日方法汇总: 柠檬水找零(临时变量的设置)根据身高重建队列用最少数量的箭引爆气球 860.柠檬水找零 将中间结果记录在字典中,每次找零均遍历字典中的数值。 分析题目的场景,贪心的策略就是优先选择10块钱进行找零&…