外围设备的中断请求及用中断来实现实时处理

简介: 外围设备的中断请求及用中断来实现实时处理

一、外围设备的中断请求


       IRQ(Interrupt Request) 代表的就是中断请求。IRQ用来暂停当前正在运行的程序,并跳转到其他程序运行的必要机制。该机制被称为 处理中断。中断处理在硬件控制中担当着重要的角色。因为如果没有中断处理,就有可能无法顺畅进行处理的情况


       从中断处理开始到请求中断的程序(中断处理程序)运行结束之前,被中断的程序(主程序)的处理是停止的。这种情况就类似于在处理文档的过程中有电话打进来,电话就相当于中断处理。假如没有中断处理的发生,就必须等到文档处理完成后,才能够接听电话。由此可见,中断处理有着巨大的价值,就像是接听电话后返回原来的文档作业一样,中断程序处理完成后,也会返回到主程序中继续


中断请求示意图:



    实施中断请求的是连接外围设备的I/O控制器,负责实施中断处理的是CPU,外围设备的中断请求会使用不同于 I/O端口的其他编号,该编号称为 中断编号。在控制面板中查看软盘驱动器的属性时,IRQ处现实的数值是 06,表示的就是用06号来识别软盘驱动器发出的请求。还有就是操作系统以及 BIOS 则会提供响应中断编号的中断处理程序


BIOS(Basic Input Output System):位于计算机主板或者扩张卡内置的ROM中,里面记录了用来控制外围设备的程序和数据


       假如有多个外围设备进行中断请求的话,CPU需要做出选择进行处理,为此,我们可以在I/O控制器和CPU中间加入名为 中断控制器 的IC来进行缓冲。中断控制器会把从多个外围设备发出的中断请求有序的传递给CPU。中断控制器的功能相当于就是缓冲。下面式中断控制器功能的示意图


中断控制器的功能:



   CPU在接受到中断请求后,会把当前正在运行的任务中断,并切换到中断处理程序。中断处理程序的第一步处理,就是把CPU所有寄存器的数值保存到内存的栈中。在中断处理程序中完成外围设备的输入和输出后,把栈中保存的数值还原到CPU寄存器中,然后再继续进行对主程序的处理


       假如CPU寄存器数值还没有还原的话,就会影响到主程序的运行,甚至还有可能会使程序意外停止或发生运行时异常。还是因为主程序在运行过程中,会用到CPU寄存器进行处理,这时候如果突然插入其他程序的运行结果,此时CPU必然会受到影响。所以,在处理完中断请求后,各个寄存器的值必须还原。只要寄存器的值保持不变,主程序就可以像没有发生任何事情一样继续处理


请求中断的处理:



二、用中断来实现实时处理


       中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行


       在程序的运行过程中,几乎无时无刻都会发生中断,其原因就是为了实时处理外部输入的数据,虽然程序也可以在不会中断的基础上处理的外部数据,但是那种情况下,主程序就会频繁的检查外围设备是否会有数据输入。由于外围设备会有很多个,因此有必要按照顺序来调查。按照顺序检查多个外围设备的状态称为 论询 。对于计算机来说,这种采用轮询的方式不是很合理,如果你正在检查是否有鼠标输入,这时候发生了键盘输入该如何处理呢?结果必定会导致文字的实时处理效率。所以即时的中断能够提高程序的运行效率


上面只是中断的一种好处,下面汇总一下利用中断能够带来的正面影响:


● 提高计算机系统效率。计算机系统中处理机的工作速度远高于外围设备的工作速度。通过中断可以协调它们之间的工作。当外围设备需要与处理机交换信息时,由外围设备向处理机发出中断请求,处理机及时响应并做相应处理。不交换信息时,处理机和外围设备处于各自独立的并行工作状态


● 维持系统可靠正常工作。现代计算机中,程序员不能直接干预和操纵机器,必须通过中断系统向操作系统发出请求,由操作系统来实现人为干预。主存储器中往往有多道程序和各自的存储空间。在程序运行过程中,如出现越界访问,有可能引起程序混乱或相互破坏信息。为避免这类事件的发生,由存储管理部件进行监测,一旦发生越界访问,向处理机发出中断请求,处理机立即采取保护措施


● 满足实时处理要求。在实时系统中,各种监测和控制装置随机地向处理机发出中断请求,处理机随时响应并进行处理


● 提供故障现场处理手段。处理机中设有各种故障检测和错误诊断的部件,一旦发生故障或错误,立即发出中断请求,进行故障现场记录和隔离,为进一步处理提供必要的依据


目录
相关文章
|
传感器 网络协议 算法
Java网络编程实时数据流处理
在现代计算机应用程序中,处理实时数据流是一项关键任务。这种数据流可以是来自传感器、网络、文件或其他源头的数据,需要即时处理并做出相应的决策。Java提供了强大的网络编程工具和库,可以用于处理实时数据流。本文将详细介绍如何使用Java进行实时数据流处理。
154 0
|
3月前
|
存储 SQL 数据挖掘
TDengine 流计算与窗口机制的深度解析:揭示计数窗口的关键作用
在 TDengine 3.2.3.0 版本中,我们针对流式计算新增了计数窗口,进一步优化了流式数据处理的能力。本文将为大家解读流式计算与几大窗口的关系,并针对新增的计数窗口进行详细的介绍,帮助大家进一步了解 TDengine 流式计算,以便更好地进行应用。
66 1
|
5月前
|
存储 JSON 监控
【Flume大揭秘】揭秘Flume断点续传的黑科技,让你的数据传输从此告别中断,稳如老狗!
【8月更文挑战第24天】Apache Flume是一款由Cloudera开发的分布式、可靠且高可用的日志数据收集系统,特别适用于大规模日志数据的采集、聚合与传输。其断点续传功能在遇到故障或中断时尤为关键,能确保数据传输从上次停止的地方继续进行而无需重头开始。
104 4
|
5月前
|
算法 数据处理 流计算
流计算引擎数据问题之传播模块工作如何解决
流计算引擎数据问题之传播模块工作如何解决
52 1
|
5月前
|
监控 Java API
【揭秘】如何用Flink CEP揪出那些偷偷摸摸连续登录失败的“捣蛋鬼”?——一场数据流中的侦探游戏
【8月更文挑战第26天】Flink 是一款先进的流处理框架,提供复杂事件处理(CEP)功能以识别实时数据流中的特定模式。CEP 在 Flink 中通过 `CEP` API 实现,支持基于模式匹配的事件检测。本文通过监测用户连续三次登录失败的具体案例介绍 Flink CEP 的工作原理与应用方法。首先创建 Flink 环境并定义数据源,接着利用 CEP 定义连续三次失败登录的模式,最后处理匹配结果并输出警报。Flink CEP 能够轻松扩展至更复杂的场景,如异常行为检测和交易欺诈检测等,有效应对多样化的业务需求。
60 0
交直流系统潮流计算(含5种控制模式)matlab代码
交直流系统潮流计算(含5种控制模式)matlab代码
|
8月前
|
存储 缓存 Linux
xenomai内核解析--xenomai与普通linux进程之间通讯XDDP(三)--实时与非实时数据交互
本文介绍了Xenomai中的XDDP(Xenomai Distributed Data Protocol)通信机制,XDDP用于实时和非实时进程之间的数据交换。XDDP在Xenomai内核中涉及的数据结构和管理方式,以及创建XDDP通道后的实时端和非实时端连接过程。
366 0
xenomai内核解析--xenomai与普通linux进程之间通讯XDDP(三)--实时与非实时数据交互
|
8月前
|
监控 安全 Java
利用Python多线程实现实时数据处理系统
利用Python多线程实现实时数据处理系统
221 2
|
存储 消息中间件 SQL
看场景、重实操,实时数仓不是“纸上谈兵”
Hologres产品负责人合一谈谈他眼中的实时数仓!
2195 4
看场景、重实操,实时数仓不是“纸上谈兵”
|
存储 分布式计算 NoSQL
分析服务一体化新能理解读| 学习笔记
快速学习分析服务一体化新能理解读
分析服务一体化新能理解读| 学习笔记