diff --git a/network/1_base/how_os_deal_network_package.md b/network/1_base/how_os_deal_network_package.md index 19d66671..6ce66004 100644 --- a/network/1_base/how_os_deal_network_package.md +++ b/network/1_base/how_os_deal_network_package.md @@ -88,7 +88,7 @@ TCP/IP 网络模型相比 OSI 网络模型简化了不少,也更加易记, 硬件中断处理函数会做如下的事情: - 需要先「暂时屏蔽中断」,表示已经知道内存中有数据了,告诉网卡下次再收到数据包直接写内存就可以了,不要再通知 CPU 了,这样可以提高效率,避免 CPU 不停的被中断。 -- 接着,发起「软中断」,然后恢复刚才屏蔽的中断。 +- 接着,发起「软中断」,但**不会在硬件中断处理函数里立刻恢复刚才屏蔽的中断** —— 在 NAPI 机制下,网卡中断会保持屏蔽,直到软中断通过轮询把 Ring Buffer 里的网络包处理完(napi_complete 收尾)才重新开启,避免软中断还在排队执行时又被硬件中断打断,退化成纯中断模式甚至引发中断风暴。 至此,硬件中断处理函数的工作就已经完成。