中断知识点集合

简介: 中断知识点集合

一、什么是中断

根据《教师百科辞典》中的描述:中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。


单片机的中断系统是计算机的重要组成部分。实时控制、故障自动处理、计算机与外围设备间的数据传输往往采用中断系统。中断系统的应用大大提高了计算机效率。

二、中断全过程

中断全过程指的是从中断源发出中断请求开始,CPU响应这个请求,现行程序被中断,转至中断服务程序,直到中断服务程序执行完毕,CPU再返回原来的程序继续执行的整个过程。


大多数中断系统都具有如下几方面的操作,这些操作是按照中断的执行先后次序排列:


①接收中断请求。


②查看本级中断屏蔽位,若该位为1则本级中断源参加优先权排队。


③中断优先级选择。


④处理机执行完一条指令后或者这条指令已无法执行完,则立即中止现行程序。接着,中断部件根据中断级去指定相应的主存单元,并把被中断的指令地址和处理机当前的主要状态信息存放在此单元中。


⑤中断部件根据中断级又指定另外的主存单元,从这些单元中取出处理机新的状态信息和该级中断控制程序的起始地址。


⑥执行中断控制程序和相应的中断服务程序。


⑦执行完中断服务程序后,利用专用指令使处理机返回被中断的程序或转向其他程序。



为中断服务程序会用到寄存器和存储器的数据会被覆盖,而中断是要返回的,所以通常要保护现场。方法是把要保护的内容压入到堆栈。


三、中断类型

硬中断,信号来自芯片组的外部。


可屏蔽中断

非可屏蔽中断

处理器中断

伪中断

软中断:这个一般来说就是系统调用,顾名思义就是用软件设置的中断。是某个软件要进行某个操作而需要引起CPU的注意。


四、中断源

中断源是指能够引起中断的原因。


① 机器故障中断。

② 程序性中断。有些机器把程序性中断称为“异常”,不称为中断。

③ 输入-输出设备中断。

④ 外中断。

⑤ 调用管理程序。


五、中断优先级

几个中断请求可能同时出现,但中断系统只能按一定的次序来响应和处理。可最先被响应的中断具有最高优先权,按优先级别顺序进行处理。优先权高低是由中断部件的中断排队线路确定的。


六、中断屏蔽

对应于各中断级设置相应的屏蔽位。只有屏蔽位为1时,该中断级才能参加中断优先权排队。中断屏蔽位可由专用指令建立,因而可以灵活地调整中断优先权。有些机器针对某些中断源也设置屏蔽位,只有屏蔽位为1时,相应的中断源才起作用。


七、中断嵌套

当CPU响应某一中断时,若有优先权高的中断源发出中断请求,则CPU能中断正在进行的中断服务程序,并保留这个程序的断点(类似于子程序嵌套),响应高级中断,高级中断处理结束以后,再继续进行被中断的中断服务程序,这个过程称为中断嵌套。如果发出新的中断请求的中断源的优先权级别与正在处理的中断源同级或更低时,CPU不会响应这个中断请求,直至正在处理的中断服务程序执行完以后才能去处理新的中断请求。


八、向量中断

对应每个中断源设置一个向量。这些向量顺序存在主存储器的特定存储区。向量的内容是相应中断服务程序的起始地址和处理机状态字。在响应中断时,由中断系统硬件提供向量地址,处理机根据该地址取得向量,并转入相应的中断服务程序   。

目录
相关文章
|
9月前
|
存储 索引 Python
什么是数组,什么是对象,并说出他们的区别
什么是数组,什么是对象,并说出他们的区别
58 6
|
9月前
|
芯片
如何使用中断嵌套
如何使用中断嵌套
181 1
|
9月前
|
算法 数据安全/隐私保护 C++
【C/C++ 编程题 03】用两个栈实现一个队列的功能
【C/C++ 编程题 03】用两个栈实现一个队列的功能
43 0
|
9月前
|
算法 编译器 C语言
【C/C++ 编程题 02】用两个栈实现一个队列的功能
【C/C++ 编程题 02】用两个栈实现一个队列的功能
74 0
|
9月前
|
算法 Linux
易懂的方式讲解ARM中断原理以及中断嵌套方法
易懂的方式讲解ARM中断原理以及中断嵌套方法
336 0
每日一道面试题之什么是栈?什么是队列?它们之间有什么区别?
每日一道面试题之什么是栈?什么是队列?它们之间有什么区别?
118 0
|
存储
【数据结构】—— 队列基础知识以及数组模拟队列的分析、演示及优化
【数据结构】—— 队列基础知识以及数组模拟队列的分析、演示及优化
78 0
一看就懂之与栈结构(FILO)相对的——队列结构(FLFO)
一、什么是队列,什么是FIFO ​ 队列允许在一端进行插入操作,在另一端进行删除操作的线性表,队列是与栈相对的一个数据结构,栈的特点是先进后出,而队列的特点是先进先出,进行插入操作的一端叫队尾,进行删除的一端叫队头。 正如队列的名字一样,我们假设有一个队列(正在排队的一列队伍),一群人,人们依次进入队列进行排队。
|
算法
leetcode-每日一题636. 函数的独占时间(模拟栈)
如果是start,我们需要判断上一个函数是否已经end执行完成,若没有则让上一个函数进入睡眠状态,等到后面end的时候进行唤醒,也就是把上一个函数的开始时间修改成当前函数的开始时间,再把当前函数的编号和开始时间添加到堆栈顶部,如果已经完成了,则把当前的函数编号和开始时间放入堆栈顶部
112 0
leetcode-每日一题636. 函数的独占时间(模拟栈)
|
算法
数据结构与算法-数组模拟队列
数据结构与算法-数组模拟队列
110 0
数据结构与算法-数组模拟队列