• 软中断小结


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

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

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

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

  • 相关阅读:
    Ubuntu 系统装机指南
    java读取配置文件属性
    反转单链表 递归与非递归
    迟到的2013年终总结
    2014年阅读资料总结
    程序人生的四个象限和两条主线
    查找单链表中倒数第k个结点
    技术人员应真正学会的第二课程
    Linux“七大蠢”收录
    postman测试方法,出现400错误码
  • 原文地址:https://www.cnblogs.com/wangfengju/p/6173180.html
Copyright © 2020-2023  润新知