为什么有必要为数据包接收调用两次(硬,然后是软)中断?

时间:2017-07-05 17:49:34

标签: linux linux-kernel driver linux-device-driver interrupt

众所周知,Linux内核接收每个帧并使其经历四个步骤:

  • 硬件接收
  • 硬IRQ: NIC通过中断CPU来断言是否存在网络帧。这会导致NIC驱动程序确认中断并安排软IRQ操作。
  • Soft IRQ:此阶段实现实际的帧接收过程,并在softirq上下文中运行。这意味着该阶段抢占了在指定CPU上运行的所有应用程序,但仍然允许断言硬IRQ。
  • 申请表

图8.1。网络接收路径图:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Performance_Tuning_Guide/s-network-packet-reception.html

enter image description here

但为什么有必要两次调用中断:硬和软?

为什么CPU在获得hard-irq时会直接导致soft-irq而不是执行现在在hard-irq和soft-irq中执行的所有工作?

0 个答案:

没有答案