softirq是哪个CPU响应的硬中断,对应的硬中断的softirq就在哪个CPU上执行吗
时间: 2023-12-06 22:41:08 浏览: 38
在 Linux 内核中,softirq 是由内核线程处理的,而不是由 CPU 直接处理。当硬件设备发出一个硬中断时,对应的中断处理程序会被调用,它会完成一些必要的工作并触发 softirq。这个 softirq 会被添加到一个全局的 softirq 列表中,由内核中的一个或多个内核线程负责处理这个列表中的所有 softirq。
因此,softirq 的处理不是由某个特定的 CPU 处理的,而是由内核线程处理,可以在任何一个 CPU 上执行。但是,在处理 softirq 时,内核会尽可能地将它们分配给与对应硬件中断处理程序所在的 CPU 相同的 CPU 核心,以提高处理效率。
相关问题
默认情况下是不是硬中断在哪个CPU上被接受的,该硬中断对应的软中断就在哪个CPU上执行
在 Linux 操作系统中,默认情况下,硬中断被接收的 CPU 是由 IRQ affinity 决定的。IRQ affinity 是一种机制,可以将硬件中断绑定到特定的 CPU 上。IRQ affinity 可以通过 /proc/irq/<irq_number>/smp_affinity 文件进行配置。每个 CPU 都有一个对应的位,如果一个位被设置为 1,则表示该 CPU 可以处理该中断;如果该位被设置为 0,则表示该 CPU 不能处理该中断。当硬件中断到达时,它会被发送到被绑定的 CPU 上进行处理。
当硬件中断被处理完成后,对应的软中断不一定会在相同的 CPU 上执行。Linux 内核中,软中断是通过软中断处理器(SoftIRQ)来处理的。每个 CPU 都有一个独立的 SoftIRQ 处理器,用于处理与该 CPU 相关的软中断。当一个 CPU 处理完硬中断后,它会将对应的软中断放入该 CPU 对应的 SoftIRQ 处理器的队列中。然后,该 CPU 的 SoftIRQ 处理器会在适当的时候(例如在内核中断结束时)处理队列中的软中断,而这个时候可能会在其他 CPU 上执行。
do_softirq这个函数一般在哪里被调用,是在硬中断的函数里嘛?如果是的话是哪个函数
do_softirq()函数是在Linux内核的软中断机制中被调用的。软中断是一种异步的、轻量级的机制,用于处理一些需要延迟处理或周期性处理的任务,例如网络包的处理、定时器的处理等。在Linux内核中,软中断是通过一个叫做“软中断处理器(softirq)”的结构来实现的。
当硬件中断处理程序执行完毕后,会检查是否有软中断需要处理。如果有,就会调用do_softirq()函数来处理软中断。所以可以说,do_softirq()函数是在硬中断处理程序中被调用的。
具体而言,do_softirq()函数一般是在硬中断底半部(bottom half)的处理函数中被调用。例如,在网络设备驱动程序中,当接收到一个网络包时,硬中断处理程序会调用netif_rx()函数将数据包交给网络协议栈处理。而netif_rx()函数的底半部处理函数会调用net_rx_action()函数,从而触发软中断处理。在net_rx_action()函数中,就会调用do_softirq()函数来处理软中断。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)