位置: IT常识 - 正文

linux中断的上半部和下半部详解(linux中断原理)

编辑:rootadmin
与Linux中断息息相关的一个重要概念是Linux中断分为两个半部:上半部(tophalf)和下半部(bottom half)。今天小编将为大家带来的是linux中断的上半部和下半部详解!希望对大家会有帮... 17-03-21

推荐整理分享linux中断的上半部和下半部详解(linux中断原理),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:linux中断系统,linux中断处理流程,linux中断类型,linux中断系统,linux中断系统,linux中断处理流程,linux中断系统,linux中断的概念,内容如对您有帮助,希望把文章链接给更多的朋友!

与Linux中断息息相关的一个重要概念是Linux中断分为两个半部:上半部(tophalf)和下半部(bottom half)。上半部的功能是"登记中断",当一个中断发生时,它进行相应地硬件读写后就把中断例程的下半部挂到该设备的下半部执行队列中去。因此,上半部执行的速度就会很快,可以服务更多的中断请求。但是,仅有"登记中断"是远远不够的,因为中断的事件可能很复杂。因此,Linux引入了一个下半部,来完成中断事件的绝大多数使命。下半部和上半部最大的不同是下半部是可中断的,而上半部是不可中断的,下半部几乎做了中断处理程序所有的事情,而且可以被新的中断打断!下半部则相对来说并不是非常紧急的,通常还是比较耗时的,因此由系统自行安排运行时机,不在中断服务上下文中执行。

Linux实现下半部的机制主要有tasklet和工作队列。

Tasklet基于Linux softirq,其使用相当简单,我们只需要定义tasklet及其处理函数并将二者关联:

void my_tasklet_func(unsigned long); //定义一个处理函数:DECLARE_TASKLET(my_tasklet,my_tasklet_func,data); //定义一个tasklet结构my_tasklet,与my_tasklet_func(data)函数相关联

然后,在需要调度tasklet的时候引用一个简单的API就能使系统在适当的时候进行调度运行:

tasklet_schedule(&my_tasklet);

此外,Linux还提供了另外一些其它的控制tasklet调度与运行的API:

DECLARE_TASKLET_DISABLED(name,function,data); //与DECLARE_TASKLET类似,但等待tasklet被使能tasklet_enable(struct tasklet_struct *); //使能tasklet tasklet_disble(struct tasklet_struct *); //禁用tasklet tasklet_init(struct tasklet_struct *,void (*func)(unsigned long),unsigned long); //类似DECLARE_TASKLET() tasklet_kill(struct tasklet_struct *); // 清除指定tasklet的可调度位,即不允许调度该tasklet

我们先来看一个tasklet的运行实例,这个实例没有任何实际意义,仅仅为了演示。它的功能是:在globalvar被写入一次后,就调度一个tasklet,函数中输出"tasklet is executing":

#include … //定义与绑定tasklet函数void test_tasklet_action(unsigned long t);DECLARE_TASKLET(test_tasklet, test_tasklet_action, 0);void test_tasklet_action(unsigned long t){printk("tasklet is executing\n");}…ssize_t globalvar_write(struct file *filp, const char *buf, size_t len, loff_t *off){…if (copy_from_user(&global_var, buf, sizeof(int))){return-EFAULT;}//调度tasklet执行tasklet_schedule(&test_tasklet);return sizeof(int);}

下半部分的任务就是执行与中断处理密切相关但中断处理程序本身不执行的工作。在Linux2.6的内核中存在三种不同形式的下半部实现机制:软中断,tasklet和工作队列。

下面将比较三种机制的差别与联系。

软中断:

1、软中断是在编译期间静态分配的。

linux中断的上半部和下半部详解(linux中断原理)

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、可以睡眠,阻塞。

本文链接地址:https://www.jiuchutong.com/zhishi/283127.html 转载请保留说明!

上一篇:win10商店错误代码0x80D02017怎么办(win10商店发生了错误请稍后再试)

下一篇:mc.exe - mc是什么进程文件 有什么作用(mcshield.exe是什么进程)

  • vivox80怎么关闭微信美颜(vivox80怎么关闭5g)

    vivox80怎么关闭微信美颜(vivox80怎么关闭5g)

  • OPPO Ace2有没有指纹识别呢(oppoace指纹解锁在哪里)

    OPPO Ace2有没有指纹识别呢(oppoace指纹解锁在哪里)

  • 视频格式版权限制无法播放怎么办(视频格式版权限制无法播放)

    视频格式版权限制无法播放怎么办(视频格式版权限制无法播放)

  • qq能通过通讯录发信息吗(qq通过通讯录添加好友对方知道吗)

    qq能通过通讯录发信息吗(qq通过通讯录添加好友对方知道吗)

  • 笔记本电脑摄像头像素怎么调清晰(笔记本电脑摄像头打不开怎么办)

    笔记本电脑摄像头像素怎么调清晰(笔记本电脑摄像头打不开怎么办)

  • ios13.5发布时间(ios13发布时间表)

    ios13.5发布时间(ios13发布时间表)

  • picaloo华为什么型号(pic-tloo华为什么型号)

    picaloo华为什么型号(pic-tloo华为什么型号)

  • 打10086能帮忙定位手机吗(打10086可以定位自己的手机号码吗)

    打10086能帮忙定位手机吗(打10086可以定位自己的手机号码吗)

  • 手机膜有必要买防蓝光的吗(手机膜有必要买蓝光的吗)

    手机膜有必要买防蓝光的吗(手机膜有必要买蓝光的吗)

  • 淘宝评论可以删除重新评论吗(淘宝评论可以删视频吗)

    淘宝评论可以删除重新评论吗(淘宝评论可以删视频吗)

  • 帮人家微信解封会有什么影响(帮人家微信解封安全吗)

    帮人家微信解封会有什么影响(帮人家微信解封安全吗)

  • 无线网一会卡一会流畅(无线网一会卡一会不卡电脑正常)

    无线网一会卡一会流畅(无线网一会卡一会不卡电脑正常)

  • 苹果手机删除照片怎么全选(苹果手机删除照片能恢复吗)

    苹果手机删除照片怎么全选(苹果手机删除照片能恢复吗)

  • win10无法启动服务(win10无法启动服务原因可能是已被禁用)

    win10无法启动服务(win10无法启动服务原因可能是已被禁用)

  • 华为ipad可以插u盘吗(华为平板支持外接u盘吗)

    华为ipad可以插u盘吗(华为平板支持外接u盘吗)

  • internet的接入方式和特点(internet的接入方法)

    internet的接入方式和特点(internet的接入方法)

  • 淘宝的月销量是怎么算的(淘宝的月销量是一个月的还是所有的)

    淘宝的月销量是怎么算的(淘宝的月销量是一个月的还是所有的)

  • ps怎么调照片清晰度(ps怎么调清楚图片)

    ps怎么调照片清晰度(ps怎么调清楚图片)

  • 安卓抬起唤醒怎么关闭(手机设置里抬起唤醒是什么意思)

    安卓抬起唤醒怎么关闭(手机设置里抬起唤醒是什么意思)

  • 红米note8怎么设置网速(红米note8怎么设置陌生号码禁止打入)

    红米note8怎么设置网速(红米note8怎么设置陌生号码禁止打入)

  • 11pro max双卡怎么插(11pro max双卡怎么切换网络)

    11pro max双卡怎么插(11pro max双卡怎么切换网络)

  • 手机流量限流怎么恢复(手机流量限流怎么收到验证码)

    手机流量限流怎么恢复(手机流量限流怎么收到验证码)

  • 手机淘宝评价取消隐藏(手机淘宝上如果评价了,怎么取消?)

    手机淘宝评价取消隐藏(手机淘宝上如果评价了,怎么取消?)

  • vivox27呼吸灯在哪(vivox20呼吸灯在哪)

    vivox27呼吸灯在哪(vivox20呼吸灯在哪)

  • 视网膜显示屏的好处(视网膜 显示屏)

    视网膜显示屏的好处(视网膜 显示屏)

  • 学习CSS3,模拟春雪漫天飘的动画效果(css3的模块结构和应用)

    学习CSS3,模拟春雪漫天飘的动画效果(css3的模块结构和应用)

  • 一次性购入固定资产投资收益
  • acca b/f
  • 金蝶专业版怎么增加一级科目
  • 购进货物的发票是外来凭证吗
  • 注销实收资本账务处理
  • 国外客户付款方式
  • 注册了公司没有经营会怎么样
  • 城市维护建设税是什么意思
  • 过期的食品退回去厂里怎么处理
  • 应收账款坏账计提政策
  • 生产的产品不合格作废会计分录
  • 收回赔款会计分录
  • 装修公司在装修完后增加费用
  • 退税显示未完成怎么处理
  • 代开发票有哪些问题需要知道的?
  • 公司业务招待费占比
  • 如何防止虚开发票 等舞弊行为?
  • 预收款转营业外收入要交增值税吗
  • 环境保护税法是什么意思
  • 专业服务业政策
  • 社保基数填错了 可以退款吗
  • 新版edge浏览器设置背景图片
  • 住房公积金有什么用途和价值
  • 工伤认定方法有几种方式呢
  • 劳务公司的账务怎么做账
  • 电子专用发票怎么上传
  • 跨年度暂估成本
  • phpswitch语句成绩判断
  • PHP:Memcached::appendByKey()的用法_Memcached类
  • 中小企业发展专项资金
  • 电子税务局增值税申报流程
  • 营改增抵减的销项税发票要抵扣吗
  • 公司年终奖怎么入账
  • web前端视频教程全套
  • javaweb项目简介
  • 命令行修改mac地址
  • 企业应收账款的规模受哪些因素的影响?( )
  • 会计信息不采集有什么后果
  • 帝国cms文件夹介绍
  • 苹果mac安装
  • 水电费专用发票模板
  • 企业应缴纳税款
  • 固定资产清理包括什么会计科目
  • 企业按行业划分可划分为哪些
  • 发放工资的转账支票收款人
  • 免税企业免征增值税条件
  • mysql8编译安装
  • 公司账户取出来要交税吗
  • 委托加工物资的消费税
  • 高速过路费发票图片
  • 税务自查补缴税款怎么办
  • 查账补缴的税的账怎么做
  • 管理费用算产品成本吗
  • 新政府会计制度固定资产核算
  • 出纳的现金日记账表格怎么做
  • 企业营运能力分析
  • 会计账薄按其外形特征不同可以分为
  • windows自带的几个软件
  • linux top命令详解内存过高查询
  • win8.1系统HDMI高清线连接电视后没有声音的原因及解决办法
  • win10 系统桌面
  • 升级win8.1后vpn出现错误720该怎么办?
  • zlib是什么意思
  • 详解linux中systemd命令的运行级别与其常见应用
  • win7系统出现蓝屏
  • 怎么从win8装回win7
  • js实现下拉框联动
  • 批处理常用命令总结
  • 在指定目录查找的文件
  • unity向量的规范化
  • 使用简单工厂模式的好处
  • [置顶] 快来貌相则不达很好skmzx5
  • 如何在js中实现输入
  • Javascript字符串对象函数
  • 监听页面滚动事件
  • 大连个体营业执照怎么办
  • 保险公司代收2.8万
  • 股权转让怎么计算个人所得税
  • 直系亲属房产买卖过户税费
  • 百旺金赋天津客服电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设