【操作系统】聊聊Linux软中断

什么是中断

中断是系统用来响应硬件设备请求的一种机制,会打断进程的正常调度和执行,转而去执行内核中的中断处理程序。

比如你正在看书,你女朋友叫你出去逛街。你就需要先放下手里的事情,然后逛街。回来之后,在接着看书。

中断其实是一种异步的事件处理机制,可以提高系统的并发处理能力。

因为中断会打断正在运行的进程执行,所以需要非常快的执行。但是在实际中,可能A进程执行,执行一个中断,如果此时有别的中断,就不会被执行,而需要先等第一个中断执行完毕。而第二次的中断就可能丢失。

软中断

为了解决中断执行时间过程和可能丢失中断的问题,将中断分为两阶段。

  • 上半部分快速处理中断。中断模式下运行,一般以硬件相关方式工作。
  • 下半部分处理延迟未处理的工作,通常以内核线程的方式运行

比如我们常说的网络数据包,当服务端发送数据包到客户端,首先会通过硬中断的方式进行通知内核数据到了,然后内核调用中断处理程序响应。将网卡的数据读取到内存中,然后更新硬件寄存器的状态,发送一个软中断的信号。

下半部分就是将软中断信号唤醒后,从内存找到数据进行按照数据逐层解析,发送给应用程序。
上半部分处理硬件请求,也叫硬中断
下半部分处理软请求,也叫软中断

查看软中断和内核线程

proc 是用户空间和内核空间通信的机制,可以通过

  • /proc/softirqs 提供了软中断的运行情况;
  • /proc/interrupts 提供了硬中断的运行情况。
java 复制代码
root@qxlxi:/# cat /proc/softirqs
                    CPU0       CPU1       
          HI:          7          3
       TIMER:    4857682    4999161
      NET_TX:     176194      61001
      NET_RX:     216930     191267
       BLOCK:     130746     129902
    IRQ_POLL:          0          0
     TASKLET:       4041       4238
       SCHED:    4402511    4539135
     HRTIMER:          0          0
         RCU:    4878791    4871501
  • NET_RX 表示网络接收中断
  • NET_TX 表示网络发送中断。

查看

java 复制代码
root@qxlxi:/# ps aux | grep softirq
root           9  0.0  0.0      0     0 ?        S    Sep18   0:07 [ksoftirqd/0]
root          18  0.0  0.0      0     0 ?        S    Sep18   0:05 [ksoftirqd/1

小结

本篇主要说了中断的类型,硬件中断和软件中断,分别以及查看对应的命令

相关推荐
楚枫默寒2 小时前
Linux 编辑文件后自动添加修改日期
linux·运维·bash
苦青藤3 小时前
从零搭建 WSUS 隔离网络:完整实战指南(内网离线补丁分发)
运维·windows·microsoft
2601_961194025 小时前
27考研刘晓艳单词pdf
linux·sql·ubuntu·华为·pdf·.net
2023自学中6 小时前
imx6ull 开发板 推流ov5640数据,虚拟机用 ffplay 拉流播放
linux·音视频·嵌入式·开发板
shandianchengzi7 小时前
【记录】Ghidra|Ubuntu 26.04 下 Ghidra 界面缩放完整指南
linux·ubuntu·逆向·ghidra
天天进步20157 小时前
Python全栈项目--Python自动化运维工具开发
运维·python·自动化
Soari7 小时前
Ubuntu 根分区文件系统损坏,系统启动时自动检查失败
linux·运维·ubuntu
杨云龙UP7 小时前
Oracle Health Check巡检脚本使用SOP V2.0:从HTML原始报告→生成Word专业巡检报告→交付客户_2026-06-03
linux·运维·数据库·sql·oracle·报告·巡检
广州灵眸科技有限公司7 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) Linux虚拟机准备
linux·运维·服务器
Lana学习中8 小时前
【运维杂记】连接不上远程服务器的问题处理
运维·服务器