众筹|浅析Linux中断系统

众筹|浅析Linux中断系统

文章图片

众筹|浅析Linux中断系统

我们日常使用的电子产品 , 对于稍微复杂一点的系统来讲 , 都少不了中断系统 。 中断的出现避免了任务轮询带来的时间延时 , 让任务执行起来更加快捷 , 实时性更强 。 今天小编就来聊聊Linux系统的中断 。

定义及分类中断一般是指处理器(CPU)在执行程序的过程中 , 发生了某一些突发的事件 , 这时CPU会暂停正在执行的程序 , 转而去处理突发事件 , 处理完毕后又返回原来的程序断点处继续执行之前的程序 。 中断可以根据不同的方式进行分类 , 根据其来源可分为内部中断和外部中断 , 也就是中断是不是由CPU的内部产生的 , 比如内部计数器的溢出;根据中断是否可以屏蔽可以分为可屏蔽中断和不可屏蔽中断 , 通过设置中断控制器来控制中断是否被执行;中断向量的不同可以分为向量中断和非向量中断 , 向量可以理解为中断的入口地址 , 向量中断是指中断都有不同的入口地址 , 根据不同的地址来响应不同的中断 , 非向量中断是指所有中断共享一个入口地址 , 根据相应的标志位来区分不同的中断 。
【众筹|浅析Linux中断系统】
Linux中断架构对一般的单片机来讲 , 中断相对来讲简单一点 , 只需要编写中断处理程序即可 。 对于Linux系统来讲内核在调度任务的时候会遇到占用资源时间较长的事件 , 这时中断就会失去它的意义 。 所以Linux的中断是采用分开执行的方式进行 , 分为顶半部和底半部 。 顶半部主要处理紧急的事件 , 当中断来的时候直接读取相对应的寄存器的标志位 , 判断是哪个中断响应 , 然后判断完毕之后进行清除 , 并将中断加入到底半部的中断队列中 。 底半部承担了中断90%的任务 , 相对来讲比较耗时 , 并且可以被更高级的中断打断 。 这样设计不仅可以响应更多的中断 , 而且防止内核block更多的线程 。

结尾总而言之 , 中断的设计不仅让我们的系统更加完善而且让我们的设备更加人性化 , 更加适应不同的应用场景 。


    推荐阅读