中断的机制
Linux流中断处理的基础
为什么需要中断
最近的微型计算机内置了一个高性能中断控制器,可以将许多中断事件传输到每个CPU核心,包括内部中断,触发内置定时器等,以及捕获外部信号变化的外部中断等。那么,到底为什么微型计算机需要中断处理呢?
如果定序器只专注于捕捉一个外部信号的变化,只需继续读取该信号,并立即执行必要的处理,如果信号发生变化,则不需要中断。以这种方式,周期性地读取信号的过程被称为轮询。如果您能够通过轮询一直专注于监控信号变化,则可以最短的时间内响应中断事件。为了充分利用这一特点,将专用CPU核心分配给捕获变化的一部分外部信号,即可在软件轮询过程中实现与专用硬件完全相同的性能。
但是,在现实中,CPU的核心数是有限的,一个核心必须同时并行地做很多的工作,因此,CPU有时间限制的处理优先实行的中断的结构。
为了在不同的环境中运行相同的应用程序,Linux也实现了处理芯片内部和外部中断事件的机制,该Linux具有抽象单个硬件规格并将其展示给应用程序的功能。
巧妙地使用诀窍确保中断处理不占用CPU
在中断实现中,重要的是在一定的限制时间内结束从中断因素发生到实际中断处理执行的延迟时间。因此,在装有RTOS的嵌入式设备中,一般在中断处理程序中完成中断处理。
通常,在中断处理程序执行期间,中断禁止模式不接受另一个中断。当中断处理长时间占用CPU时,通常的主程序几乎不再运行。如果是简单的内置设备,这样的实现也可以取得一致性,但是在Linux的情况下,以多用户为前提&#x