中断:
在早期的计算中,处理器必须等待信号进行处理。因此,处理器必须检查系统中的每一个硬件和软件程序是否有任何信号要处理。这种检查信号在系统中进行处理的方法称为轮询法。在这种方法中,问题是处理器不得不浪费大量的时钟周期来检查系统中的信号,这样处理器就会变得不必要地繁忙。如果进程收到任何信号,处理器将花费一些时间来处理该信号,因为轮询进程正在运行。因此系统的性能也会下降,系统的响应时间也会减少。
因此,为了克服这个问题,工程师们引入了一种新机制。在这种机制中,处理器将不会检查来自硬件或软件的任何信号,相反,硬件/软件将只将信号发送给处理器进行处理。来自硬件或软件的信号应该具有最高的优先级,因为处理器应该离开当前进程并处理硬件或软件的信号。这种处理信号的机制被称为系统中断。
什么是中断?
中断是一种从硬件或软件得到的具有最高优先级的信号,处理器应立即对其进行处理。
类型的中断:
虽然中断的优先级比其他信号高,但有许多类型的中断,但基本类型的中断是
- 硬件中断:如果处理器的信号来自外部设备或硬件,则称为硬件中断。例如:我们从键盘上按下一个键来做一些动作,键盘上的按键会产生一个信号给处理器来做动作,这样的中断被称为硬件中断。硬件中断可以分为两种类型
- 可屏蔽中断:当一个优先级高得多的中断发生在处理器上时,可以延迟的硬件中断。
- 非可屏蔽的中断:不能被延迟并且应该被处理器立即处理的硬件。
- 软件中断:软件中断也可以分为两种类型。他们是
- 正常中断:由软件指令引起的中断称为软件指令。
- 例外:执行程序时的计划外中断称为异常。例如:在执行一个程序时,如果我们得到一个应该被0除的值,就称为异常。
中断按发生周期的分类:
- 周期性的中断:如果中断在时间轴上以固定的间隔发生,则该中断称为周期中断
- 非周期中断:如果中断的发生不能被预测,那么该中断被称为非周期中断。
根据与系统时钟的时间关系对中断进行分类:
- 同步中断:中断源与系统时钟同步的称为同步中断。换句话说,依赖于系统时钟的中断。例如使用系统时钟的定时器服务。
- 异步中断:如果中断与系统时钟无关或不同步,则称为异步中断。
中断处理:
我们知道指令周期由读取、解码、执行和读/写函数组成。在每个指令周期之后,处理器将检查要处理的中断,如果系统中没有出现中断,它将进入由指令寄存器给出的下一个指令周期。
如果有一个中断出现,那么它将触发中断处理程序,该处理程序将停止正在处理的当前指令,并将其配置保存在寄存器中,并从中断向量表给出的位置加载中断的程序计数器。在处理器处理中断后,中断处理程序将从保存的寄存器加载指令及其配置,进程将从它留下的地方开始处理。这种保存旧的指令处理配置和加载新的中断配置也称为上下文切换。
中断处理程序也称为中断服务例程(ISR)。有不同类型的中断处理程序,它们将处理不同的中断。例如时钟在一个系统中会有它的中断处理程序,键盘它会有它的中断处理程序对于每个设备它会有它的中断处理程序。
ISR的主要特点是
- 中断可以在异步中断的任何时候发生。ISR可以调用异步中断。
- 中断服务机制可以从多个源调用ISR。
- ISR可以同时处理可屏蔽中断和不可屏蔽中断。程序中的一条指令可以禁用或启用中断处理程序调用。
- ISR在开始执行时将禁用其他设备中断服务。ISR执行完成后,它将重新初始化中断服务。
- ISR允许嵌套中断转移到其他ISR。
中断处理程序类型:
- 一级中断处理程序是硬中断处理程序或快速中断处理程序。这些中断处理程序在进程执行时有更多的抖动,它们主要是可屏蔽中断
- 二级中断处理程序是软中断处理程序和慢中断处理程序。这些中断处理程序有更少的抖动。
中断延迟:
当中断发生时,通过执行ISR中断的服务可能不会通过上下文切换立即启动。中断发生和ISR开始执行之间的时间间隔称为中断延迟。
- Tswitch =上下文切换所需的时间
- ΣTexec =ISR执行时间间隔的总和
- 中断延迟= Tswitch + ΣTexec
相关链接:实时操作系统
25的反应
我一直在寻找关于中断的解释,因为在我的系统上几个小时终于得到了这个页面上最好的解释。
非常感谢你…
这是可以理解的
太棒了。很好的定义……
非常可以理解的…
如此令人印象深刻,精确,简洁而细致。
(感谢您的服务)
解释得好我对你的解释很满意
解释得很好,谢谢
你好,
很好,你能解释一下IVT(中断向量表)???????????吗
非常非常好的解释,谢谢,我明白了
我明白了,谢谢
非常容易理解。
这对我很有帮助
非常感谢你的帮助
非常漂亮
很好的解释。
非常感谢
最好的音符之一。我从来没有见过超级和例子是非常有用的,谢谢
非常精确和直观。多谢。
大多数时候,教师是建立学生对某个主题、话题或其他任何东西的感知/愿景的人
以上的讲解,让我的感悟非常清晰简洁
非常感谢
工厂
海
我有一个问题。
CPU如何知道它是什么类型的中断?
正如Hemasundar所问的,处理器如何知道发生了中断?
这是一个主要的部分。通常,会有一个PIC[可编程中断控制器]。当中断发生时,该过程将由PIC指示。该程序将保存当前上下文(规则内容)。然后它查看PIC的中断请求寄存器(IRR)列表,该列表指定了所有等待服务的中断。
很好的解释
我真的很欣赏你用简单易懂的方式解释它。如此精确的
非常可以理解的。
请详细解释如何将370个中断分成这两种。
太棒了
伟大的
完美的一个超级和例子非常有用