【技术实现步骤摘要】
本专利技术涉及一种嵌入式系统,特别是关于。
技术介绍
嵌入式系统的应用领域非常广泛,应用程序的功能也很丰富。但是,由于其运算能 力和存储能力非常有限,因此,运行在嵌入式系统上的应用程序必须具备高效可靠的内存 管理方法,才能长时间稳定运行。用于嵌入式设备上的操作系统,自身也能够提供基本的内 存管理机制,但是对于需要长时间稳定运行、反复多次申请内存空间的应用程序,操作系统 的基本内存管理机制是无法满足要求的。理论上讲,在内存分配过程中,如果能够实现顺序使用、逆序释放,则内存使用后 可以及时释放,不会产生内存碎片,分配效率最高,对物理内存资源的浪费最小。但是,一般 的应用程序中,程序对内存的需求是非常复杂的,内存的及时释放是一个很大的问题。现有 的内存池管理方法以及内存垃圾回收机制可以部分解决这一问题,但是长时间使用后,会 普遍出现大量的内存碎片、分配效率降低等负面效应。
技术实现思路
针对上述问题,本专利技术的目的是提供一种能稳定高效的为各种内存需求分配空 间、有效解决内存碎片问题、避免内存泄漏,并实时监控内存使用状况的嵌入式系统的内存管理方法。为实现上述目的,本专利 ...
【技术保护点】
【技术特征摘要】
一种嵌入式系统的内存管理方法,其包括如下步骤(1)在嵌入式系统的线程根函数中开辟一块物理内存作为线程堆,并利用翻转式线程堆管理系统对该物理内存进行管理,此线程内所有的动态内存都将从此物理内存中线程堆空闲内存中分配,线程堆管理系统从线程堆空闲内存的首尾两端为数据需求分配内存空间,线程堆空闲内存有正常态N和翻转态F两种状态;(2)将所有数据需求分为临时空间需求和输出空间需求两种类型,在同一函数中,根据数据需求的类型线程堆管理系统将在线程堆空闲内存的一端分配临时空间需求的数据即为临时端,或分配输出空间需求的数据即为输出端;(3)线程堆管理系统将首端内存分配给临时空间需求的数据;(4)当一个上级函数调用下级函数时,线程堆管理系统控制线程堆空闲内存进行翻转,临时端和输出端位置对调;当退出下级函数时,线程堆空闲内存释放当前临时端的临时空间,同时保留输出端的输出空间,并和上级函数临时端的临时空间合并。2.如权利要求1所述的一种嵌入式系统的内存管理方法,其特征在于所述步骤(1) 中,所述线程堆管理系统从所述线程堆空闲内存的首尾两端为数据分配内存空间的步骤如 下①线程堆空闲内存的首端地址为Sh,尾端地址为St;②当从线程堆空闲内存首端分配L长度的内存后,首端地址变为S'h = Sh+L ;③当从线程堆空闲内存尾端分配L长度的内存后,尾端地址变为S't = St-L ;④当出现时St^ Sh,线程堆空闲内存耗尽,线程堆管理系统抛出异常并对该错误进行 调整,线程根函数退出。3.如权利要求1所述的一种嵌入式系统的内存管理方法,其特征在于所述步骤(2) 中,所述数据需求分类及对应的分配方法包括以下步骤①当一个数据需求申请内存空间时,需要声明自己需求的类型是输出空间需求还是临 时空间需求,并由线程堆管理系统根据该声明将数据需求在输出端或临时端分配空间;②当线程堆空闲内存处于正常态N时,对于所有临时空间需求的数据,线程堆空闲内 存从首端顺序分配内存;对于所有输出空间需求的数据,线程堆空闲内存从尾端顺序分配 内存;③当线程堆处于翻转态F时,对于所有临时空间需求的数据,线程堆空闲内存从尾端 顺序分配内存;对于...
【专利技术属性】
技术研发人员:连小珉,杨殿阁,王钊,李挺,张照生,郑四发,李克强,罗禹贡,王建强,
申请(专利权)人:清华大学,
类型:发明
国别省市:11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。