Softirqs and Tasklets

原文:Softirqs and Tasklets
在内核执行的任务中,有些任务不是关键的。中断处理程序的中断服务例程是序列化的,在对应的中断处理程序终止之前,不应该发生中断。相反,可延迟进程可以在启用所有中断的情况下执行。中断它们(可延迟进程)的工作,有助于保持较小的内核响应时间。对于许多时间要求严格的应用程序来说,这是一个非常重要的属性,因为它们希望中断请求在几毫秒内得到处理。

Linux 2.6通过使用两种非紧急可中断的内核函数来应对这样的挑战:所谓的可延迟函数(softirqs和tasklet),以及通过某些工作队列执行的函数(我们将在本章后面的“工作队列”一节中描述它们)。

软中断和tasklet是严格相关的,因为tasklet是基于软中断实现的。事实上,出现在内核源代码中的“软中断”(softirq)一词,通常表示这两种可延迟函数。另一个广泛使用的术语是中断上下文(interrupt context):它指内核当前正在执行的中断处理程序或可延迟函数。

软中断是静态分配的(即在编译时定义),而tasklet也可以在运行时分配和初始化(例如,在加载内核模块时)。

  • 软中断可以在几个cpu上并发运行,即使它们的类型相同。
  • 软中断是可重入的函数,必须显式地用自旋锁保护其数据结构。
  • 相同类型的tasklet总是序列化的:换句话说,相同类型的tasklet不能同时由两个cpu执行。
  • 不同类型的tasklet可以在几个cpu上并发执行。序列化tasklet简化了设备驱动程序开发人员的工作,因为tasklet函数不需要可重入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值