文档章节

软中断,tasklet和工作队列的区别与联系

z
 zsaniu
发布于 2017/05/16 11:21
字数 491
阅读 7
收藏 0
点赞 0
评论 0

为了让中断处理运行的快,同时要完成相应的全部工作。根据具体的内容将中断分为两个部分:上半部分(中断处理程序)和下半部分(推后处理程序)。上半部分需要立即执行,并且有严格的时间限制,这些工作是在所有中断被禁止的情况下完成的,剩余部分工作推迟到下半部分。
下半部分的任务就是执行与中断处理密切相关但中断处理程序本身不执行的工作。在Linux2.6的内核中存在三种不同形式的下半部实现机制:软中断,tasklet和工作队列。
下面将比较三种机制的差别与联系。
软中断: 1、软中断是在编译期间静态分配的。
         2、最多可以有32个软中断。
         3、软中断不会抢占另外一个软中断,唯一可以抢占软中断的是中断处理程序。
         4、可以并发运行在多个CPU上(即使同一类型的也可以)。所以软中断必须设计为可重入的函数(允许多个CPU同时操作),
            因此也需要使用自旋锁来保护其数据结构。
         5、目前只有两个子系直接使用软中断:网络和SCSI。
         6、执行时间有:从硬件中断代码返回时、在ksoftirqd内核线程中和某些显示检查并执行软中断的代码中。
tasklet: 1、tasklet是使用两类软中断实现的:HI_SOFTIRQ和TASKLET_SOFTIRQ。
          2、可以动态增加减少,没有数量限制。
          3、同一类tasklet不能并发执行。
          4、不同类型可以并发执行。
          5、大部分情况使用tasklet。
工作队列: 1、由内核线程去执行,换句话说总在进程上下文执行。
          2、可以睡眠,阻塞。

本文转载自:http://sunxinrui.blog.sohu.com/120659923.html

共有 人打赏支持
z
粉丝 0
博文 18
码字总数 20723
作品 0
深圳
程序员
linux内核设计与实现 —— 中断和中断处理(第7章,第8章)

中断和中断处理 中断的目的:让处理器最快地响应外部硬件的请求。 中断本质上是一种特殊的电信号,由硬件设备发向处理器,处理器反映到操作系统中,最后由操作系统处理这个中断电信号。 不同...

u010503121
05/29
0
0
linux中断处理原理分析

Tasklet作为一种新机制,显然可以承担更多的优点。正好这时候SMP越来越火了,因此又在tasklet中加入了SMP机制,保证同种中断只能在一个cpu上执行。在软中断时代,显然没有这种考虑。因此同一...

石沉大海
2016/08/27
10
0
高级字符设备驱动--中断下半部机制之tasklet(一)

综述 Linux把中断处理例程分两部分: 上半分:实际响应中断的例程。 下半分:被顶部分调用,通过开中断的方式进行。 两种机制实现: Tasklet 工作队列work queue 上半部的功能是"登记中断",...

长平狐
2012/09/03
94
0
Linux中断(interrupt)子系统之五:软中断(softIRQ)

软中断(softIRQ)是内核提供的一种延迟执行机制,它完全由软件触发,虽然说是延迟机制,实际上,在大多数情况下,它与普通进程相比,能得到更快的响应时间。软中断也是其他一些内核机制的基...

nothingfinal
2012/06/27
0
0
[arm 驱动]linux内核驱动之中断下半部编程

本文部分参考华清远见文档 中断上半部要求执行时间间隔段,所以往往将处理时间较长的代码放在中断下半部来处理 中断下半部的应用:网卡驱动上半部初始化网卡驱动等短时间的事件,下半部收发数...

lilin9105
2014/05/29
0
0
linux UART串口驱动开发文档

内容简介: 介绍了Linux下的串口驱动的设计层次及接口, 并指出串口与TTY终端之间的关联层次(串口可作TTY终端使用), 以及Linux下的中断处理机制/中断共享机制, 还有串口缓冲机制当中涉及的软中...

jtihj
2009/12/19
0
0
Linux Kernel Development——中断

中断的上半部和下半部 中断是系统硬件与处理器通信的一种机制。当硬件设备发生中断的时候,内核会被打断,并执行中断对应的处理函数。在执行中断服务程序的时候,内核处于中断上下文。此时,...

文艺小青年
2017/06/08
0
0
linux UART串口驱动开发文档

linux UART串口驱动开发文档 3人收藏此文章, 收藏此文章 发表于2年前 , 已有2038次阅读 共0个评论3人收藏此文章 内容简介: 介绍了Linux下的串口驱动的设计层次及接口, 并指出串口与TTY终端之...

nothingfinal
2012/02/07
0
0
高级字符设备驱动--中断下半部机制之workqueue(二)

工作队列workqueue 工作队列(work queue)是另外一种将中断的部分工作推后的一种方式,它可以实现一些tasklet不能实现的工作,比如工作队列机制可以睡眠。这种差异的本质原因是,在工作队列...

长平狐
2012/09/03
255
0
深入浅出 Linux设备驱动中断处理介绍

request_irq()的原型为: void (handler)(int irq, void devid, struct ptregs *regs),unsigned long irqflags,const char * devname,void *dev_id); irq是要申请的硬件中断号; handler是向......

JavaGG
2009/05/07
404
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

tomcat 学习笔记之 Session管理

1、Catalina 通过一个 Session 管理器的组件来管理建立的Session 对象 该组件由 org.apache.catalina.Manager 接口表示 Session 管理器必须与一个 Context 关联 Session 管理器负责,创建、更...

职业搬砖20年
4分钟前
0
0
jquery获取input框的几种方式

//如何用jquery获取<input id="test" name="test" type="text"/>中输入的值?$(" #test ").val()$(" input[ name='test' ] ").val()$(" input[ type='text' ] ").val()$(" input[ ......

gulf
7分钟前
0
0
gradle的环境变量的配置

gradle的环境变量的配置 1.首先下载jdk,并且配置jdk的环境变量. 2.找到自己AS安装gradle的目录 我自己的目录为:F:\Android Studio3.1.3\gradle\gradle-4.4 创建环境变量:GRADLE_PATH: F:\A...

android-key
13分钟前
0
0
saltstack配置apache

1.相关配置 #vim /etc/salt/master //打开如下内容的注释 file_roots: base: - /srv/salt #mkdir /srv/salt #vim /srv/salt/top.sls base: 'slaver.test.com': - apache 注意:若换成 '*',则......

硅谷课堂
13分钟前
0
0
Nested enum types are implicitly static

.Nested enum types are implicitly static So there's no need to declare them static explicitly....

Yixin_Nemo
14分钟前
0
0
xlsxwriter 常用excel格式

官方文档:xlsxwriter 官方文档 微博只对常用的方法做了总结和coding,详细方法请参考官方文档 常规写入数据: 写入字符串write_string() import xlsxwriterworkbook = xlsxwriter.Workb...

白木日勿
14分钟前
0
0
TeX

Ito LaTeX是一类用于编辑和排版的软件,用于生成PDF文档。 LaTeX编辑和排版的核心思想在于,通过\section和\paragraph等语句,规定了每一句话在文章中所从属的层次,从而极大方便了对各个层次...

E-C-Ares
17分钟前
0
0
nodejs调用webservice接口

刚接触花了一天时间去查找资料,网上资料也是够了,很多都试了不行,最后看了还是那么简单 主要是了node-soap node-soap-ntlm soap-ntlm-2,这几个试了都有缺陷, 1 首先安装soap npm instal...

lovelan1314
17分钟前
0
0
SUSE Linux 将被 EQT 收购

SUSE再次易主 Micro Focus 宣布将其一大部分业务出售给瑞典私人股本集团殷拓(EQT),所得的一部分收益将用来减轻债务,其余部分将返给股东。EQT 是一家专注于开发领域的投资公司,在软件行业拥...

linux-tao
25分钟前
0
0
Elastic-Job定时任务

用Elastic-Job可解决分布式重复执行问题 如果业务工程采用集群化的部署,可能会多次重复执行定时任务而导致系统的业务逻辑错误,并产生系统故障。 job.properties simple.id=recommendJobs...

lsjlgo
27分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部