持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情
一、中断的概念
什么是中断,我们从一个生活中的例子引入。你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。这就是生活中的“中断”现象,就是正常的工作过程被外部的事件打断了。 在处理器中,所谓中断,是一个过程,即CPU在正常执行程序的过程中,遇到外部/内部的紧急事件需要处理,暂时中断(中止)当前程序的执行,而转去为事件服务,待服务完毕,再返回到暂停处(断点)继续执行原来的程序。为事件服务的程序称为中断服务程序或中断处理程序。严格地说,上面的描述是针对硬件事件引起的中断而言的。用软件方法也可以引起中断,即事先在程序中安排特殊的指令,CPU执行到该类指令时,转去执行相应的一段预先安排好的程序,然后再返回来执行原来的程序,这可称为软中断。把软中断考虑进去,可给中断再下一个定义:中断是一个过程,是CPU在执行当前程序的过程中因硬件或软件的原因插入了另一段程序运行的过程。因硬件原因引起中断过程的出现是不可预测的,即随机的,而软中断是事先安排好的。
二、中断源的概念
仔细研究一下生活中的中断,对于理解中断的概念也很有好处。生活中很多事件可以引起中断,如:(有人按门铃了,电话铃响了,你的闹钟响了,你烧的水开了……诸如此类的事件。我们把可以引起中断的信号源称为中断源。)
三、中断优先级的概念
设想一下,我们正在看书,电话铃响了,同时又有人按了门铃,你该先做哪一个呢?如果你正在等一个很重要的电话,一般不会去理会门铃;反之,如果你正在等一位重要的客人,则可能就不会去理会电话了。如果不是这两者(既不等电话,也不等人上门),你可能会按你通常的习惯去处理。总之,这里存在一个优先级的问题,在处理器中也是如此,也有优先级的问题,即同时有多个中断源递交中断申请时的中断控制器对中断源的响应优先级别。需要注意的是,优先级的问题不仅仅发生在两个中断同时产生的情况下,也发生在一个中断已产生,又有一个中断产生的情况下。比如,你正接电话,有人按门铃的情况下,或你正开门与人交谈,又有电话响了的情况。这时也需要根据中断源的优先级来决定下一动作。 ARM处理器中有7种类型的异常,按优先级从高到低的排列如下:复位异常(Reset)、数据异常(Data Abort)、快速中断异常(FIQ)、外部中断异常(IRQ)、预取异常(Prefetch Abort)、软中断异常(SWI)和未定义指令异常(Undefined interrupt)。