软中断

作者: kar_joe | 来源:发表于2020-01-30 12:25 被阅读0次

含义

为了解决中断处理程序执行过长和中断丢失的问题,Linux 将中断处理过程分成了两个阶段,也就是上半部和下半部:

  • 上半部用来快速处理中断,它在中断禁止模式下运行,主要处理跟硬件紧密相关的或时间敏感的工作。
  • 下半部用来延迟处理上半部未完成的工作,通常以内核线程的方式运行。
    网卡接收数据包的例子:
    网卡接收到数据包后,会通过硬件中断的方式,通知内核有新的数据到了。这时,内核就应该调用中断处理程序来响应它。
    对上半部来说,既然是快速处理,其实就是要把网卡的数据读到内存中,然后更新一下硬件寄存器的状态(表示数据已经读好了),最后再发送一个软中断信号,通知下半部做进一步的处理。
    而下半部被软中断信号唤醒后,需要从内存中找到网络数据,再按照网络协议栈,对数据进行逐层解析和处理,直到把它送给应用程序。
    所以,这两个阶段你也可以这样理解:上半部直接处理硬件请求,也就是我们常说的硬中断,特点是快速执行;而下半部则是由内核触发,也就是我们常说的软中断,特点是延迟执行。
    实际上,上半部会打断 CPU 正在执行的任务,然后立即执行中断处理程序。而下半部以内核线程的方式执行,并且每个 CPU 都对应一个软中断内核线程,名字为 “ksoftirqd/CPU 编号”,比如说, 0 号 CPU 对应的软中断内核线程的名字就是 ksoftirqd/0。

如何查看

  • /proc/softirqs 提供了软中断的运行情况;
  • /proc/interrupts 提供了硬中断的运行情况。
    查看中断变化速率:
$ watch -d cat /proc/softirqs
                    CPU0       CPU1
          HI:          0          0
       TIMER:    1083906    2368646
      NET_TX:         53          9
      NET_RX:    1550643    1916776
       BLOCK:          0          0
    IRQ_POLL:          0          0
     TASKLET:     333637       3930
       SCHED:     963675    2293171
     HRTIMER:          0          0
         RCU:    1542111    1590625

相关文章

  • Linux中断机制

    1、硬中断 2、软中断 3、软中断信号

  • Linux中断中能否sleep

    中断、软中断、硬件中断、异常、同步中断、异步中断,这几个概念非常容易混淆,这里对本文使用的中断、软中断、softi...

  • 软中断

    从“取外卖”看中断 假如说你订了一份外卖,但是不确定外卖什么时候送到,也没有别的方法了解外卖的进度,但是,配送员送...

  • 软中断

    含义 为了解决中断处理程序执行过长和中断丢失的问题,Linux 将中断处理过程分成了两个阶段,也就是上半部和下半部...

  • TCP/IP网络

    软中断: 软中断的处理非常像硬中断。然而,它们仅仅是由当前正在运行的进程所产生的。通常,软中断是一些对I/O的请求...

  • 中断

    1. 软中断与硬中断的区别 软中断:如代码调用INT指令触发 硬中断:为响应中断,一般会有一个硬件中断控制器,当设...

  • 软中断和硬中断

    从本质上讲,中断(硬)是一种电信号,当设备有某种事情发生的时候,他就会产生中断,通过总线把电信号发送给中断控制器。...

  • Linux软中断

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

  • Linux软中断

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

  • CPU软中断

    中断描述 中断是系统用来响应硬件设备请求的一直机制,它会打断进程的正常调度何执行,然后调用内核中的中断处理程序来响...

网友评论

      本文标题:软中断

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