linux中断 简介

版权声明:本文为博主许佳佳原创文章,转载请务必注明出处。 https://blog.csdn.net/Double2hao/article/details/82962227

中断 概念

中断是一种可以使CPU和硬件设备进行通信的技术。
例如,当我们在敲击键盘时,键盘控制器(控制键盘的硬件设备)会发送一个中断,通知操作系统有键按下。从本质上说,中断是一种特殊的信号,由硬件设备向CPU发送。当CPU接收到中断信号后,就会马上通知操作系统此信号的到来,然后由操作系统负责处理这些新到来的数据。
在这里插入图片描述
过程如上图:
1、设备产生中断
2、电信号发送给中断控制器
3、判断中断是否被屏蔽(没有屏蔽就继续)
4、把这个中断发送给中断内核处理
5、处理器立即停止此刻正在做的事情,执行中断处理程序。

“下半部” 概念

中断分为两个部分,上半部就是中断处理程序,那么什么是下半部,或者说为什么要分为两个部分呢?

为什么要有“下半部”?
1、中断处理程序在执行的时候,当前的中短线在所有处理器上都会被屏蔽,也就是这一类型的中断请求都被屏蔽。
2、如果处理程序是IRQF_DISABLED类型,中断处理程序执行的时候会禁止所有本地中断。
3、中断面向的是硬件的,而有的硬件本身就是高速的,也就是说本身也是有时间的限制的,如果处理的慢的话就可能导致后面的数据被更加后面的数据给覆盖了,比如网卡。

因此,耗时的操作需要异步执行。
上半部:简单快速,执行的时候禁止一些或者全部中断。
下半部:稍后执行,执行的时候可以响应所有中断。

上下两部分

上半部:中断处理程序
下半部:软中断、tasklet、工作队列。
在这里插入图片描述

系统定时器原理——中断

系统定时器以某种频率自行触发时钟中断,当时钟中断发生时,内核通过一种特殊的中断处理程序对其进行处理。
比如,在x86体系结构中,系统定时器频率默认值为100,因此,x86上时钟中断的频率就为100HZ,也就是说每秒钟会触发时钟中断100次。

定时器原理——衰减测量器
设置一个初始值,该值以固定频率递减,当减到零时,触发一个中断。

猜你喜欢

转载自blog.csdn.net/Double2hao/article/details/82962227