同样的,我们先假设Processor A处理了这个网卡中断事件,很快的完成了基本的HW操作后,raise softirq。在返回中断现场前,会检查softirq的触发情况,因此,后续网络数据处理的softirq在processor A上执行。在执行过程中,NIC硬件再次触发中断,Interrupt controller将该中断分发给processor B,执行动作和Processor A是类似的,因此,最后,网络数据处理的softirq在processor B上执行。
时间: 2023-09-30 22:07:25 浏览: 38
是的,你说的很对。在处理网络数据的过程中,可能会涉及到多个处理器,这也是为什么在多处理器系统中,需要考虑如何分配中断处理的问题。在这种情况下,中断控制器通常会将同一类型的中断分配给同一组处理器来处理,以最大化系统性能。同时,软中断的处理也是通过全局的软中断向量表来实现的,因此可以保证不同处理器上的软中断处理程序是一致的。
相关问题
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()函数来处理软中断。
softirq是哪个CPU响应的硬中断,对应的硬中断的softirq就在哪个CPU上执行吗
在 Linux 内核中,softirq 是由内核线程处理的,而不是由 CPU 直接处理。当硬件设备发出一个硬中断时,对应的中断处理程序会被调用,它会完成一些必要的工作并触发 softirq。这个 softirq 会被添加到一个全局的 softirq 列表中,由内核中的一个或多个内核线程负责处理这个列表中的所有 softirq。
因此,softirq 的处理不是由某个特定的 CPU 处理的,而是由内核线程处理,可以在任何一个 CPU 上执行。但是,在处理 softirq 时,内核会尽可能地将它们分配给与对应硬件中断处理程序所在的 CPU 相同的 CPU 核心,以提高处理效率。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://img-home.csdnimg.cn/images/20210720083646.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)