linux報文接收的上下半段處理從本質上是由於系統的快速中斷不能長時間滯留,
以免影響後續外部事件的處理。linux
所以將報文的接收分爲硬件中斷產生的上半部分和由上半部分軟件中斷觸發的下半部分。緩存
上半部分負責接收報文和將其分配給處理它的內核線程,下半部分由內核線程具體處理。操作系統
目前linux內核在該部分代碼較多主要來源於兩方面,NAPI和內核搶佔.線程
從linux2.6開始追加了內核搶佔,與以往不一樣點在於之前只能由系統線程搶佔用戶線程,
如今內核之間也能相互搶佔。這樣的收益主要在兩方面:
<1>.實時性 <2>.多核操做系統的效率提高.事件
NAPI是由於出現了本身能緩存必定報文的設備,對於這種設備的上半段報文能夠留在設備中
而將設備分配內核線程接手,在下半段從設備中取出報文。以往的非NAPI的設備由於沒有緩存因此
每次收到報文都要分配給處理線程。所以NAPI能減小上下半段交互的軟中斷頻率.
linux-3.6
面碼效率