• 软中断小结


    内核处理的任务中有的不是那么紧迫的,在必要的时间可以把它们延迟一段时间,这就是软中断形成的背景。这对于哪些期望它们的中断能在几毫秒内得到处理的“急迫”应用来说是非常重要的。由此,硬中断负责处理紧急的任务,软中断负责处理不是那么紧迫的任务。

    Linux 2.6内核提供了两种非紧迫、可中断函数:所谓的延迟函数(包括软中断和tasklets)和通过工作队列来执行的函数。

    软中断和tasklet有密切的关系,tasklet是在软中断之上实现。事实上,出现在内核代码中的术语“软中断(softirq)常常表示可延迟函数的所有种类”。另外一种被广泛使用的术语是“中断上下文”,表示内核当前正在执行一个中断处理程序或一个可延迟的函数。

    软中断的分配是静态的(即在编译时定义),而tasklet的分配和初始化可以在运行时进行(例如,安装一个内核模块时)。软中断(即便是同一种类型的软中断)可以并发地运行在多个CPU上。因此,软中断是可重入函数而且必须明确地使用自旋锁保护其数据结构。tasklet不必担心这个问题,因为内核对tasklet的执行进行了更加严格的控制。相同类型的tasklet总是串行地执行,换句话就是,不能在两个CPU上同时运行相同类型的tasklet。但是,类型不同的tasklet可以在几个不同的CPU上并发执行。tasklet的串行化使tasklet函数不必是可重入的。

  • 相关阅读:
    黑盒测试实践——每日例会记录(一)
    《高级软件测试》—如何计算团队成员贡献分
    TestLink学习——第一周使用小结
    BugkuCTF 你必须让他停下
    BugkuCTF 域名解析
    BugkuCTF web3
    BugkuCTF 矛盾
    BugkuCTF web基础$_POST
    BugkuCTF web基础$_GET
    BugkuCTF 计算器
  • 原文地址:https://www.cnblogs.com/wangfengju/p/6173180.html
Copyright © 2020-2023  润新知