


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 基于驱动程序的协议栈设计 谢雪松 胡长阳 时间:2009年06月11日 字 体: 大 中 小 关键词: 摘要:关键词: 设备驱动 协议驱动 操作任务 协议栈基于驱动程序的协议栈设计,相比于传统的基于任务的协议栈设计来说有两
2、点好处:(1)效率更高;(2)对于有多个协议栈的系统来说,有更大的兼容性。1 基于任务的方式在这里存在几个效率不高的来源:首先,正如图1中点线所说明的,当包在应用程序、上层的通信协议,以及网络接口的设备驱动程序之间交换时,下层的操作系统正忙于上下文切换,每一次实时操作系统挂起其中一个任务,恢复执行另一个任务,时间都浪费在存取任务上下文中,考虑到每一个包无论是发还是收,都要通过协议栈的每一层,上下文切换的确造成了巨大的浪费。另外,当数据和控制包在应用程序任务和网络接口之间流动时,包含此类信息的缓冲区必然重复在任务间通信队列加入或删除。然而,这个系统开销是很大的,这本身是由于系统在队列操作时必然包
3、括需与中断和上下文切换隔离的临界区。因此,不仅时间浪费于队列操作,而且整个系统对一些重要的事件例如中断的响应变得延迟。2 基于驱动程序的方法3 缓冲区拷贝缓冲区拷贝效率不高的第一个潜在因素在于:当数据在层与层之间传输时,数据缓冲区的分配、拷贝和释放,这与协议栈的结构无关,仅与缓冲区本身的结构有关。一般来说,有两种常用的方式用于协议栈层与层之间传送数据,如图3所示。然而,这两种方式均有缺陷,我们假设,应用层有一些数据需要传送,通常我们把它称作消息,消息需被送至协议栈的最底层,因为在缓冲区中没有多余的空间来存放头尾信息,而协议层必须给数据本身加上头尾信息,协议层或分配一个足够大的缓冲区得以容纳消息
4、本身和头尾信息,或分配两个小缓冲区,一个用于头信息,一个用于尾信息,然后用指针将三个缓冲区链接起来。众所周知,每一层加入自己的头尾信息源于上一层传来的信息。因此,一个包在自上而下通过网络时,必须重复这一个过程许多次,时间被消耗于内存的分配之中(而自下而上则好得多,因为下层的头尾信息可以被上层忽略)。这种拷贝方式同时伴随着越来越大的消息,释放老缓冲区。链接方式虽然不涉及多余的拷贝,但是却将传输包的设备驱动程序代码复杂化。另一种替代的方式与基于设备驱动程序的方式相当吻合,如图4所示。每次当协议栈创建或改变时,网络服务模块执行一个查询以确定整个协议栈的头、尾信息和最大传输单元要求,这样一来当应用程序
5、向协议栈发消息时,网络服务模块相应地分配一些足够大容纳整个协议栈头尾信息的缓冲区,每一层仅仅将头尾信息填充至这些缓冲区,而不需内存分配或拷贝,这一机制对于性能有显著的改善。重传缓冲区另一个效率不高的原因在于,协议层提供确认与重传机制,一个可靠的协议层的实现通常包括为每个包分配一个重传缓冲区,将包的内容拷贝至重传缓冲区中。如果远程系统的同一层确认了正确接收,重传缓冲区将被释放,然而,如果一个“NACK”发生,协议层重传缓冲区的内容,同时再分配一个重传缓冲区,拷贝内容至重传缓冲区。如果已经发出的包可以被协议层标记为“Unmarked”或“Reserved”的话,上述机制就可被取消,这种情况仅保存一
6、个指针而不拷贝。当设备驱动程序完成传送包并试图释放缓冲区,缓冲区系统确认此缓冲区保留,并不释放包,仅仅将它标记为“已传输”,当相应的协议层收到确认(ACK)之后,就把包去掉标识,并且释放缓冲区,通过把这一特性固化至网络服务模块中,整个协议栈的效率将大大提高。4 细节任何合理的基于驱动程序的协议栈都会包含相似的数据结构、数据和控制原语及模块函数。下面介绍一下细节数据结构,以下是一些可能用到的数据结构。(1) 设备入口提供实时操作系统和某一特殊的协议模块的管道;(2) 驱动程序静态变量对于每一协议层仅分配一次,不管协议层下的网络接口有多少,它是协议层的全局存储区域;(3) 逻辑单位静态变量仅基于接
7、口分配,所以如果你有一个设备驱动程序控制两个接口,就应有两个逻辑单位静态变量,但是仅有一个驱动程序变量和一个设备条目数据结构;(4) 路径变量基于应用程序对协议的调用,仅分配一次。基于上述四种定义,协议中的各种数据应被定义为最合适的类型,被选定的数据结构应当基于这个变量如何被使用:是被协议状态机所使用,还是接口或是应用程序,例如,一个特定的网络接口芯片在内存中的基址就应定义为逻辑单位静态变量。5 函数如果你正开发不止一个协议栈,编写一系列通用的函数会有帮助,表1、表2描述了一些基于驱动程序的协议栈框架的数据和控制传输原语及参数。?参考文献1 Curt Schwaderer.A DriverBased Approach to Protocol Stack Design. Embedded Systems Programming,1999
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自体免疫性疾病研究体系
- 急诊创伤病人麻醉处理要点
- 2025年新高考数学一轮复习讲义:第九章统计与成对数据的统计分析(学生版)
- 2025年音乐版权运营案例分析:流媒体平台用户付费策略深度研究报告
- 基于2025年标准的学校体育馆建设初步设计抗震性能评估报告
- 房地产企业2025年财务风险管理策略与稳健经营路径研究优化优化优化优化报告
- 2025年森林生态系统服务功能评估在生态修复中的应用报告
- 2025年能源互联网背景下分布式能源交易策略研究报告
- 一番的意思4篇
- 书法培训班教学管理制度
- DZ∕T 0270-2014 地下水监测井建设规范
- DL-T5153-2014火力发电厂厂用电设计技术规程
- 内江市社区工作者考试题库可打印
- 2023-2024学年广西壮族自治区桂林市物理八下期末考试试题及答案解析
- (高清版)JTGT 3365-02-2020 公路涵洞设计规范
- 2024春期国开本科《混凝土结构设计原理》形考作业1至4试题及答案
- 融资租赁租金及IRR收益测算表
- 电大财务大数据分析编程作业2
- 很完整半导体制造工艺流程
- 建筑结构荷载规范DBJ-T 15-101-2022
- 通信线路工程(第二版)第8章通信线路工程施工安全
评论
0/150
提交评论