(计算机系统结构专业论文)基于linux的嵌入式系统实时通信技术研究.pdf_第1页
(计算机系统结构专业论文)基于linux的嵌入式系统实时通信技术研究.pdf_第2页
(计算机系统结构专业论文)基于linux的嵌入式系统实时通信技术研究.pdf_第3页
(计算机系统结构专业论文)基于linux的嵌入式系统实时通信技术研究.pdf_第4页
(计算机系统结构专业论文)基于linux的嵌入式系统实时通信技术研究.pdf_第5页
已阅读5页,还剩66页未读 继续免费阅读

(计算机系统结构专业论文)基于linux的嵌入式系统实时通信技术研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

山东大学硕士学位论文 摘要 嵌入式系统对实时性要求比较高,并且它的网络应用逐渐增多,因此, 提高嵌入式系统实时通信的能力就显得非常重要。l i n u x 是开源的操作系统, 它的内核可以根据用户的需求自由定制,这就为嵌入式系统的移植和改造提 供了良好的平台,所以本文的系统平台选择l i n u x 操作系统。 对于实时性要求比较高的嵌入式应用领域,传统t c p i p 协议栈的实时性 能并不能令人满意,它把大量的精力花在保证数据传送的可靠性以及数据流 量控制等细节上,使得代码量大、实时性低,并不适合在嵌入式系统中使用。 本文在全面分析现有t c p i p 协议栈的基础上,结合嵌入式系统资源有限、实 时性要求较高、规模可定制的特点,在不违反现有协议标准的原则下,对协 议栈的基本数据结构进行了修改,提出一个适用于嵌入式领域的轻型t c w i p 协议栈。重点讨论了i p 、i c m p 、u d p 和t c p 模块的设计和实现,并探讨了 协议栈的设计模式;减少数据拷贝次数;优化缓冲区、内存管理;以及增加 操作系统与协议栈的接口层等几个在设计阶段需要着重考虑的问题。 为了在通信量较大时仍能保证嵌入式系统具有良好的实时通信能力,必 须解决嵌入式系统通信中的拥塞控制问题,但是传统的拥塞控制算法并不能 完全满足嵌入式通信系统的实时性需求。因此本文从动态调节缓冲区大小和 基于二维表的数据包调度两方面给出了嵌入式系统t c p 拥塞控制改进算法。 动态缓冲区调节是指根据处于连接状态的t c p 连接中小连接的数量为各缓冲 区重新分配内存;基于二维表的数据包调度是在综合考虑数据包大小和紧迫 度的基础上,以数据包的大小和紧迫度建立二维坐标系,根据数据包在坐标 系中的位置确定其优先级,使体积小紧迫度高的数据包优先被调度。 然后搭建了一个实验测试平台,并通过两个实验方案测试改进后的嵌入 式系统实时通信性能,对协议栈移植前后得出的两组测试数据进行了分析, 并得出结论;通过对协议栈的改造以及嵌入式t c p 拥塞控制算法的改进,嵌 入式系统的实时通信能力得到有效提高。 最后,在总结全文的基础上,本文提出了若干今后有待进一步深入研究 和探讨的问题,并对今后的研究工作提出了一些建议。 关键词嵌入式系统;t c p i p 协议栈;实时通信;拥塞控制 山东大学硕士学位论文 a b s t r a c t t h ee m b e d d e ds y s t e mi t s e l fr e q u i r e sh i g hr e a l t i m ep e r f o r m a n c e ,a n di ti s u s e di nn e t w o r ks y s t e mm o r ea n dm o r ef r e q u e n t l y , s oi ti sv i t a lt oi m p r o v et h e e m b e d d e ds y s t e m sr e a l t i m ec o m m u n i c a t i o na b i l i t y l i n u xi sa no p e ns o u r c e o p e r a t i n gs y s t e m ,a n di t s k e m e lc a nb ec u s t o m i z e df r e e l ya c c o r d i n gt ou s e r s r e q u e s t t h e r e f o r e ,l i n u xp r o v i d e sa ne x c e l l e n tp l a t f o r mf o rt h ee m b e d d e ds y s t e m t ob et r a n s p l a n t e da n dm o d i f i e d s ow ed oo u rw o r ki nl i n u xo p e r a t i n gs y s t e m i nt h ef i e l do fe m b e d d e da p p l i c a t i o nw h i c hn e e d sh i g hr e a l t i m ea b i l i t y , t h e r e a l t i m ep e r f o r m a n c eo ft r a d i t i o n a lt c p i ps t a c kc a n ts a t i s f yu sv e r ym u c h , b e c a u s et r a d i t i o n a lt c p i ps t a c kc o n c e n t r a t e so nd e t a i l ss u c ha st h er e l i a b i l i t yo f d a t at r a n s m i s s i o n d a t af l o wc o n t r o la n ds oo n t r a d i t i o n a lt c p i ps t a c kh a sa g r e a tn u m b e ro fc o d ea n dp o o rr e a l t i m ep e r f o r m a n c e ,t h e r e f o r e ,i td o e s n ta d a p t t ou s ei ne m b e d d e ds y s t e m i nt h i sp a p e r , w em o d i f yt h em a i nd a t as t r u c t u r eo f 1 c p 艘s t a c ka n db r i n gu pal i g h te m b e d d e dt c p i ps t a c kw i t h o u tg o i n ga g a i n s t t h ee x i s t e dp r o t o c o ls t a n d a r d t h em o d u l e so ft c p 、i c m p 、u d pa n dt c pa r e e m p h a s i z e d t h e nt h ep a p e rd i s c u s s e ss o m eq u e s t i o n st h a ts h o u l db ec o n s i d e r e d c a r e f u l l y ,s u c ha st h ed e s i g nm o d eo ft c p i ps t a c k ;d e c r e a s i n gt h et i m e so fd a t a c o p y ;o p t i m i z i n gt h em a n a g e m e n to fb u f f e ra n dm e m o r y ;p u t i n gf o r w o r d a n i n t e r f a c el a y e rb e t w e e no sa n dt h es t a c k i no r d e rt oa s s u r et h ee m b e d d e ds y s t e mt ok e e ph i g hr e a l t i m ep e r f o r m a n c e w h e nc o m m u n i c a t i o nf l o wi n c r e a s i n g ,w es h o u l dc o n s i d e rc a r e f u l l yc o n g e s t i o n c o n t r o li ne m b e d d e dc o m m u n i c a t i o ns y s t e m h o w e v e r , t r a d i t i o n a lc o n g e s t i o n c o n t r o la l g o r i t h mi sn o ts u i t a b l ef o re m b e d d e dc o m m u n i c a t i o ns y s t e m t h u st l l i s t h e s i sg i v e sam o d i f i e ds c h e m ef o rc o n g e s t i o nc o n t r o la l g o r i t h mi nt w oa s p e c t s , o n ei sa d j u s t i n gt h eb u f f e rd y n a m i c a l l y , t h eo t h e ri sd a t ad i s p a t c h i n gb a s e do n t w o - d i m e n s i o n a lt a b l e a d j u s t i n gt h eb u f f e rd y n a m i c a l l yr e f e r st od i s p a t c h i n gt h e m e m o r ya c c o r d i n gt ot h eq u a n t i t yo fs m a l lt c pc o n n e c t i o n s ;d a t ad i s p a t c h i n g b a s e do nt w o d i m e n s i o n a lt a b l ei sc a l c u l a t i n gt h ep r i o r i t yo fd a t ap a c k e ti nt e r mo f i t ss i z ea n di m p o r t a n c et h r o u g hat w o d i m e n s i o n a it a b l e t h em e t h o do fd a t a d i s p a t c h i n gi st of i s s u r et h es m a l la n di m p o r t a n td a t ap a c k e tc a l lb ed i s p a t c h e d p r e f e r e n t i a l l y t h ep a p e rc o n s t r u c t sat e s tp l a t f o r m , a n dd e s i g n st w os c h e m e st ot e s tt h e m o d u l e so f l p 、i c m p 、t c p 、u d pa n dt h em o d i f i e de m b e d d e dc o n g e s t i o nc o n t r o l a l g o r i t h m a f t e ra n a l y z i n gt h ee x p e r i m e n t a ld a t a ,w ec a ng e tt h ec o n c l u s i o n :t h e r e a l - t i m ec o m m u n i c a t i o nc a p a b i l i t yo fe m b e d d e ds y s t e mi se n h a n c e dr e m a r k a b l y w i t ht h em o d i f i e dt c p i ps t a c ka n de m b e d d e dc o n g e s t i o nc o n t r o la l g o r i t h m 1 1 山东大学硕士学位论文 f i n a l l y , o nt h eb a s i so ft h es u m m a r i z a t i o no ft h er e s e a r c hw o r k ,s o m e p r o b l e m sw h i c hs h o u l db ed i s c u s s e dd e e p l ya r ep u tf o r w a r d t h ep a p e rg i v e ss o m e s u g g e s t i o n sf o rt h ef u r t h e rr e s e a r c ha sw e l l k e yw o r d s e m b e d d e ds y s t e m ;t c p i ps t a c k ;r e a l t i m ec o m m u n i c a t i o n ; c o n g e s t i o nc o n t r o l i i i 原创性声明和关于论文使用授权的说明 原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进 行研究所取得的成果。除文中已经注明引用的内容外,本论文不包含任何 其他个人或集体己经发表或撰写过的科研成果。对本文的研究做出重要贡 献的个人和集体,均己在文中以明确方式标明。本声明的法律责任由本人 承担。 论文作者签名: 立啦日期:趔 关于学位论文使用授权的声明 本人完全了解山东大学有关保留、使用学位论文的规定,同意学校保 留或向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅 和借阅;本人授权山东大学可以将本学位论文的全部或部分内容编入有关 数据库进行检索,可以采用影印、缩印或其他复制手段保存论文和汇编本 学位论文。 ( 保密论文在解密后应遵守此规定) 论文作者签名:亟址拿导师签础 曰期:燮羔 山东大学硕士学位论文 第一章基于l in u x 的嵌入式系统概述 1 1 嵌入式系统概念及特点 随着计算机技术、微电子技术和网络技术、软件技术的不断发展,主流 的计算机技术已经进入后p c 时代,后p c 时代是指非p c 信息设备大显神通 的时代。以信息家电为代表的嵌入式系统,正是非p c 信息设备的主体,它应 用广泛、领域特色突出,发展空间很大。【1 1 嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可剪裁, 符合应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机 系统。与通用计算机不同,嵌入式系统是针对具体应用的专用系统,一般具有 成本敏感性。其硬件和软件都必须进行高效率的设计,量体裁衣、去除冗余, 力争在同样的硅片面积上实现更高的性能。好的嵌入式系统是完成目标功能 的最小系统,这样的产品才更具有竞争力。 2 1 1 2 嵌入式lj n u x 操作系统发展现状与面临的问题 嵌入式l i n u x ( e m b e d d e dl i n t t x ) 是指对l i n u x 经过小型化剪裁后,能够固 化在容量只有几十万字节或几十亿字节的存储器芯片或单片机中,应用于特 定嵌入式场合的专用l i n u x 操作系统。1 2 1 目前各种嵌入式l i n u x 操作系统正在 迅速发展,已经形成了能与w i n d o w s c e 等嵌入式操作系统进行有力竞争的局 面。嵌入式l i n u x 操作系统的迅速崛起,主要由于l i n u x 自身具有的优良特性: 开放源代码,丰富的软件资源,由于有g p l 的控制,新的版本大都能向上兼 容:功能强大的内核,性能高效、稳定、多任务;支持x 8 6 、a r m 、m i p s 、 a l p h a 、s p a r c 等多种体系结构;完善的网络通信、图形和文件管理机制, 支持大量的周边硬件设备,驱动丰富;内核的大小和功能都可定制;支持嵌 入式系统特有的接口和设备。嵌入式l i n u x 也存在不足:l i n u x 是一个分时操 作系统,用在嵌入式系统上实时性不高,特别是缺乏对硬实时任务的处理机 制,体积过大,低版本的内核有最大进程数和最小内存的限制。 当前较为成熟的嵌入式l i n u x 产品不断涌现,如r t - l i n u x 、e m b e d i x 、 u c l i n u x 等。嵌入式l i n u x 也面临着挑战。目前除了一些传统的l i n u x 公司, 向r e d h a t 、v al i n u x 等正在从事嵌入式l i n u x 的研究之外,一批新公司( 如 l i n e o ,t i m e s y s 等) 和一些传统的大公司( 如i b m 、s g i 、m o t o r o l a 、i n t e l 等) 山东大学硕士学位论文 以及一些开发专有嵌入式操作系统的公司( 如l y n x ) 也正在进行嵌入式l i n u x 的研究和开发。但就目前的技术而言,嵌入式l i n u x 的研究成果与市场的真正 需求还有一段差距。因此,要开发出真正成熟的嵌入式l i n u x ,还需要从以下 几个方面进行努力: ( 1 ) 扩展l i n u x 的实时性能 高实时性是嵌入式操作系统的基本要求。由于l i n u x 是一种通用操作系 统,而不是一个真正的实时操作系统,内核不支持事件优先级和抢占实时特 性。所以,在开发嵌入式l i n u x 的过程中,首要问题是扩展l i n u x 的实时性誊。 一般来说,对l i n u x 实时性的扩展可以从两方面进行:向外扩展和向上扩展。 、 。 向外扩展是从范围上扩展,让实时系统支持的范围更广、设备更多,向上扩 、。 展是扩充l i n u x 内核的实时处理和控制系统功能。 ( 2 ) 改变l i n u x 内核的体系结构 l i n u x 的内核体系采用的是m o n o l i t h i c ,在这种体系结构中,内核的所有 部分都集中在一起,而且所有的部件在一起编译连接。这样虽然能使系统的 各部分直接沟通,有效地缩短任务之间的切换时间,提高了系统的响应速度, 实时性好并提高了c p u 的利用率,但在系统比较大的时候体积也比较大,与嵌 入式系统容量小、资源有限的特点不符合。而另外一种内核体系结构 m i c r o k e r n e l ,在内核中只包括了一些基本的内核功能如创建和删除任务、任 务调度、内存管理和中断处理等部分,而文件系统、网络协议栈等部分都是 在用户内存空间运行。这种结构虽然执行效率不如m o n o l i t h i c 内核,但大大 减小了内核的体积,同时也极大地方便了整个系统的升级、维护和移植,因 此更能满足嵌入式系统的特点需要为使嵌入式l i n u x 的应用更加广泛,可以 考虑将l i n u x 目前的m o n o l i t h i c 内核结构中的部分结构改造成m i c r o k e r n e l 体 系结构。通过这种折衷的办法,可以使得到的l i n u x 既具有很好的实时性,又 能满足嵌入式系统体积小的要求。 ( 3 ) 完善l i n u x 的集成开发环境 提供完整的集成开发环境是每一个嵌入式系统开发人员所期待的。一个 完整的嵌入式系统的集成开发环境一般需要提供的工具是编译连接器、内核 调试跟踪器和集成图形界面开发平台。其中的集成图形界面开发平台包括编 辑器、调试器、软件仿真器和监视器等。在l i n u x 系统中,具有功能强大的g c c 编译器工具链,使用了基于g n u 的调试器g d b 的远程调试功能,一般由一台客 户机运行调试程序调试宿主机运行的操作系统内核;在使用远程开发时还可 山东大学硕士学位论文 以使用交叉平台的方式,如在w i n d o w s 平台下的调试跟踪器对l i n u x 的宿主系 统做调试。但是,l i n u x 在基于图形界面的特定系统定制平台的研究上,与 w i n d o w s 操作系统相比还存在差距。因此,要使嵌入式l i n u x 在嵌入式操作系 统领域中的优势更加明显,整体集成开发环境还有待提高和完善。 1 3 嵌入式网络协议栈 计算机网络的快速发展,为信息资源的共享,分布式计算的实现提供了 条件和手段。国际标准化组织( i s o ) 为计算机的互连制定了相应的标准:开放 互连标准( o s i ) 。o s i 有7 层构架,从物理层到应用层都有明确的协议规定,但 到现在为止,真正基于o s i 标准而实现的网络产品( 包括软件和硬件) 还无法令 人满意。 同时,另一个网络协议t c p i p ( t r a n s m i s s i o nc o n t r o lp r o t o c o l i n t e r n e tp r o t o c 0 1 ) 提供了较完善的网络互连功能。虽然不同厂家生产的各 种型号计算机运行完全不同的操作系统,但t c p i p 协议栈允许它们互相进行 通信。它现己成为应用最广泛的网络协议。 嵌入式网络协议栈是指嵌入式通信网络中网络层与各层相联系的协议。 可以将嵌入式通信网络看作一系列垂直的功能层,最顶层表示应用程序和网 络软件的接口,最底层表示网络软件和网络物理设备的接口为了和网络通 信,应用程序必须从上到下,通过协议栈传递数据。网络接着将信息从下到 上通过协议栈传递,并与应用程序进行通信。【2 5 】 1 4 嵌入式系统的实时性需求,以及改进嵌入式t c p i l p 协议 栈的必要性 嵌入式系统的实时性需求主要表现在:嵌入式系统首先是一个实时系统, 它具有实时系统的根本特点,即能够确定地响应异步事件。嵌入式实时性是 指:系统响应外界不定事件不仅要快( 系统响应时间一般要求在毫秒或微秒 级) ,而且要确定,即系统响应时间要求是确定的和可预测的。作为嵌入式 系统重要组成部分的网络协议t c p i p 协议,如果不能达到实时性要求,在 它管理控制下传输的数据将是无用的甚至是有害的,有时可能导致整个系统 工作的错误,它的实时性直接决定了整个系统的实时性所以嵌入式t c p i p 山东大学硕士学位论文 协议栈需要具有很高的实时性。 为了适应嵌入式分布处理和网络连接的需求,面向2 l 世纪的嵌入式系统 要求配备标准的一种或多种网络通信接口。针对外部联网要求,嵌入式设备 必须配置e t h e n e t 网口,相应的需要t c p i p 协议软件支持。但是传统的t c p i p 协议在实时性方面做的不够好,而是把大量的精力花在保证数据传送的可靠 性及数据的流量控制上。而在实时性要求比较高的嵌入式领域,传统的t c p i p 并不能满足其实时要求。另外,传统的t c p i p 的实现过于复杂,需要大量系 统资源,而嵌入式系统的资源往往十分有限。1 3 1 因此,为嵌入式系统联网提供支持的t c p i p 协议,为了满足嵌入式系统 实时、资源有限和规模可定制的特点,应具有很好的实时性和一定的可剪裁 性,并且代码要尽可能精简。 基于以上考虑,有必要把传统t c p i p 在不违背协议标准的前提下加以改 进并实现,使其实时性得到提高,并且对协议进行适当剪裁使其占用的存储 空间尽可能减少,从而满足嵌入式应用的要求。 山东大学硕士学位论文 第二章嵌入式t c p ip 协议栈总体框架及设计过程中需要 考虑的问题 2 1 嵌入式t c p l p 协议栈总体框架 1 p i p 协议 i 应用程序 l ii 、一 l p 。 ii 应用 1 j s 咖接口 i t c p u d p l 协谚 i 嘞议回 i l 网燃口回j t 。 i 黼i 糯妻l 卜台 。 嵌入式操作系统内核 图2 - 1 嵌入式t c p i p 协议栈框架图 2 2 协议栈的设计模式以及各层协议之间的关系 心 t c p i p 协议族是分层设计的,每层协议解决网络通信中的不同问题。分 层设计思想可以为设计实现协议提供依据,在分层设计思想中各协议与其他 协议互不相同。采用严格分层的思想使不同层进行通信时会使系统的总体性 能有所降低。为了解决这一问题,协议的某些内部因素应该被其他协议所知, 特别需要注意的是,重要的信息在各层间共享。 大部分t c p i p 的实现严格区分应用层和底层协议,然而底层协议或多或 少存在相互交错的情况。在大部分操作系统中,底层协议做为操作系统内核的 山东大学硕士学位论文 一部分,通过入口点与应用程序进行通信。应用程序并不需要了解t c p i p 的 实现,网络通信与内部进程间通信和文件i o 传输的差距并不大。这意味着 应用程序并不了解底层协议的缓冲区机制,因此它并不能使用这些信息并且 利用这些数掘重新使用缓冲区。同时,当应用程序发送数据时,数掘先从应 用程序进程存储空间发送到内部缓冲区,然后才被网络通信程序处理。【1 4 1 同大多数t c p i p 协议栈一样,本设计也使用分层协议设计。协议栈分成 不同的模块,各协议之间的通信使用由- 4 , 部分函数实现的入口点。各协议 是独立实现的,为了提高进程的处理速度和内存的使用效率,有些层在设计 上并不完全分离。例如,当对t c p 报文段进行操作时,t c p 模块必须知道报文 段的源i p 地址和目的i p 地址。与传统的通过调用函数传递地址不同,t c p 模 块可以自动打开i p 头,解析其中的信息。 t c p i p 协议栈的设计模式一般有几种方式: ( 1 ) 协议栈的每一层都是一个单独的进程。链路层、i p 层、t c p 层分别隶属 于不同的进程。这样的好处是协议栈的每一层都十分清晰,代码的调试 和理解都非常容易。但是最大的缺点是数据跨层传递时会引起上下文切 换( c o n t e x ts w i t c h ) 对于接收一个t c p 段要引起3 次上下文切换( 从 网卡驱动程序到链路层进程,从链路层进程到i p 层进程,从i p 层进程到 t c p 层进程) 通常对于操作系统来说,任务切换比较浪费对间,大量的 上下文切换非常占用系统资源。 ( 2 ) 另外一种方式是t c p i p 协议栈存在于操作系统内核中应用程序通过 操作系统的系统调用( s y s t e mc a t l ) 与协议栈通信。这种模式的缺点是: t c p i p 协议栈必须用于特定的操作系统内核1 1 4 1 ( 3 ) 所有t c p i p 协议栈都在一个进程中,这样t c p i p 协议栈就和操作系统 内核分开了;而应用层程序既可以是单独的进程也可以驻留在t c p i p 进程中。本设计采用这种模式。如果应用层程序驻留在t c p i p 进程中, 则应用层程序就通过内部回调函数( r a wa p i ) 和t c p i p 协议栈通信。对 于嵌入式操作系统来说进程是一个系统任务,整个t c p i p 协议栈都在 同一个任务( t e p i p 线程) 中。应用层程序既可以是独立的任务( 如图中 的t f t p 线程,t c p e c h o 线程) ,也可以在t c p i p 线程中( 如图左上角) 中 利用内部回调函数接口( r a wa p i ) 和t c p i p 协议栈通信。 山东大学硕士学位论文 图2 2 嵌入式t c p i p 协议栈设计模式 2 3 通过减少数据拷贝的次数来增强通信的实时性 t c p i p 协议分层实现,各协议层的数掘格式均不相同。发送数据时,各 协议层从上层协议层接收数据,然后加上本层的协议头后发送到下层协议, 这个过程叫数据的打包各层协议的协议头只有其他主机上的同层协议才能 解释;接收数据时,各协议层从下层协议接收数据,然后取出本层的协议头 再把剩余部分数据交给上层协议,这个过程叫拆包。用户数据在从本地主机 传输到远程主机的过程中,需要不断的拆包和打包。如果在拆包和打包的过 程中各协议间都需要通过数据拷贝进行数据传递,将大大增加系统的存储和 山东大学硕士学位论文 数据处理的开销,从而降低系统的实时性。1 2 2 1 协议栈模块 区 图2 3 “零拷贝”示意图 为了解决这一矛盾,某些产品采用“零拷贝”技术,所谓“零拷贝”技 术( z e r o c o p y ) 的基本思想是:数据报从网络设备到用户程序空间传递的过 程中,减少数据拷贝次数,减少系统调用,实现c p u 的零参与,彻底消除c p u 在这方面的负载。实现“零拷贝”用到的最主要技术是d m a 数据传输技术和 内存区域映射技术。传统的网络数据报处理,需要经过网络设备到操作系统 内存空间,系统内存空间到用户应用程序空间这两次拷贝,同时还需要经历 用户向系统发出的系统调用。而“零拷贝”技术则首先利用d m a 技术将网络 数据报直接传递到系统内核预先分配的地址空间中,避免c p u 的参与;同时, 将系统内核中存储数掘报的内存区域映射到检测程序的应用程序空间( 还有 一种方式是在用户空间建立缓存,并将其映射到内核空间,类似于l i n u x 系 统下的m o b u f 技术) ,检测程序直接对这块内存进行访问,从而减少了系统 内核向用户空问的内存拷贝,同时减少了系统调用的开销,实现了真正的“零 拷贝”。使用“零拷贝”技术时,t c p i p 协议栈没有用于各层间数据传递的 山东大学硕士学位论文 缓冲区,协议栈之间传递的是指针,只有当数据最终被驱动程序发送出去或 是被应用程序取走时,才进彳于真j 下的数据拷贝。 “零拷贝”技术的优点在于减少了数掘拷贝的次数,存储开销小,提高 了系统的整体性能。基于以上特点,“零拷贝”技术比较适合嵌入式系统的通 信。但“零拷贝”也存在不足:全部的数据操作都在用户程序空间完成,使 得整个数据传输过程始终占用用户程序空间,当数据传输量非常大时可能造 成用户空间的溢出。考虑到这个原因,本设计采用折衷的“一次数据拷贝” 技术。“一次数据拷贝”是指数据在t c p i p 协议栈传输时,进行一次数据拷 贝。应用程序发送数据时,首先把数据交给t c p i p 协议栈,协议栈首先把数 据装入协议缓冲区,同时释放用户数据缓冲区空间,然后在t c p i p 协议栈内 部采用“零拷贝”技术处理数据。“一次拷贝”的优势在于用户空间不会长时 间被占用,弥补了“零拷贝”的不足,并且系统的实时通信性能又得到加强。 协议栈模块 一t “在各协议层之同只传递ps t a c k d s t a 指针,不复制数据 第2 膳协议卜_ i 生成第n 层协议的协议报文头p 2 第l 层协议卜- 一生成第n 层协议的协议报文头p 从第n l 层协议到第1 层协议,在协议栈空间缓 冲区数据前加上鲁层坍议头。不需复制数据 图2 - 4 “一次拷贝”示意图 进行数据拷贝 不进行数据拷贝 山东大学硕士学位论文 2 4 增加操作系统接口层以便于协议栈的移植 为了使协议栈便于移植,在本设计中增加了操作系统接口层。操作系统 的特定函数调用和数掘结构并不直接用于代码中,而是存放于操作系统接口 层。操作系统接口层为诸如定时器、进程同步和消息传递机制这样的操作系 统服务程序提供统一接口,这样做的好处是便于移植。进行协议栈的移植时, 只需要在操作系统内核上实现一个操作系统接口层,这样做大大减轻了移植 的工作量。 操作系统接口层提供了t c p 中使用的定时器功能。当发生超时时,操作 系统接口层提供了粒度为2 0 0 毫秒的定时器。操作系统接口层提供的同步机 制只有信号量机制,即使底层操作系统不支持信号量,它仍然可以使用条件 变量和锁机制。消息传递是通过一个简单的称为邮箱的机制实现的。一个邮 箱有两个操作:发邮件和取邮件。发邮件操作并不锁住进程,进入邮件队列的 消息由操作系统接口层进行排队,直到另外一个进程把消息取走。即使底层 的操作系统不支持邮件机制,它仍可以很容易的使用信号量机制。 2 5 协议栈缓冲区的设计及实现 2 5 1 已有的缓冲区设计方案 输入的分组必须被保存在内存中,并将其传递给适当的协议软件做进一 步处理。同时,应用程序产生的输出数据也必须以分组的形式存储在内存中, 并将其交由网络硬件设备传递出去。因此,网络接口层接收内存中待输出的 数据,并把将要传递给上层协议软件的输入数据放入内存中。协议软件的有 效性最终取决于如何管理用以保存这些分组的存储器。优秀的设计要做到快 速分配存储空间,并且避免分组在各层协议软件之间移动时的数据复制。 理论上,系统可以将内存划分为大小固定的缓冲区,并使每个缓冲区都 大得足以保存一个分组,以达到有效地分配内存空间的目的。然而在实际中, 由于以下几个原因使得选择缓冲区的最佳大小变得复杂第一,一台计算机 可能与几个网络互连,而每个网络都有各自不同的最大分组长度限制。另外, 它应该在不改变系统缓冲区大小的情况下,能够与其它新类型的网络建立连 接第二,i p 协议软件有可能要保存比底层网络分组更大的数据报。第三, 山东大学硕士学位论文 应用程序可能会发送或接收任意长度的信息。 ( 1 ) 大缓冲区方案 似乎最理想的解决办法是将缓冲区划分得足够大,能够存储最长的有效 信息或分组。但是,由于i p 数据报可能有6 4 k 个八位组长,倘若使缓冲区大 得足以容纳任意长度的数据报,有效内存空间根本划分不了一个缓冲区就会 被耗尽。另外,短小的分组才是常规的,长数据报并不常见。因此,使用大 缓冲区将会导致内存空间的实际使用率很低,与此同时系统却没有足够多的 缓冲区以满足通信量的需求。 ( 2 ) 链表方案( m b u f ) 除了大缓冲区方案之外,主要还可以采用将较小缓冲区以链表的形式连 接起来,以处理任意长度的数据报。在链表设计方案中,表中的缓冲区既可 以是大小固定的,也可以是不固定的。大多数系统分配大小固定的缓冲区, 因为这样做可以杜绝内存碎片,并保证内存的高利用率。通常,每个缓冲区 都很小( 1 1 2 8 k 字节) ,一个完整的数据报需要许多个连接在一起的缓冲区保 存。 例如b e r k e l e yu n i x 使用一种名为m b u f 结构的连接,其中每个m b u f 为 1 2 8 字节长。每个m b u f 本身不必写满,它具有一个短小的首部,指出数据从 何处开始,以及一共多少字节。 允许链表中的每个缓冲区包含部分数据还具有其它一些优点:它允许快 速封装而无需复制操作。当某一层的软件收到上一层协议发送来的信息后, 就分配一个新的缓冲区,填写其中的首部信息,并将新缓冲区插入在保存此 信息的链接列表中。这样,附加的字节就可以很容易的插在某个信息的前面, 而无需移动已存在的数据。【6 】 2 5 2 基于三种模式的嵌入式协议栈缓冲区的设计 在小型系统中使用的操作系统( 如嵌入式操作系统) 的内核和应用程序进 程之间并没有严格的界限,这就需要在应用程序和底层协议之间使用一种更 加灵活的通信方式一共享内存方式特别需要指出的是,应用程序层应该了 解底层协议的缓冲区处理机制。因此,应用程序可以更有效的重新使用缓冲 区。同样,应用程序进程可以与网络通信程序使用同一块存储空间,因此应 用程序可以直接读写内部缓冲区,这样做可以节约用于数据拷贝而浪费的时 山东大学硕士学位论文 间,从而可以较大程度的提高系统实时通信的能力。 通信系统中的内存和缓冲区管理系统必须提供不同大小的缓冲区,缓冲 区大小的范围从几百字节能够容纳整个t c p 报文段到只有几个字节能够容纳 很短的i c m p 应答。同样,为了防止不必要的数据拷贝,应该使缓冲区中的 数据存放在不用网络子系统管理的内存区域( 比如应用程序内存和r o m ) 中。 本协议栈的设计使用p k t b u f 结构作为整个网络协议栈的核心数据结构, 它可以用来存放报文。t c p i p 各层对于报文的处理均以p k t b u f 为操作对象, 将协议层使用的缓冲区统一进行管理。 p k t b u f 的数据结构定义为: s t r u e tp k t b u f s t r u c tp k t b u f * p r e y ; 严指向上一个p k t b u f 结构+ s t r u e tp k t b u f * n e x t ; ,指向下一个p k t b u f 结构, i n tf l a g ;p 缓冲区类型标志, i n tc o u n t ;,当计数值降至0 时,意味着缓冲区中没有数据。此时需要释放缓冲区, v o i d * p _ d a t a ;产指向p k t b u f 结构中的有效数据部分, s h o r ts u m _ l e n ;,记录p k t b u f 链中的有效数据的总长度, s h o r tl e n ; 该p k t b u f t 鬟j 有效数据的长度+ ,) ; 为了增强协议栈使用存储空间的灵活性、提高嵌入式网络传输的实时性 能,设计缓冲区时在原有p k t b u f 结构的基础上把缓冲区分为三种类型,分别 是: ( 1 ) p k t b u f r a m n u l l 图2 - 5p k t b u fr a m 结构图 。 q 山东大学硕士学位论文 当数掘报文比较大,并且紧迫性比较高时,在内存中分配一个连续的空 问存储该报文,此时报文的处理速度比较快。 ( 2 ) p k t b u fr o m 当报文比较大并且紧迫度不高时,在r o m 中为报文开辟一段存储空间, 但是,该报文的一些基本信息仍然存储在内存中,并且在内存中需要声明一 个伪p k t b u f 结构,用来从内存空间快速定位r o m 中的报文。这样处理的好处 是有效节省内存空间,使内存可以及时处理更紧急的报文。在分配r o m 类型 的缓冲区时,只需要在内存中为其分配一段内存空间来保存p k t b u f 的基本信 息,有效数据在使用时写入r o m 。 n u l l 图2 - 6p k t b u f j t o m 结构图 ( 3 ) p k t b u f _ c h a i n 有些报文是分片传送的,这些分片传送的报文体积往往比较小,如果使 用p k t b u f _ r a m 结构或p k t b u f _ r o m 结构,那么在重组这些报文碎片时需要对 每一个报文片都进行定位,这样处理效率很低因此有必要引入种链式的 p k t b u f 结构 - - p k t b u f c h a i n 。该结构一次性从内存中申请一段空间,并且为 每个p k t b u f 分配固定大小的存储空间。 巳怕! p r e yp r e y n e 】c t舱x tn e x t p _ d a t a p _ d a t ap _ d a t a i o l l i e n j l o t l t e ns u m 生n s “堕 日a a ! 妁g u n tc o t ) n t r a m 誓: r a m :; r a m :,_ 一:; : : :| :。;: 薹誊誊薹i : :。: :d a t a ;争 i ;:d a t a : j :毫量曩j 矗:警:曩0 ;“ :。: 图2 7p k t b u f _ c h a i n 结构图 山东大学硕士学位论文 三种不同类型的缓冲区之所以采用相同的p k t b u f 结构,是为了操作方便, 设置相同的p k t b u f 数掘结构使得很多函数在设计时变得更加简洁、短小。 2 5 3 基于三种模式的嵌入式协议栈缓冲区的实现 p k t b u f 的相关函数: 、 ( 1 ) s t r u c tp k t b u f + p k t b u f _ a l l o c ( p r o t o c o lp t l n a m e ,s h o r ts i z e ,p k t b u f - n a g f l a g ) 函数功能说明:为各层协议分配p k t b u f 缓冲区,存储空间的大小由协议层 事先定义好的参数决定,缓冲区的类型由缓冲区类型标志f l a g 决定。因为该函 数可以分配三种不同类型的缓冲区,所以实现起来比较复杂。 该函数的流程图为: 囱 图2 8p k t b u f _ a ii o c 0 流程图 补充说明:生成个p k t b u f - c h a i n 结构时,先为p k t b u f 链分配一段连续的 内存空间,链中p k t b u 珀q 数量以及每个p k t b u 珀g 大小由事先定义好的参数指定, 山东大学硕士学位论文 然后建立各p k t b u f 之间的n e x t ,p r e y 指针,形成链式结构。 在内存 为p k t b u l = - c h a i n 丌出一段存储空间之后,需要对其进行初始化, 其主要代码如下所示: p = p k t b u f _ c h a i n ;* 将该链表的首指针赋给p * p - p r e v = n u l l ;初始化头节点的指针+ f o r ( i40 ;i n e x t2 ( s t r u c tp k t b u f ) ( ( i n t + ) p + p k t b u f _ c h a i n p u f s i z e + s i z e o f f s t r u c t p k t b u t ) ) ; p - l e n2p - s u m _ l e n2p k t b u f _ c h a i n _ b u f s i z e ; p - p _ d a t a = m e m _ a l i g n ( ( v o i d ) ( ( i n t ) p + s i z e o f ( s t r u c tp k t b u o ) ) ; 严为缓冲区中的数据申请存储空间, q 2 p ; p 2p - n e x t ; p - p r e v - - - q ; q - n e x t = n u l l ;l * 令链尾的指针指向空+ , ( 2 ) p k t b u f _ r e a l l o c ( s t r u e tp k t b u f + p ,s h o r ts i z e ) 函数功能说明:为原缓冲区增加

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论