diff --git "a/2024/02/27/Linux\351\251\261\345\212\250\345\274\200\345\217\221/index.html" "b/2024/02/27/Linux\351\251\261\345\212\250\345\274\200\345\217\221/index.html" index 0351a9f..67ec2d3 100644 --- "a/2024/02/27/Linux\351\251\261\345\212\250\345\274\200\345\217\221/index.html" +++ "b/2024/02/27/Linux\351\251\261\345\212\250\345\274\200\345\217\221/index.html" @@ -38,7 +38,7 @@ - + @@ -1422,6 +1422,21 @@
libusb
+net_device结构体
+1 | struct net_device { |
net_device_ops:
+1 | struct net_device_ops { |
napi:
Linux 里面的网络数据接收也轮询和中断两种,中断的好处就是响应快,数据量小的时候处理及时,速度快,但是一旦当数据量大,而且都是短帧的时候会导致中断频繁发生,消耗大量的 CPU 处理时间在中断自身处理上。轮询恰好相反,响应没有中断及时,但是在处理大量数据的时候不需要消耗过多的 CPU 处理时间。 Linux 在这两个处理方式的基础上提出了另外一种网络数据接收的处理方法: NAPI(New API), NAPI 是一种高效的网络处理技术。NAPI 的核心思想就是不全部采用中断来读取网络数据,而是采用中断来唤醒数据接收服务程序,在接收服务程序中采用 POLL 的方法来轮询处理数据。这种方法的好处就是可以提高短数据包的接收效率,减少中断处理的时间。