当前位置: 技术问答>linux和unix
Linux中断
来源: 互联网 发布时间:2016-08-25
本文导语: Linux中断处理分上半部和下半部,上半部就是中断处理程序,而下半部的实现有很多种,包括softirqs,tasklet等 在下半部中仍然处于中断上下文,也就是不是以进程的形式来执行下半部么??? 而下半部又会被中断抢占...
Linux中断处理分上半部和下半部,上半部就是中断处理程序,而下半部的实现有很多种,包括softirqs,tasklet等
在下半部中仍然处于中断上下文,也就是不是以进程的形式来执行下半部么???
而下半部又会被中断抢占,如果不是以进程形式实现,那被抢占后无法执行原先被打断的下半部了么???
不解
望赐教,谢谢
在下半部中仍然处于中断上下文,也就是不是以进程的形式来执行下半部么???
而下半部又会被中断抢占,如果不是以进程形式实现,那被抢占后无法执行原先被打断的下半部了么???
不解
望赐教,谢谢
|
这个需要进行相当的处理,保存上下文环境,这是必须,这样才能在进行中断返回时无缝地执行。也就在保存当前PC和可能被破坏的寄存器的内容,一般应用栈来进行保存。
其实你说的这就是所谓的中断嵌套,当高优先级中断执行完后,一般会安排最后几条语言来从栈中恢复低优先级的中断的断点。
用ARM来说说吧,当有中断来说,需要进行保存CPSR的值到SPSR,并器处理相关可能要破坏的寄存器 。当进行中断返回时,需要从SPSR_中恢复CPSR,同时需要将LR中的值经过一定的处理再恢复给PC,
一般IRQ,FIQ的中断返回PC的恢复为 SUBS PC, LR , #4
所以在进行移植操作系统时需要修改与处理器相关的地方。其中包括ISR的书写。
|
下半部就是中断功能处理后的一些系统收尾动作了。所以可以被打断。(据楼主意思估计)打断了肯定可以重新接上的。
|
Linux中断之所以分为上半部分与下半部分,这是出于中断响应的速来考虑的。上半部不能可以被中断,所以,只把需要立处理的事件(实时性要求严格的事件)放在上半部分来进行处理,而下半部分所进行处理的事件对实时性要求不是那么严格,在一定的延时范围内可以接受,所以把这类事件放在下半部分来处理。这样做在保证中断响应时间的前提下同时也对实时性不同的事件都得到可以接受的处理。
总的一句说,中断分为上、下两部分,是为了中断响应时间。
总的一句说,中断分为上、下两部分,是为了中断响应时间。
|
1 是的
2 可以
2 可以
|
说的是中断重入吧 如果是,那么可能就直接跳过下半部分 而直接回到进程
|
1、tasklet是在中断上下文中执行的 工作队列是在进程上下问中执行的
2、都可以被中断抢占,因为都是原子态的
个人见解 请高手斧正
2、都可以被中断抢占,因为都是原子态的
个人见解 请高手斧正