中断上半部,下半部/软中断/tasklet/工作队列

本文详细介绍了Linux中断处理中的上半部和下半部概念,探讨了引入下半部的原因和作用。重点讲解了软中断、tasklet和工作队列三种下半部机制,包括它们的特性、区别及适用场景,帮助读者理解Linux内核中断处理框架。
摘要由CSDN通过智能技术生成

在阅读本文之前,可以先行阅读:中断上下文、进程上下文

本文回答了为什么引入中断上部分、下部分以及上半部和下半部各自的分工;同时重点分析了下半部的三种机制及tasklet和工作队列的使用模块,能对整个框架有一个清晰的认识。

1. 为什么引入中断上半部、下半部

(1)为了解决一个矛盾体:又想中断处理程序运行快,又想中断处理程序完成的工作量多。
(2)中断处理程序本身局限性,使得它只能完成整个中断处理流程的上半部分。

这些局限包括:
①中断处理程序以异步方式执行,可能打断其他重要代码(包括其他中断程序)的执行,故中断处理程序执行速度越快越好。
②当中断处理程序执行时,如其没有设置了中断屏蔽,同级的其他中断被屏蔽;设置后,其他中断都会屏蔽,硬件与操作系统无法通信。故其速度越快越好。
③中断处理程序往往需要对硬件操作,所以它们通常要求速度越快越好。
④中断处理程序在程序上下文运行,所以不能阻塞。这限制了它们所做的事情。
引入中断上半部、下半部之后,称为“顶半部”的部分,是实际响应中断的例程,也就是用request_irq注册的中断例程;而所谓”底半部”是一个被顶半部调度,并在稍后安全的时间内执行的例程。

2.中断上半部、下半部的比较

上(顶)半部[中断处理程序] 下(底)半部[推后处理程序]
完成尽可能少的紧急硬件操作 完成延缓的耗时操作,中断事情的大部分任务
关中断 可以开中断,允许中断请求
内核立即运行 稍后完成

3.怎样区分上半部、下半部工作

没有严格规则,以下可供借鉴:
①任务对时间敏感,上半部;
②任务和硬件相关,上半部;
③任务不想被中断打断,上半部;
④其他所有任务,下半部。

4.下半部机制的引入

顶半部用于完成尽量少的比较紧急的功能,它往往只是简单地读取寄存器中的中断状态,并在清除中断标志后就进行”登记中断”的工作。”登记中断”意味着将底半部处理程序挂到设备的底半部执行队列中去。这样,顶半部执行的速度
  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值