linux 内核 清中断,linux内核--中断和中断处理(一)
发布日期:2021-10-23 03:55:34 浏览次数:9 分类:技术文章

本文共 1341 字,大约阅读时间需要 4 分钟。

让硬件在需要的时候再向内核发出信号。这就是中断机制,先讨论中断,进而讨论内核如何使用所谓的中断处理函数处理对应的中断。

一、中断

1)中断

中断使得硬件得以发出通知给处理器。例如,在前几键盘的时候,键盘控制器会发出一个中断,通知操作系统有键按下。中断本质上时一种特殊的电信号,由硬件设备发向处理器。处理器收到中断后,会马上向操作系统反应此信号的到来,然后就由操作系统负责这些新到来的数据。硬件设备生产中断的时候并不考虑与处理器的时钟同步也就是说中断随时可以产生。因此,内核随时可能因为新到来的中断而被打断。

当接收到一个中断后,中断控制器会给处理器发送一个电信号。处理器一经检测到此信号,便中断自己的当前工作转而处理中断。此后,处理器会通知操作系统一经产生中断,这样,操作系统就可以对这个中断进行适当的处理了。

不同的设备对用不同的中断,每个中断通过一个唯一的数字标识。这些中断值通常称为中断请求(IRQ)。每个IRQ线都会被关联一个数值量。例如:IRQ 0是时钟中断,而IRQ 1是键盘中断。但并非所有的中断号都是这样严格定义的。对于链接在PCI总线上的设备而言,中断是动态分配的。而且其他费PC的体系结构也具有动态分配可用中断的特性。实际上,硬件发出中断就是为了引起内核的关注。

2)异常

异常与中断不同,它在产生时必须考虑与处理器时钟同步。实际上,异常页常常成为同步中断。比如在除数为0时,处理器就会产生一个异常。因为许多处理器体系结构处理异常与处理中断的方式类似。

二、中断处理程序

相应一个中断的时候,内核会执行一个函数,该函数叫做中断处理程序或中断服务例程。产生中断的每个设备都有一个相应的中断处理程序。例如,由一个函数专门处理来自系统时钟的中断,而另外一个函数专门处理由键盘产生的中断。一个设备的中断处理程序是它设备驱动程序的一部分--设备驱动程序时用于对设备进行管理的内核代码。

中断处理程序与其他内核函数的真正区别在于,中断处理程序是被内核调用来响应中断的,而它们运行于我们称之为中断上下文的特殊上下文中。中断可能随时发生,因此中断处理程序也就随时可能执行。所以必须保证中断处理程序能够快速执行,这样才能保证尽可能快地恢复中断代码的执行。因此,尽管对硬件而言,操作系统能迅速对其中断进程服务非常重要;当然对系统的其他部分而言,让中断处理程序在尽可能短的时间内完成运行也同样重要。

三、上半部与下半部的对比

又想中断处理程序运行得快,又想中断处理程序完成的工作量多,两者不能兼得。为了达到更好的目的,一般把中断处理切为两个部分,中断处理程序时上半部,接收到一个中断,它就立即开始执行,但只做有严格时限的工作,例如对接收的中断进行应答或复位硬件,这些工作都是在所有中断被禁止的情况下完成的。能够被允许稍后完成的工作会推迟到下半部去。

例如,当网卡接收来自网络的数据包时,需要通知内核数据包到了。网卡需要立即完成这件事,从而优化网络的吞吐量和传输周期,以避免超时。因此,网卡立即发出中断。内核通过执行网卡已注册的中断处理程序来做出应答。

四、注册中断处理程序

五、编写中断处理程序

六、中断上下文

七、中断处理机制的实现

八、/proc/interruts

九、中断控制

转载地址:https://blog.csdn.net/weixin_30496999/article/details/116774978 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:linux 查看网卡压力,一种Linux系统下自动化测试网卡压力的方法与流程
下一篇:细粒度权限控制 linux,利用docker插件实现细粒度权限控制

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年03月13日 18时05分41秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

c语言 实现sizeof功能,C语言简单实现sizeof功能代码 2019-04-21
c语言sin函数近似值,用泰勒公式求sin(x)的近似值 2019-04-21
c 语言登录系统源代码,c语言源代码---------------个人图书管理系统 2019-04-21
android线程通信方式,Android 主线程和子线程通信问题 2019-04-21
cps1 cps2 android,图文教程:CPS1和CPS2模拟器使用 2019-04-21
在线设计 html5 表单,html5注册表单制作-表单制作-小程序表单制作 2019-04-21
android小闹钟课程设计,《小闹钟》教学设计 2019-04-21
mysql文件系统_MySQL文件系统先睹为快(1) 2019-04-21
nums在python_程序找到一对(i,j),其中nums [i] + nums [j] +(i -j)在Python中最大化?... 2019-04-21
jquery后台内容管理_教育平台项目后台管理系统:课程内容模块 2019-04-21
grouping函数 mysql_sql聚合函数有哪些 2019-04-21
python os.walk如何不遍历隐藏文件_python 获取文件下所有文件或目录os.walk()的实例... 2019-04-21
python 股票估值_【中金固收·固收+】隐藏价值的角落:限售股AAP估值及Python实现方法(上)... 2019-04-21
java文档生成_Java文档自动生成 2019-04-21
java 共享目录_java 操作windows 共享目录方法介绍 2019-04-21
java 监控 宕机_JAVA监测tomcat是否宕机,控制重启 2019-04-21
catch that cow java_POJ3278——Catch That Cow 2019-04-21
java integer 不变模式_Java代码的变与不变 2019-04-21
java guava 使用_Java8-Guava实战示例 2019-04-21
python barrier option pricing_《Python金融数据分析》书内代码实战与讲解(二)金融衍生物定价... 2019-04-21