Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1737924
  • 博文数量: 358
  • 博客积分: 2180
  • 博客等级: 大尉
  • 技术积分: 1810
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-17 13:47
文章分类

全部博文(358)

文章存档

2016年(17)

2015年(55)

2014年(9)

2013年(67)

2012年(181)

2011年(29)

分类: LINUX

2013-09-03 10:48:58

原文地址:NAPI是什么 作者:fireaxe

   NAPI是linux一套最新的处理网口数据的API,据说是由于找不到更好的名字,所以称之为NAPI(New API)。它是到linux 2.5才引入的,所以很多驱动并不支持这种操作方式。

  简单来说,NAPI是综合中断方式与轮询方式的技术。

  中断的好处是响应及时,如果数据量较小,则不会占用太多的CPU时间;缺点是数据量大时,会产生过多中断,而每个中断都要消耗不少的cpu时间,从而导致效率反而不如轮询高。轮询方式与中断方式相反,它更适合处理大量数据,因为每次轮询不需要消耗过多cpu时间;缺点是即使只接收很少数据或不接数据时,也要占用cpu时间。

  NAPI是二者的结合体,数据量低时采用中断法,数据量高时采用轮询法。平时是中断方式,当有数据到达时,会触发中断处理函数执行,中断处理函数关闭中断并开始处理函数。如果此时有数据到达,则没必要再触发中断了,因为中断处理函数中会轮询处理数据,直到没有新数据时才打开中断。

  很明显,数据量很低与很高时,NAPI可以发挥中断方式与轮询方式的优点,性能较好。如果数据量不稳定,且说高不高说低不低,则NAPI会在两种方式切换上消耗不少时间,效率反而较低一些。
阅读(914) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~