polling技术进展不大

2009-05-13 01:36:53来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折


哎,怎么搞的,现在感觉体力和意识,效率都在下降.从年初写的"论FREEBSD核心的POLLING技术设计与实现"到现在还没完工,新的研究"关于BSD系统核心mutex
,turnstile与witness原理与实现"又是写了一半.这样的停工太多了.早年的"关于OPENBSD核心新技术CARP的实现原理与相关技术"只是差一个小函数就全部完工
.还有更早的"路由与ARP原理及实现"也是差两个函数.等等等等,最为可惜的是一项基于IP的新的协议.代码都他妈的写完了.却两年了没调试过.我靠靠靠......
为了吉利下自己,先把没写完的贴出来,写完一段贴一段.给自己点压力
先贴"论FREEBSD核心的POLLING技术设计与实现"
啊啊啊,怎么回车换行都没了:(
                                                                                                   网络设备轮询设计与实现
                                                                                                     作者:xie_minix
1.1  引言
polling(轮询)技术是一种在一定时间内不断的探测目标,以获取目标在满足条件后进行相应处理的技术。从大多数情况来讲,这种技术并没有以中断为代表的技术先进。但是在一些特定场合,如主机作为一个大型的网关,并且流量巨大,选用轮询技术还是比较合适的。本文是针对FreeBSD操作系统及其代码来进行分析其设计思路和实现过程。目前BSD类操作系统中只有FreeBSD4.10和FreeBSD5.3以上版本才加入了对轮询的支持,NetBSD和OpenBSD还未实现。作为大多数防火墙首选的操作系统OpenBSD到是应该实现轮询技术。
在《TCP/IP详解》第二卷中,书中作者曾经提到过该技术,而且好象冯.杰克布森已经在一些实验中实现过。直到不久前我们才看到这些代码在FreeBSD中实现,要知道在核心中加入一项新的技术工作量是非常之大,轮询代码不但是要在核心中增加一些代码文件,而且把所有网卡驱动程序都要进行大量相应的改动。我们以VIA Rhine(威盛的莱因型芯片,通常的DLINK 530TX网卡使用的芯片)的驱动程序if_vr.c和他的头文件if_vrreg.h(后面具体涉及到硬件驱动程序的代码都以vr代码做实例分析)来简单讲述代码的一些改动。
A. XX_softc结构中的改动:
XX是代表各芯片的简称,本文使用的是vr芯片代码,所以是vr_softc结构。在结构的最后部分,增加了以下代码:
#ifdef DEVICE_POLLING int   rxcycles;#endif
以上代码出现在源代码if_vrreg.h中的第472行中。DEVICE_POLLING是由核心配置决定。如果核心配置文件中加入了该定义,则在#ifdef 和#endif行之间的代码将编译进核心。也就是说,所有的支持POLLING的代码都应该在#ifdef DEVICE_POLLING定义之下和#endif之上。图中的rxcycles变量是用来存放在核心进入vr驱动程序时,POLLING要求驱动程序的底半部分(即读出和写入)进行多少次的循环。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Tmsnc (字符界面的msn messenger) 安装在 FreeBSD 5.4

下一篇:督促下自己,再发一篇关于BSD核心的MUTEX