- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux中断机制
Linux中断机制(2)--软中断 梁 冰 北大网络分布式实验室 2004.11.15 1.软中断简介 回忆前面的知识 硬中断最后的处理do_IRQ()函数中,最后的一个处理是什么?do_softirq()! 为什么要软中断? 硬中断中是需要尽快响应和处理的,不能将太多时间放在中断事件的处理上,否则会丢失掉另外的相同类型的中断 一些中断需要处理的工作不是那么急迫 硬件中断打断CPU,软中断打断内核序列 2.软中断分类 Linux2.4.*系列有三种可延迟中断内核函数: 软中断(softirq) 小任务(tasklet) 下半部分(bottom half) 三者之间关系 Tasklet用softirq实现,bottom half用tasklet实现 3 软中断,tasklet及下半部 软中断 非动态分配,需要内核编译 同类软中断可以并发运行在几个CPU上 Tasklet 可以编程时动态分配,内核运行时,模块载入 不同种类的taskelt可以并发在接个CPU上运行,同种的不行 下半部分 非动态分配,需要内核编译 下半部分不能并发在几个CPU上运行 注意 任何可延迟函数都不能与其他的可延迟函数在同一个CPU上交错执行。 3.1 可延迟函数的一般操作 初始化(Initialization) 定义一个新的可延迟函数 激活(Activation) 标记一个可执行函数成为pending态 激活可以在任何时候进行(中断处理中也可) 屏蔽(Masking) 有选择地屏蔽一个可延迟函数,使它即使被激活也不会被内核执行 执行(Execution) 执行一个可延迟函数和其他任何的可延迟函数 给定CPU激活的可延迟函数一般在同一CPU上运行 4 可延迟函数---软中断详解 在2.4.*内核中,定义了4种软中断 低下标意味着高优先级,软中断函数从下标0开始执行 4.1 软中断主要数据结构 Softirq_vec数组 由softirq_action结构体组成的数组,默认内核只有前4项有用。 struct softirq_action { void (*action)(struct softirq_action *); void *data; }; 4.1 软中断主要数据结构 Irq_stat 是irq_cpustat_t数组,每一个CPU一个。其实在硬中断处理部分已经使用了其中的许多数据项了。 typedef struct { unsigned int __softirq_pending; unsigned int __local_irq_count; unsigned int __local_bh_count; unsigned int __syscall_count; struct task_struct * __ksoftirqd_task; /* waitqueue is too large */ unsigned int __nmi_count; /* arch dependent */ } ____cacheline_aligned irq_cpustat_t; 4.1 软中断数据结构 Irq_cpustat_t __softirq_pending字段存放一组标志表示挂起的软中断 __local_bh_count字段,禁止软中断的执行,为0则软中断被激活,为负数则被禁止 __ksoftirq_task字段,存放ksoftirqd_CPUn内核线程的进程描述符,这种内核线程致力于可延迟函数的执行 4.2 软中断的相关调用 初始化 open_softirq()函数处理软中断的初始化,三个函数分别是软中断下标,要执行的软中断的 激活 __cpu_raise_softirq宏激活 cup_raise_softirq函数激活,同时唤醒ksoftirq_CPUn内核线程 4.2 软中断的相关调用 屏蔽 __local_bh_count为0时打开软中断,为负(正?)数时禁止 执行 检查软中断的挂起是在内核代码的几个点上进行的。且挂起点的个数和位置随内核版本的变化而改变。以下以2.4.*内核为例: 当local_bh_enable宏重新接活软中断时 当do_IRQ完成时处理I/O的中断时 当smp_apic_timer_interrupt函数完成了处理一个本地时钟中断时 一个特定的ksoftirq_CPU内核线程被唤醒时 当在网络接口卡上获取一个数据包时 4.2 软中断的相关调用 关键代码: asmlinkage void do_softirq() { int cpu = smp_processor_id(); __u32 pending; unsigned long flags; __u32 mask;
您可能关注的文档
- Electromagnetics电磁学-物理与电子科学学院.PDF
- Einstein的革命性思维-西安电子科技大学电子工程学院.PDF
- ENSP模拟器介绍.DOC
- FD86T导压型液位变送器-淄博西创.DOC
- FHZHJSZ0178水质有机磷农药的测定毛细柱气相色谱法.PDF
- FHZHJSZ0156水质可吸附有机卤素的测定离子色谱法-仪器信息网.PDF
- EPROM的存储单元电路.PPT
- ff[l2]发明专利申馆公布说明书-清华大学深圳研究生院.PDF
- FIN-AR应收上机模拟试题(ANS).DOC
- Form研究方案模板-仁济医院.DOC
- 《2025年激光设备应用:3D扫描与激光脱毛设备技术趋势》.docx
- 《2025年锂离子电池回收利用政策法规解读与展望》.docx
- 《2025年服装品牌社群运营模式与用户共创机制设计》.docx
- 《2025年虚拟电厂聚合技术与电力市场商业化监管政策分析报告》.docx
- 2025年AI大模型开源生态产业协同政策法规分析.docx
- 2025年医疗影像设备国产化推动精密仪器技术升级.docx
- 2025年律师事务所刑事辩护业务专业化细分市场研究.docx
- 《2025年人力资源外包政策影响:劳动法规变化与中小企业外包成本》.docx
- 2025年抽水蓄能新型储能技术专利分析.docx
- 2025年地方文化节庆活动创新实践与文旅融合经济效益评估.docx
最近下载
- 2020年第37届高中物理竞赛力学专题练习39题(带详解).docx VIP
- 全文可编辑-东华科技-市场前景及投资研究报告-出海远航.ppt VIP
- 2018CPXY-J406 ZJF免拆模板现浇混凝土复合保温系统.docx VIP
- 《富致秘录》中源线建仓法(陈雅山 著 王明森 点校).pdf VIP
- 2025年29490-2023企业知识产权合规管理体系内部审核检查表 .pdf
- 华东师大版九年级数学上册期末测试卷(4套)(有答案).pdf VIP
- 2024CPXY-S58 HX雨水控制及利用设施选用与安装.docx VIP
- IT专用模板-XX部门软件工程师月度绩效考核表.xls VIP
- 2024CPXY-J498 禹途石墨烯预制沟槽地暖系统.docx VIP
- 2025年湖南省怀化市中考英语试卷真题(含答案解析).docx
原创力文档


文档评论(0)