【操作系统】聊聊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

小结

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

相关推荐
神仙别闹3 分钟前
基于C语言 HTTP 服务器客户端的实验
服务器·c语言·http
Archy_Wang_110 分钟前
基于BaGet 构建NuGet私有库并实现类库打包到NuGet私有库
运维·jenkins
小狗爱吃黄桃罐头13 分钟前
正点原子【第四期】Linux之驱动开发学习笔记-10.1 Linux 内核定时器实验
linux·驱动开发·学习
初听于你14 分钟前
运维高级故障排除与恢复-SysRq
运维·服务器·安全
RPA机器人就用八爪鱼1 小时前
RPA自动化程序:企业数字化转型的智能引擎
运维·自动化·rpa
Kang强1 小时前
tcpdump 抓到 icmp 包,但是抓不到 tcp 包??
linux
demodashi6661 小时前
Linux下ag搜索命令详解
linux·运维·windows
無识1 小时前
Linux-第四章web服务
linux·运维·服务器
一叶知秋yyds2 小时前
Centos 安装 Docker教程
linux·docker·centos
fie88892 小时前
在CentOS 7上集成cJSON库的方法
linux·运维·centos