zoukankan      html  css  js  c++  java
  • 软中断小结

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

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

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

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

  • 相关阅读:
    Android 4.2开发环境搭建
    ManagementFactory cannot be resolved
    html css鼠标样式,鼠标形状
    开普勒三定律
    Apache CXF简介
    C++学习基础八——重载输入和输出操作符
    C++学习基础七——深复制与浅复制
    C++学习基础六——复制构造函数和赋值操作符
    C++学习基础五之函数参数——形参
    C++学习基础四——顺序容器和关联容器
  • 原文地址:https://www.cnblogs.com/wangfengju/p/6173180.html
Copyright © 2011-2022 走看看