基于VxWorks的软件开发平台内存管理模块的设计与实现.pdf

上传人:qwe****56 文档编号:74642923 上传时间:2023-02-27 格式:PDF 页数:6 大小:346.02KB
返回 下载 相关 举报
基于VxWorks的软件开发平台内存管理模块的设计与实现.pdf_第1页
第1页 / 共6页
基于VxWorks的软件开发平台内存管理模块的设计与实现.pdf_第2页
第2页 / 共6页
点击查看更多>>
资源描述

《基于VxWorks的软件开发平台内存管理模块的设计与实现.pdf》由会员分享,可在线阅读,更多相关《基于VxWorks的软件开发平台内存管理模块的设计与实现.pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第2 l 卷第3 期2 0 0 8 年9 月海南师范大学学报(自然科学版)J o u r n a lo fH a i n a nN o r m a lU n i v e r s i t y(N a t u r a lS c i e n c e)V 0 1 2 1N o 3S e p 2 0 0 8基于V x W o r k s 的软件开发平台内存管理模块的设计与实现贺冰琰,洪联系(集美大学计算机工程学院,福建厦f-3 6 1 0 2 1)摘要:因V x W o r k s 自身提供的内存管理函数采用f i r s t-f i t 算法,不能满足通信应用领域软件对内存管理的高实时性和内存利用率的

2、要求为了解决该问题,基于V x W o r k s 软件开发平台给出新的内存管理实现方法:采用两套完全独立的内存池集进程通信内存池集和应用内存池集,平台直接管理内存。为整个系统提供高效的动态内存管理机制,使新定义的内存管理模块更适合通信产品应用领域的嵌入式软件开发关键词:嵌入式操作系统:操作系统封装层:内存管理;V x W o r k s中图分类号:r I P3 1 1文献标识码:A文章编号:1 6 7 1 8 7 4 7(2 0 0 8)0 3 0 2 6 8 0 5目前,嵌入式软件在软件业中的比重正逐渐加大,所使用的操作系统一般是嵌入式实时多任务操作系统嵌人式系统的硬件环境多样性、硬软件紧

3、密耦合性及严格的实时性等特点决定了所使用的操作系统不可能象U N I X,W I N D O W S 等通用操作系统那样具有方方面面较强的功能这使得针对特定领域的应用对选用的嵌入式操作系统进行再封装成为必要所谓嵌入式操作系统的封装是指为了能缩短特定领域的嵌入式系统软件的开发周期,增强嵌入式操作系统功能和实现嵌入式程序的可移植性、可维护性和代码继承性而对所使用的特定嵌入式操作系统的再“加工”u 1 嵌入式操作系统封装层的目的之一是对上层应用屏蔽底层硬件、O S、网络的差别,给上层应用软件提供统一规范的调用接口,大大降低了应用软件开发人员的开发难度,也使开发出的应用软件有较好的跨平台性、可移植性、

4、可维护性和代码继承性而本文提到的软件开发平台完成了对嵌入式操作系统的封装封装层位于嵌入式操作系统与应用程序之间,封装层一般会对进程调度、内存分配等核心功能进行重新定义和优化以适应特定应用领域的开发需求下面以通信类嵌入式设备应用领域为背景来讨论该平台内存管理模块设计方案和实现1 内存分配子模块设计V x W o r k s 自身提供的内存管理函数采用f i r s t-f i t 算法 2 3 该算法在搜索可用的内存块时,从空闲队列头开始进行搜索,当找到第一个空间足够的空闲内存块时,即将该空闲块分配给其使用,剩余部分重新加入空闲队列这种算法不适用于通信系统采用f i r s t f i t 算法

5、,一是内存分配的实时性得不到保证。具体的搜索时间和已分配的内存块个数成O(N)的关系,二是会产生内存碎片对于长期运行、实时性要求高的系统,必须自己对内存进行管理内存管理模块主要由内存分配和内存保护两个相互独立的子模块组成,图收稿1 5 1 期:2 0 0 8 0 5 2 8基金项目:福建省教育厅2 0 0 7 年第一批B 类科技项目0 8 0 7 1 3 2)万方数据第3 期贺冰琰等:基于V x W o r k s 的软件开发平台内存管理模块的设计与实现2 6 91 是本模块在平台中的位置内存分配子模块按用途,可以分为如下三个部分:1)进程通信使用内存(消息构造时由通信模块为消息分配内存空间,

6、消息处理完毕,由调度模块释放占用的内存空间);2)上层应用使用内存;3)全局内存分配(只在初始化的时候使用,一般的应用场合不使用)内存保护子模块包括三个部分,1)U B(U s e rB u f f e r)保护;2)进程栈和私有数据区的保护;3)全局变量的保护,需要应用配合完成内存分配子模块主要实现对堆的动态申请和释放,它给上层应用提供两类接口:一个用于申请内存,一个用于释放内存内存分配子模块的设计目标是保证动态申请内存和释放内存的实时性,将内存碎片限制在可控的范围之内内存分配子模块基于内存池集机制(3 对不同的应用场合,使用不同的内存池集平台使用两套完全独立的内存池集,即进程通信内存池集和

7、应用内存池集进程通信内存池集为进程间通信提供内存申请支持,这是平台内部自己使用的内存池集,不对外开放应用内存池集为上层应用提供高效的动态内存申请机制每个内存池集被分成若干个内存池,每个内存池包含相等数目的内存块和内存头,同一内存池中的内存块尺寸相同内存池由循环队列进行管理。以达到实时性内存块的尺寸的最小单位为U B(目前定为,内存块的尺寸从6 4 字节按2 的倍数增长,其大小没有限制内存块个数可以_ S P A N6 4)根据应用需要在文件中自行配置引入循环队列可以加快内存块的申请和释放除去信号量等待的情况,每次申请内存块的时间是一样的上层应用如果需要使用到内存的动态申请,仍然采用内存池集管理

8、机制进程通信内存池集和应用内存池集完全独立,互不干扰,这样做的优点是一套内存池集的耗竭不会影响另一套内存池集的正常工作图2 是队列、内存头和内存体之间的关系图;开平一、上层应用调度管理、内存管理设备管理、定时管理等虚拟操作系统(V O S)商用操作系统V x W o r k s N T硬件内存头指针1荟内存头1L内存块1,内存头指针2内存头2L内存块2rrLr内存婆指针。内存婆nL内存块n操作队列固定内存固定内存图1 内存管理模块在平台中的位置图2队列。内存头和内存块之间的关系从图2 中可以看出,内存头和内存块的排列关系是有规律可循的,这种对应关系在运行过程中不会改变第一个内存头永远被用来控制

9、第一个内存块。而不可能去控制别的内存块但是内存头指针在队列中的位置是会不断改变的从队列中取出的一个内存头指针。可以指向任何一个内存头下面介绍本模块的三个内部接口1 1 初始化接口B O O L E A NI n i t M e m P l(T _ U B I n f o*p t U B I n f 0);传人参数:p t U B I n 缸一指向内存池集的配置信息概括来讲,初始化流程主要完成下面三部分的工作:根据内存配置表进行内存预分配,内存配置表有两套;创建控制队列,引用V O S 标准模块的队列操作;对内存头和内存体加页保护下面描述对进程通信内存池集的初始化过程,应用内存池集的初始化过程与

10、之相同流程描述:1)进行合法性检查(按内存池号循环),主要是检查用户的数据是否配置正确包括,内存块大小是否为U B _ S P A N 的倍数,内存池中内存块大小是否按序增长;2)获得页尺寸d w P a g e S;3)创建互斥信号量;4)计算虚拟内存总空间,同一个内存队列的U B 头放在一起,间隔N 个保护页在内存头之后,排放内存块内存块之间同样插入N 个保护页:5)调用V O S 提供的虚拟页申请函数,保留一段虚拟内存,这段内存初始状态为不可访问,由p t V i r M e m(临时变量)指定:6)p t V i r M e m 加一个页,为第一个内存池的内存头前面加虚拟保护页;7)从

11、p t V i r M e m 处提交内存头内存这段内存可以读写;8)调用V O S 提供的队列创建接口,创建一个无信号量、不可扩展的队列,将队列句柄存入对应的队列控制块;9)提交内存块(按 万方数据2 7 0海南师范大学学报(自然科学版)2 0 0 8 年内存块号循环),并做块保护;1 0)如果内存保护开关没打开,则将该内存块全部置为0 x 6 B,以便以后检测使用;1 1)将内存块指针存人内存头;1 2)将内存头指针入队1 2 申请内存接口B Y T E 木I n n e r G e t U B(T _ P 1 C t r l*p t P l C t l,W O R D 3 2d w S,

12、W O R D 3 2d w T i m e o u t,B Y T Eu c I f O s s);传人参数:7 r H C t r l 木p t P l C t l 内存池集指针,指定对哪个内存池集进行操作,目前分两个内存池集;W O R D 3 2d w 卜申请的内存大小;W O R D 3 2d w T i m e o u t 超时值,P 等待时间,如果进入P 等待,应该给申请者一段时间,用以获取信号,而不应该立即返回;B Y T Eu c I f o s s 一申请者是平台层本身还是上层应用流程描述:1)参数的合法性检查,尺寸必须介于0 和最大尺寸之间;2)根据尺寸从内存池集中寻找合

13、适的内存池;3)进入信号量保护;4)如果该内存池没有可用内存,则不向更大的内存池申请可用内存这样做的好处是可以避免大块内存被浪费;5)从队列头中取得内存块头指针;6)返回,申:请的内存块;7)释放信号量1 3 释放内存流程B O O L E A NI n n e r R e t U B(T _ P 1 C t r l*p t P l C f l,B Y r I E 车p u c B u f);传入的参数:1 _ P 1 C t r l 謇p t P l C t l 内存池集指针B Y T Ep u c B l l 一待释放的内存指针流程描述:1)合法性检查,指针必须在内存池集的范围之内;2)获

14、得内存体偏移,根据p u c B u f 获得其离内存体头部的偏移位置(由p u c B u f 同各内存池控制头中记录的内存范围进行比较,如果落入该内存池范围,则认为找到对应的内存池);3)获得对应的内存头指针,根据偏移位置得到内存头指针;4)进入信号量保护;5)根据使用标识,判别是否重复释放;6)根据内存头,判别返回指针是否落在内存块限定的范围内;7)置使用标识位为可以使用,然后将内存头指针加入队列;8)如果没有内存保护,则将内存块中相应的内容重置为O X 6 B;9)记录跟踪信息;1 0)释放信号量保护1 4 相关数据结构t y p e d e fs t r u c tt a g U B

15、 I n f oIW O R D 3 2d w S;严U B 块大小宰,W O R D l 6w T o t a l:*U B 块总数水,T _ U B I n f o;严存放配置信息宰,t y p e d e fs t r u c tU B H e a d T a gIW O R D 3 2d w U s e d S;严实际占用的内存尺寸木,W O R D l 6w U s e:,宰该内存区域是否被使用木W O R D l 6w P l:产指向内存池号母,B Y T E*p u c B u f:严指向一块内存区域堆 r-U B H e a d;t y p e d e fs t r u c t

16、t a g T P l C t r l 严内存池控制结构幸,fB E*p u c H P l;,宰内存池头指针宰,B Y T E*p h c B P l:严内存池体指针木,B Y T E*p u c B T a i l:奉内存池体末尾指针吖,W O R D 3 2d w P N u m o f H:产内存池控制头所占页数,I c W O R D 3 2d w P N u m o f E a c h B:严每个内存体所占页数木,W O R D 3 2d w S;产大小木,W O R D l 6w T o t a l:严总数木,W O R D l 6w Q u e u e I d;宰队列I D,为

17、全局变量s _ a t Q u e u e C t l 的数组下标奉,l7 L P l C t r l;万方数据第3 期贺冰琰等:基于V x W o r k s 的软件开发平台内存管理模块的设计与实现2 7 12 内存保护子模块设计内存保护子模块的主要作用是在于问题定位,内存保护引入虚拟内存机制,通过页表属性的设置来决定内存的访问权限引入内存保护后会引起程序运行效率下降。特别是在页表频繁切换的时候,因此,内存保护实现的完备程度受运行效率的限制在平台中,为了实现尽可能完全的保护,内存被划分成两个空间,一是系统空间,一是进程空间这两个空间的唯一区别就在于对内存的访问权限上,每个空间由一套页表来维护

18、系统空间拥有对内存资源最大的控制权,除了对代码段,进程栈和私有数据区不可写之外,对其他所有的内存区都可读写进程空间只可以对本进程的栈和私有数据区可读写,对其它进程的栈和私有数据区不可写进程运行前,将系统空间切换到进程空间进程运行完成,或是中途被挂起(同步调用或是中断抢断的情况),则将进程空间切换到系统空间划分两块空间的目的是为了提高运行效率,但会增加内存,增加的内存被用来存放页表如果C P U 采用P P C,当实际物理内存为2 5 6 M 时,页表占用的内存空间推荐为2 M 因此,以多出2 M 的内存来换取运行效率,代价不大目前的设计只采用两套页表系统空间到进程空间的转换发生在下面几种情况:

19、1)任务和进程之间的相互切换;2)发生中断和异常;3)任务之间的优先级抢占对于U B 块的保护,如果仍然使用虚拟空间切换的方法,实现难度大。因此,采取加保护页的方法其主导思想是在一块可写的内存前后分别加上一段不可写的虚拟保护页对于全局变量的保护,采用下列方法:将全局变量组织成一个结构(由各个进程自己完成)在进程上电的时候调用平台层提供的全局变量注册函数全局变量注册函数的入口参数是结构指针的指针和结构的长度注册时,根据长度分配页尺寸整数倍的内存。并在P C B 表中登记本进程有使用这一全局变量的权限其它使用这些全局变量的进程也调用该注册函数,如果已经注册过。则不需要再次为其分配内存对于进程的栈和

20、私有数据区。保护的策略和方法主要采用页表切换一。的方法实现3结语平台开发新的内存管理模块的目的是为了满足通信产品应用领域对内存管理性能和安全的要求,实际的软件开发实践也证明了其有效性对类似的应用软件的开发具有一定的借鉴意义参考文献:1 何先波,钟乐海嵌入式操作系统封装层的设计与实现【J】计算机应用,2 0 0 3,2 3(5):8 9 9 1 2 汤子瀛,哲凤屏,汤小丹计算机操作系统【M】西安:西安电子科技大学出版社,1 9 9 6:2 3 0 3 T a n e n b a u mA S,W o o d h u UA S 操作系统:设计与实现 M】王鹏,等译北京:电i f-_ z C _ 出

21、版社,1 9 9 8:2 0 4 郑宗汉实时系统软件基础【M】北京:清华大学出版社,2 0 0 2:5 6 万方数据2 7 2海南师范大学学报(自然科学版)2 0 0 8 年D e s i g na n dr e a l i z a t i o no fm e m o r ym a n a g e m e n tm o d u l eo ns o f t w a r ed e v e l o p m e n tp l a t f o r mb a s e do nV x W o r k sH eB i n g y a n,H o n gL i a n x i(C o l l e g eo fC

22、 o m p u t e rE n g i n e e r i n g,J:m e iU n i v e r s 蚵,X i a m e n3 6 1 0 2 1,C h i n a)A b s t r a c t:A st h em e m o r ym a n a g e m e n tf u n c t i o n ss e l f-o f f e r e db yV x W o sw h i c hu s ef i r s tf i ta l g o r i t h mc a l ln o ts a t i s f yt h ed e m a n d so fs t r i c tt

23、i m e l i n e s sa n de f f i c i e n c yo fm e m o r ym a n a g e m e n ti nt h ec o m m u n i c a t i o na p p l i c a t i o n so fs o f t w a r e,t os o l v et h ep r o b l e m,an e wr e a l i z i n gm e t h o do fm e m o r ym a n a g e m e n tw a sa d v a n c e df o rt h es o f t w a r ed e v e

24、l o p m e n tp l a t f o r mb a s e do nV x W o r k su s i n gt w oc o m p l e t e l yi n d e p e n d e n tm e m o r yp o o ls e t s-o n ef o rp r o c e s sc o m m u n i c a t i o n,a n dt h eo t h e rf o rt h ea p p l i c a t i o n s,w i t ht h ep l a t f o r md i r e c t l ym a n a g i n gt h em e

25、 m o r y,a n dp r o v i d i n gt h eh i s he f f i c i e n td y n a m i cm e m o r ym a n a g e m e n tm e c h a n i s mf o rt h ew h o l es y s t e m T h en e w l yd e f m e dm e m o r ym a n a g e m e n tm o d u l ei sm o r es u i t a b l ef o rt h ed e v e l o p m e n to fe m b e d d e ds o f t w

26、 a r ei nt h ea p p l i c a-t i o no fc o m m u n i c a t i o np r o d u c t s K e yw o r d s:e m b e d d e do p e r a t i n gs y s t e m;o p e r a t i n gs y s t e me n c a p s u l a t e dl a y e r;,m e m o r ym a n a g e;V x W o r k s(上接第2 5 3 页)参考文献:1 康庆德图表号问题【J】河北师范学院学报:自然科学版,1 9 9 1,(1):1 0 2-1

27、 1 5 2 马克杰优美图f M l 北京:北京大学出版社,1 9 9 1 3 梁志和关于图标号问题【J】河北师范大学学报:自然科学版2 0 0 0,2 4(3):3 0 0-3 0 3 4 景占策图1(2,6,n)的优美性【J】青海师专学报:自然科学版,2 0 0 0,(6):2 5-2 7 5 丁孝全一类图的优美,P A I J】四川师范大学学报,2 0 0 0,2 3(6):6 0 3-6 0 4 6 宋庆华,段滋明,朱颜凤图C+。u c。的优美性,】山东科技大学学报:自然科学版,2 0 0 4,2 3(3):1 0 2-1 0 3 7 魏丽侠,张昆龙几类并图的优美标号【J】中山大学学报

28、:自然科学版,2 0 0 8,4 7(3):1 0-1 3 8 D e b d a sM i s h r a。P r a t i m aP a n i g r a h i S o m eg r a c e f u ll o b s t e r sw i t ha l lt h r e et y p e so fb r a n c h e si n c i d e n to nt h ev e r t i c e so ft h et e n-t r a lp a t h【J】C o m p u t e r s&M a t h e m a t i c sw i d lA p p l i c a

29、t i o n s,2 0 0 8,5 6(5):13 8 2 13 9 4 9 魏丽侠。张昆龙图K 1 V c。的非连通并图的优美性【J1 中山大学学报:自然科学版,2 0 0 7,4 6(4):1 3-1 6 O nt h eg r a c e f u l n e s so f(2,k,n)C h e nS h u z h e n,W a n gL i n a(S c h o o lo f M a t h e m a t i c sa n dS t a t i s t i c s,H a i n a nN o r m a lU n i v e r s 蚵,H 缸k o u5 7 11 5

30、8,C h i n a)A b s t r a c t:T h en(2,k,乃)g r a p hi sf o r m e db yb o n d i n gap a t hw i t hl e n g t hna n dt w ob a n g i n ge d g e sa tt w ov e r t e x e sw i t hd i s t 船o e2o fc i r c u i t 靠I nt h i sp a p e rt h eg r a p ha(2,k,n)W a ss t u d i e da n di tW a sp r e y e dt h a tt h eg r a

31、 p hi sg r a c e f u lw h e n7 屉1 6 K e yw o r d s:c i r c u i t;g r a c e f u lg r a p h;g r a c e f u ll a b e l 万方数据基于VxWorks的软件开发平台内存管理模块的设计与实现基于VxWorks的软件开发平台内存管理模块的设计与实现作者:贺冰琰,洪联系,He Bingyan,Hong Lianxi作者单位:集美大学计算机工程学院,福建,厦门,361021刊名:海南师范大学学报(自然科学版)英文刊名:JOURNAL OF HAINAN NORMAL UNIVERSITY(NATURAL SCIENCE)年,卷(期):2008,21(3)参考文献(4条)参考文献(4条)1.郑宗汉 实时系统软件基础 20022.Tanenbaum AS;Woodhull AS;王鹏 操作系统:设计与实现 19983.汤子瀛;哲凤屏;汤小丹 计算机操作系统 19964.何先波;钟乐海 嵌入式操作系统封装层的设计与实现期刊论文-计算机应用 2003(05)本文链接:http:/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁