美文网首页
理解Linux中的软中断

理解Linux中的软中断

作者: wayyyy | 来源:发表于2020-12-20 01:11 被阅读0次

Linux 将中断处理过程分成了2个阶段:

  • 上半部:
  • 下半部:

比如以网卡接收到数据包为例:
网卡接收到数据包后,会通过硬件中断的方式,通知内核有新的数据到了。这时,内核就应该调用中断处理程序来响应它。
对上半部来说,既然是快速处理,其实就是要把网卡的数据读到内存中,然后更新一下硬件寄存器的状态(表示数据已经读好了),最后再发送一个软中断信号,通知下半部做进一步的处理。
而下半部被软中断信号唤醒后,需要从内存中找到网络数据,再按照网络协议栈,对数据进行逐层解析和处理,直到把它送给应用程序。

查看软中断和和内核线程

/proc/softirqs 提供了软中断的运行情况
# cat  /proc/softirqs
                    CPU0       
          HI:          1
       TIMER: 1189813227
      NET_TX:          8
      NET_RX:   26627363
       BLOCK:    2361265
    IRQ_POLL:          0
     TASKLET:         16
       SCHED:          0
     HRTIMER:          0
         RCU:  145966351

第一列,表示软中断的类型:

  • NET_RX
    网络小包会导致性能问题,大量的网络小包会导致频繁的硬中断和软中断。
  • NET_TX

后面表示同一种软中断在不同CPU上的分布情况。

软中断实际上是以内核线程的方式运行的,每个 CPU 都对应一个软中断内核线程,这个软中断内核线程就叫做 ksoftirqd/CPU 编号。

# ps aux | grep softirq | grep -v "grep"
root         7  0.0  0.0      0     0 ?        S    Oct25   4:20 [ksoftirqd/0]
/proc/interrupts 提供了硬中断的运行情况

案例测试

相关文章

  • 理解Linux中的软中断

    Linux 将中断处理过程分成了2个阶段: 上半部: 下半部: 比如以网卡接收到数据包为例:网卡接收到数据包后,会...

  • Linux-怎么理解软中断

    从"取外卖"看中断 中断是系统用来响应硬件设备请求的一种机制,它会打断进程的正常调度和执行,然后调用内核中的中断处...

  • Linux软中断

    中断是一种异步的事件处理机制,可以提高系统的并发处理能力。 中断处理程序在响应中断时,还会临时关闭中断。这就会导致...

  • Linux软中断

    中断其实是一种异步的事件处理机制,可以提高系统的并发处理能力。 由于中断处理程序会打断其他进程的运行,所以,为了减...

  • 系统调用 - syscall

    linux系统调用是通过中断实现的,软中断指令int发起中断信号。linux只占用一个中断向量号,即:0x80。系...

  • 2021-04-03

    Linux0.11内核阅读——中断篇 中断前处理及中断现场恢复中断执行过程硬中断asm.strap.c软中断sys...

  • Linux收包

    Linux的软中断都是在专门的内核线程(ksoftirqd)中进行的。这里需要注意的一点是,软中断不仅仅只有网络软...

  • 【虚拟机】 get 软中断通信

    实验目的 1、简单了解掌握软中断通信的定义知识。 2、了解什么是信号。 3、了解Linux系统环境下进程之间软中断...

  • Linux内核工作队列

    Linux内核中实现工作推后执行的方法有:软中断、tasklet和工作队列(work queue)。 本文介绍工作...

  • Linux信号机制与信号处理

    信号(signal)是Linux进程间通信的一种机制,全称为软中断信号,也被称为软中断。信号本质上是在软件层次上对...

网友评论

      本文标题:理解Linux中的软中断

      本文链接:https://www.haomeiwen.com/subject/rfyhnktx.html