Linux内核设计与实现 第八章

本文探讨了操作系统中中断处理程序的下半部概念,介绍了下半部与上半部的区别及其实现方式,包括软中断、tasklet和工作队列等机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下半部和推后执行的工作

在第七章中我们讨论了中断处理程序的上半部,在操作系统响应中断时,存在着一些限制,比如中断处理可能打断其他一些重要代码,或者执行中断时需要屏蔽其他中断。这些限制决定上半部的执行过程需要越快越好。

下半部

在划分上半部和下半部的工作时,尽管没有严格的规则,但是往往我们可以借鉴一些提示:(1)对时间任务非常敏感的任务,放在中断处理程序中执行(2)和硬件相关的任务,放在中断处理程序中执行(3)不能被其他中断打断的任务,放在中断处理程序中执行(4)剩下的任务考虑放在下半部执行。

下半部环境:第七章中我们了解到实现中断处理程序的办法只有一种,但是在本章中我们可以发现下半部有许多实现方法。

软中断

实现:

一组静态定义的下半部接口(编译期间静态分配),可以在所有的处理器上同时执行。最多有32个软中断,但是目前只用到9个。软中断结构如下:

处理程序action

tasklet

是一种基于软中断的实现机制,两个不同类型的可以在不同的处理器上执行,但是相同类型的tasklet不能同时执行。task相对软中断来说,性能较差,但是易用性高。

工作队列

是任务队列的替代品。将任务交由一个内核线程去执行。

内核定时器:用于把下半部推迟到指定时间的机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值