文档章节

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

z
 zsaniu
发布于 2017/05/16 11:21
字数 491
阅读 12
收藏 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
粉丝 1
博文 38
码字总数 20723
作品 0
深圳
程序员
私信 提问
linux内核设计与实现 —— 中断和中断处理(第7章,第8章)

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

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

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

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

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

长平狐
2012/09/03
135
0
关于软中断

到底什么是软中断,在提这个问题的时候你理解什么是中断了吗?我不准备在这里解释这些概念。同样的软中断,不同的操作系统实现是不一样的,为什么不一样,这是操作系统的总体设计理念决定的,...

晨曦之光
2012/04/10
329
0
Linux中断(interrupt)子系统之五:软中断(softIRQ)

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

nothingfinal
2012/06/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Why hash maps in Java 8 use binary tree instead of linked list?

Q: I recently came to know that in Java 8 hash maps uses binary tree instead of linked list and hash code is used as the branching factor.I understand that in case of high colli......

群星纪元
15分钟前
0
0
HanLP 自然语言处理 for nodejs

·支持中文分词(N-最短路分词、CRF分词、索引分词、用户自定义词典、词性标注),命名实体识别(中国人名、音译人名、日本人名、地名、实体机构名识别),关键词提取,自动摘要,短语提取,...

左手的倒影
16分钟前
0
0
SpringBoot基础知识

1.什么是Spring Boot? 多年来,随着新功能的增加,spring变得越来越复杂。只需访问https://spring.io/projects页面,我们就会看到可以在我们的应用程序中使用的所有Spring项目的不同功能。 ...

boonya
30分钟前
0
0
Fundebug微信小程序错误监控插件更新至1.1.0,新增test()与notifyHttpError()方法

摘要: 1.1.0新增fundebug.test()和fundebug.notifyHttpError()方法,同时大小压缩至15K。 Fundebug是专业的小程序BUG监控服务,可以第一时间为您捕获生存环境中小程序的异常、错误或者BUG,...

Fundebug
32分钟前
0
0
Linux运维常见的硬件及系统问题

一、服务器常见故障和现象 1、有关服务器无法启动的主要原因 : ①市电或电源线故障(断电或接触不良) ②电源或电源模组故障 ③内存故障(一般伴有报警声) ④CPU故障(一般也会有报警声) ⑤主板故...

寰宇01
34分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部