美文网首页
CPU软中断

CPU软中断

作者: 崔天浩 | 来源:发表于2020-01-12 22:03 被阅读0次

中断描述

中断是系统用来响应硬件设备请求的一直机制,它会打断进程的正常调度何执行,然后调用内核中的中断处理程序来响应设备的请求,只有收到中断信号,CPU才处理中断时间,没有收到信号时候,可以继续执行其它工作, 可以看出中断是一种一步的事件处理机制,由于中断处理程序会打断其它进程的运行,所以为了减少正常运行调度影响,中断处理程序需要尽可能快的运行,如果中断本身要做的事情不对,那么处理起来也不会太耗时,但是中断要处理的事情很多,中断服务程序就有可能执行很长时间,由于中断处理程序在响应中断时,还会临时关闭其它请求过来中断。着就会导致这个中断处理完成之前,其它中断都无法响应导致丢失

软中断

为了解决中断处理程序执行时间过长,导致其它中断请求丢失的问题,linux将中断处理过程分为两个阶段,上半部和下半部

  • 上半部:快速处理中断,它在中断禁止模式下运行,主要处理跟硬件紧密相关的或时间敏感工作。
  • 下半部:用来延迟处理上半部未完成的工作,通常以内核线程的方式运行

网卡接收数据包例子:

网卡接受到数据包后,会通过硬件中断方式,通知内核有新的数据到了,这时,内核就应该调用中断处理程序来相应它

  • 上半部:也就是我们通常说的硬中断,特点是快速执行,就是把网卡的数据读到内存中,然后更新一下硬件寄存器的状态(表示数据已经都好了),最后在发送软中断信号,通知下半部分进一步处理
  • 下半部:也就是软中断,特点是延迟执行,下半部被中断信号唤醒,需要冲内存中找到网络数据,在按照网络协议栈,对数据进行逐层解析和处理,直到把它送给应用程序

实际上,上半部会打断CPU正在执行的任务,然后立即执行中断处理程序。而下半部分内核线程的方式执行,并且每个CPU都对应一个软中断内核线程,名字为ksoftirqd/CPU编号,比如说,0号cpu对应的软中断内核线程的名字就是 ksftirqd/0

注意:软中断不只包括了上述的硬件设备中断处理程序的下半部,一些内核自定义的时间也属于软中断,比如内核调度和RCU锁(read-copy update的缩写,RCU是Linux内核中最常用的锁之一)等

查看软中断和内核线程

  • /proc/softirqs 提供了软中断的运行情况;
  • /proc/interrupts 提供了硬中断的运行情况
$ cat /proc/softirqs
                    CPU0
          HI:          1
       TIMER:   64325468
      NET_TX:        113
      NET_RX:    2203298
       BLOCK:          0
BLOCK_IOPOLL:          0
     TASKLET:         39
       SCHED:          0
     HRTIMER:          0
         RCU:   41173220
  • 注意软中断类型,第一列为软中断类型
  • 注意软中断分布在cpu的情况,第一行为CPU编号

查看软中断线程

$ ps aux | grep softir
root         3  0.0  0.0      0     0 ?        S     2019   0:03 [ksoftirqd/0]

总结

中断处理分为上半部和下半部

  • 上半部:对应硬件中断,用于快速处理中断
  • 下半部:为软中断,用于异步处理上半部未完成的工作
  • /proc/softirqs 提供了软中断的运行情况;
  • /proc/interrupts 提供了硬中断的运行情况

相关文章

  • CPU软中断

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

  • 虚机软中断竟然是可一个CPU使劲造?

    对一台线上虚拟查看软中断造成的CPU开销的时候,发现一个比较奇怪的现象,那就是所有的软中断几乎都是被一个CPU处理...

  • 关于linux 软中断对网卡性能的影响以及优化

    首先,要对软中断有一个认识,程序运行后,操作系统会发送程序需要的一些cpu指令到某个cpu,扔给CPU的这个过程是...

  • cpu软中断不均衡的问题

    首先确认是否为网卡引起的 cat /proc/interrupts 然后确认网卡是否支持多队列 lscpi -vv...

  • Linux中断机制

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

  • 2018-11-08 CPU 软中断与硬中断

    参考:http://blog.51cto.com/noican/1361087 && 百度百科 && 操作系统原理...

  • Linux中断中能否sleep

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

  • 软中断

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

  • 软中断

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

  • 老王单片机中断学习理解

    官解什么是中断:CPU在处理某一事件A时,发生的另外某一事件B请求CPU去处理(产生了中断),随后CPU暂时中断当...

网友评论

      本文标题:CPU软中断

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