linux中断总结
中断分为上半部和下半部,
上半部为硬中断处理,主要是为了处理一些对时间要求很高的数据,然后将剩下繁琐(需要很多时间)的工作交给下半部。
下半部:软中断,tasklet和工作队列。
硬中断:中断电信号发送到中断控制器(将多路中断管线,采用复用技术只通过一个管线与处理器通信)的输入引脚中,中断控制器将信号发送到处理器,处理器进而处理跳转到中断处理函数处理中断。
下半部:
软中断:/kernel/softirq.c中定义了一个32的数组储存中断,执行的时候会依次遍历并执行,所以index低的软中断优先级更高
待处理的软中断会在一下情况后被执行
1. 从一个硬中断代码返回时。
2.在ksoftirqd内核线程中。
3. 在那些显式检查和执行处理的软中断代码中,如网络子系统中。
tasklet:是由软中断实现的,如果能用tasklet解决,就不要用软中断浪费资源。有俩种类型,HI_SOFTIRQ和TASKLET_SOFTIRQ,前者的软中断优先级比后者的高。tasklet中的任务有一个链表来存储。
工作队列:工作队列允许重新调度甚至是休眠,工作队列子系统是一个用于创建内核线程的接口,通过它创建的进程执行由内核其它部分分排到队列里的任务。工作队列可以让你的驱动程序创建一个专门的内核线程来执行这些工作,不过也可以使用工作队列缺省提供的内核线程。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」