首页 > 其他分享 >12、 什么是软中断?

12、 什么是软中断?

时间:2022-10-23 22:08:47浏览次数:57  
标签:12 配送 中断 什么 处理程序 内核 上半部 半部

前面我们也提到了,中断请求的处理程序应该要短且快,这样才能减少对正常进程运行调度地影响,而且中断处理程序可能会暂时关闭中断,这时如果中断处理程序执行时间过长,可能在还未执行完中断处理程序前,会丢失当前其他设备的中断请求。

那 Linux 系统为了解决中断处理程序执行过长和中断丢失的问题,将中断过程分成了两个阶段,分别是「上半部和下半部分」

  • 上半部用来快速处理中断,一般会暂时关闭中断请求,主要负责处理跟硬件紧密相关或者时间敏感的事情。
  • 下半部用来延迟处理上半部未完成的工作,一般以「内核线程」的方式运行。

还是前面的外卖例子,由于第一个配送员长时间跟你通话,则导致第二位配送员无法拨通你的电话,其实当我接到第一位配送员的电话,可以告诉配送员说你现在下楼,剩下的事情,等你们见面再说(上半部),然后就可以挂断电话,到楼下后,在拿外卖,以及跟配送员说其他的事情(下半部)。

这样,第一位配送员就不会占用你手机太多时间,当第二位配送员正好过来时,会有很大几率拨通你的电话。

再举一个计算机中的例子,常见的网卡接收网络包的例子。

网卡收到网络包后,通过 DMA 方式将接收到的数据写入内存,接着会通过硬件中断通知内核有新的数据到了,于是内核就会调用对应的中断处理程序来处理该事件,这个事件的处理也是会分成上半部和下半部。

上部分要做的事情很少,会先禁止网卡中断,避免频繁硬中断,而降低内核的工作效率。接着,内核会触发一个软中断,把一些处理比较耗时且复杂的事情,交给「软中断处理程序」去做,也就是中断的下半部,其主要是需要从内存中找到网络数据,再按照网络协议栈,对网络数据进行逐层解析和处理,最后把数据送给应用程序。

所以,中断处理程序的上部分和下半部可以理解为:

  • 上半部直接处理硬件请求,也就是硬中断,主要是负责耗时短的工作,特点是快速执行;
  • 下半部是由内核触发,也就说软中断,主要是负责上半部未完成的工作,通常都是耗时比较长的事情,特点是延迟执行;

还有一个区别,硬中断(上半部)是会打断 CPU 正在执行的任务,然后立即执行中断处理程序,而软中断(下半部)是以内核线程的方式执行,并且每一个 CPU 都对应一个软中断内核线程,名字通常为「ksoftirqd/CPU 编号」,比如 0 号 CPU 对应的软中断内核线程的名字是 ​​ksoftirqd/0​

不过,软中断不只是包括硬件设备中断处理程序的下半部,一些内核自定义事件也属于软中断,比如内核调度等、RCU 锁(内核里常用的一种锁)等。


标签:12,配送,中断,什么,处理程序,内核,上半部,半部
From: https://blog.51cto.com/u_10630401/5787594

相关文章

  • leetcode-412-easy
    FizzBuzzGivenanintegern,returnastringarrayanswer(1-indexed)where:answer[i]=="FizzBuzz"ifiisdivisibleby3and5.answer[i]=="Fizz"ifii......
  • 11、什么是中断?
    在计算机中,中断是系统用来响应硬件设备请求的一种机制,操作系统收到硬件的中断请求,会打断正在执行的进程,然后调用内核中的中断处理程序来响应请求。举个生活中取外卖的例子,可......
  • MQTT是什么,优势在哪里?
    MQTT是一个物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。MQTT是专门针对物联网开发的轻量级......
  • 1:进程与线程有什么区别?
    1、线程的基本概念概念:线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,......
  • 【RocketMQ入门到精通】— RocketMQ初级特性能力 | RocketMQ中的Subscribe都是什么样
    名言警句任何先进的技术均与魔法无异追本溯源​​经历了6个月的失踪,我将带着干货终究归来!【RocketMQ入门到精通】​​消息消费通常需要考虑消息队列负载、消费模式、拉取机......
  • 12.stm32中断
    ......
  • 【STM32】中断!
    中断EXTI(Externalinterrupt/eventcontroller)—外部中断/事件控制器,管理了控制器的20个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检......
  • ora-12514报错解决方法
    使用plsql登录数据库,提示报错ORA-125141.监听未启动  2.修改tnsnames.ora,一般在D:\oracle\product\10.2.0\client_1\NETWORK\ADMIN目录下。将HOST改成127.0.0.1,将......
  • 信息化应用场景,华为云CDN能为企业做什么?​
    信息化应用场景,华为云CDN能为企业做什么?​随着信息化技术在各行业的广泛应用,人们对于数据传输的要求也越来越高。传统的互联网已经不能满足目前需求,需要一种新型高效可靠的......
  • 【等保2.0笔记】1.什么是等级保护
    为什么要实施等级保护1.国家信息安全形式严峻2.维护国家安全需求(三网合一:互联网、电信网、广电网)及重要信息系统(银行、铁路、电力、海关)3.信息安全是非传统安全为什么要实施......