linux中断总结

中断分为上半部和下半部,

上半部为硬中断处理,主要是为了处理一些对时间要求很高的数据,然后将剩下繁琐(需要很多时间)的工作交给下半部。

下半部:软中断,tasklet和工作队列。

 

硬中断:中断电信号发送到中断控制器(将多路中断管线,采用复用技术只通过一个管线与处理器通信)的输入引脚中,中断控制器将信号发送到处理器,处理器进而处理跳转到中断处理函数处理中断。

 

下半部:

软中断:/kernel/softirq.c中定义了一个32的数组储存中断,执行的时候会依次遍历并执行,所以index低的软中断优先级更高

待处理的软中断会在一下情况后被执行

1. 从一个硬中断代码返回时。

2.在ksoftirqd内核线程中。

3. 在那些显式检查和执行处理的软中断代码中,如网络子系统中。

 

 

tasklet:是由软中断实现的,如果能用tasklet解决,就不要用软中断浪费资源。有俩种类型,HI_SOFTIRQ和TASKLET_SOFTIRQ,前者的软中断优先级比后者的高。tasklet中的任务有一个链表来存储。

 

工作队列:工作队列允许重新调度甚至是休眠,工作队列子系统是一个用于创建内核线程的接口,通过它创建的进程执行由内核其它部分分排到队列里的任务。工作队列可以让你的驱动程序创建一个专门的内核线程来执行这些工作,不过也可以使用工作队列缺省提供的内核线程。

 

posted @   woodx  阅读(44)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示