- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式操作系统VxWorks中网络协议存储池原理及实现
VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS)。它以良好的持续发展能力、高性能的内核以及卓越的实时性被广泛的应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中。VxWorks操作系统有着优越的网络性能,而缓冲区的数据拷贝是影响网络性能的主要因素。
众所周知,缓冲区在网络协议栈中有两个作用:第一,提供载体,使分组或报文可以在各协议层中流动;第二,为各级缓冲区提供空间。缓冲区的设立使得TCP/IP协议栈支持异步I/O操作,异步操作对于协议栈的I/0性能是非常重要的。在网络输出的过程中每一层需要在数据的首部或者尾部添加数据头和数据尾来对数据进行封装使得接收端对应的层能够进行正确的接收,在输入的过程中每层都需要将本层的数据头和数据尾去掉而最终还原成发送端发送的数据。上述的封装/去封装和拷贝操作使得网络协议对内核的存储器管理能力提出了很多要求。这些要求包括能方便地操作可变长缓存,能在缓存头部和尾部添加数据(如低层封装来自高层的数据),能从缓存中移去数据(如当数据包向上经过协议栈时要去掉首部),并能尽量减少这些操作所作的数据复制。
1 使用netBufLib管理存储池的基本原理
网络协议存储池使用mBlk结构、clBlk结构、簇缓冲区和netBufLib提供的函数进行组织和管理。mBlk和clBlk结构为簇缓冲区(cluster)中数据的缓冲共享和缓冲链接提供必要的信息。netBufLib例程使用mBlk和clBlk来管理cluster和引用cluster中的数据,这些结构体中的信息用于管理cluster中的数据并且允许他们通过引用的形式来实现数据共享,从而达到数据“零拷贝”的目的。
1.1 结构体mBlk和clBlk及其数据结构
mBlk是访问存储在内存池中数据的最基本对象,由于mBlk仅仅只是通过clBlk来引用数据,这使得网络层在交换数据时就可以避免数据复制。只需把一个mBlk连到相应mBlk链上就可以存储和交换任意多的数据。一个mBlk结构体包括两个成员变量mNext和mNextPkt,由它们来组成纵横两个链表:mNext来组成横的链表,这个链表中的所有结点构成一个包(packet);mNextPkt来组成纵的链表,这个链表中的每个结点就是一个包(packet),所有的结点链在一起构成一个包队列,如图1所示。
图1 包含两个数据包的mBlk链
结构体mBlk和clBlk的数据结构如下所示:
struct mBlk
{
M_BLK_HDR mBlkHdr; /* header */
M_PKT_HDR mBlkPktHdr; /* pkthdr */
CL_BLK * pClBlk; /* pointer to cluster blk */
} M_BLK;
struct clBlk
{
CL_BLK_LIST clNode;/* union of next clBlk */
UINT clSize;/* cluster size */
int clRefCnt;/*countof the cluster */
struct netPool * pNetPool; /* pointer to the netPool */
} CL_BLK;
/* header at beginning of each mBlk */
struct mHdr
{
struct mBlk * mNext;/* next buffer in chain */
struct mBlk * mNextPkt;/* next chain in queue/record */
char *mData; /* location of data */
int mLen;/* amount of data in this mBlk */
UCHAR mType;/* type of data in this mBlk */
UCHAR mFlags; /* flags; see below */
} M_BLK_HDR;
/* record/packet header in first mBlk of chain; valid if M_PKTHDR set */
struct pktHdr
{
struct ifnet * rcvif;/* rcv interface
您可能关注的文档
- 四川省成都市第十一中学2014-2015学年高二数学上学期期中试题新人教A版.doc
- 四川省成都市五校协作体2014-2015学年高二数学上学期期中 理(答案不全).doc
- 四川省华蓥市明月镇七年级数学上册 2.2 整式的加减(第四课时)教案 (新版)新人教版.doc
- 四川省华蓥市明月镇七年级数学上册 单项式教案 (新版)新人教版.doc
- 在公司工会全委(扩大)会议上的工作报告.doc
- 四川省绵阳市2015届高三数学第一次诊断性考试试题 理(含解析).doc
- 四川省仁寿县联谊学校2015届九年级数学上学期期中试题 新人教版.doc
- 四川省武胜中学2014-2015学年高一数学上学期第一次月考试题新人教A版.doc
- 四川省雅安中学2014-2015学年七年级数学10月月考试题(无答案) 新人教版.doc
- 天津市宝坻区王卜庄镇初级中学2015届九年级数学上学期期中试题 新人教版.doc
- 嵌入式以太网在高压监控中的应用201325891318409.doc
- 陕西省靖边县第四中学七年级数学上册 6.3 数据的表示(第2课时)学案(无答案)(新版)北师大版.doc
- 强化网站项目管理的需求分析20132598485581.doc
- 陕西省咸阳市泾阳县云阳中学高中数学 1.2集合的基本关系(二)导学案 北师大版必修1.doc
- 巧讲《金属材料与热处理》2014367105719208.doc
- 陕西省咸阳市泾阳县云阳中学高中数学 3.4对数(二)导学案 北师大版必修1.doc
- 切进职业切进社会为课堂注入活力.doc
- 陕西省榆林育才中学高中数学 第1章《常用逻辑用语》1.3全称量词与存在量词习题导学案(无答案)北师大版选修1-1.doc
- 氢弹.doc
- 陕西省榆林育才中学高中数学 第1章《立体几何初步》垂直关系的判定导学案 北师大版必修2.doc
最近下载
- 劳动能力鉴定课件.ppt VIP
- 第十六讲文明新路与人类命运共同体-中华民族共同体概论专家大讲堂课件.pptx VIP
- 2025届高考数学抛物线中的八个常考二级结论与秒杀模型(解析版).pdf VIP
- 课题申报书:科学教育背景下开展初中物理项目化实践的路径研究.docx VIP
- 《劳动能力鉴定》PPT课件培训讲学.ppt VIP
- 商业插画高职全套教学课件.pptx
- EBZ掘进机电气原理讲解.ppt VIP
- 《石油化工企业设计防火标准》gb5060-2008局部修订2018年版.docx VIP
- 义务教育版(2024)七年级全一册信息科技 第4课 数据分包灵活传 课件.pptx VIP
- 初中物理大单元教学研究.docx VIP
文档评论(0)