什么是中断?
中断实际上是对信号做出的一种反应,
即CPU对I/O设备发来的中断信号的一种反应。是由外部设备引起的。俗称外中断。
在此插一嘴什么是陷入?
陷入是特殊的中断,因为陷入是由CPU内部事件引起的中断,俗称内中断
中断 | 陷入 | |
相同 | 信号的处理流程 | |
不同 | 信号的来源 |
什么是中断处理程序?
中断处理程序位于I/O系统的底层,直接与硬件进行交互
怎么操作?
先中断硬件,然后中断处理程序,首先保存被中断进程的CPU环境,然后转向相应设备的中断处理程序进行处理,处理完成,恢复被中断进程的CPU环境,返回断点继续运行。
形象到生活中去:
你的朋友约定好向你发出三长两短的敲门信号(中断信号),而你听到敲门声后就知道这是你的朋友来了,于是停下手头的工作(中断进程的CPU环境),开门端茶倒水,会客流程走起(中断处理程序进行处理),朋友走后,继续进行手头的工作(恢复被中断进程的CPU环境,返回断点继续运行)
为什么说中断信号是实现多道程序的基础?
因为进程之间的切换时通过中断来完成的
啥是中断向量表?
每种设备映射一个中断处理程序,
把程序的入口地址放在中断向量表的表项中去,
为每一个设备的中断请求设规定一个中断信号
每一个房间都有一个钥匙,把钥匙都收拾到一起,放到钥匙柜里,然后列一张表格,表格里有那个钥匙对应那个房间,和那个钥匙在钥匙柜里的位置,如果想打开某个房间,就根据表格找到钥匙,然后把门打开。
多个中断信号,但是根据中断信号的要紧程度的不同来划分出中断的优先级,恩,很合理
以上分别介绍了有关中断的一些名词的概念。
下面,我们来看看对多中断源的处理方式。
这个话题牵扯到两种处理方式:
屏蔽(禁止)中断
嵌套中断
我们接着回到之前的场景,你的好基友拜访你要和你游戏开黑,正当你们打得火热的时候,你的女朋友突然给你打电话要你陪她去看电影(此处没女朋友的可以想象出一个女朋友 /滑稽),但是作为直男的你毅然决然地选择了朋友,没有什么能将你的注意力从游戏上移开。。。。最后,你的基友走了,留你怅然若失地在家里,你这才想到你的女朋友,然后个她去看电影
分析以上情景,在朋友发来中断过请求后,对于在这之后发来的任何中断请求都不予理睬,这个就是屏蔽中断
我们再看,还是这个场景,你的好基友拜访你要和你游戏开黑,正当你们打得火热的时候,你喜欢的女生突然给你打电话要你陪她去看电影,爱情来的就是那么突然,但是你要去了游戏怎么办,游戏重要还是爱情重要?为了你的后半生,你选择了爱情,挂机让你的朋友孤军奋战。在看过电影之后,你又回家继续打游戏 。(果然还是直男,说看电影就只看电影)
分析以上场景,在比较过基友的中断和女友的中断请求之后,显然女友的中断优先级要高于基友的中断优先级,你选择了陪女友,但是你并没有忘记朋友,于是你陪玩女友后又接着陪基友。这样的中断称为嵌套中断。有点像抢占式优先调度算法。