论文部分内容阅读
随着物联网技术的不断发展,嵌入式实时系统被广泛应用于各个领域。嵌入式实时系统需要提高实时性、内存碎片率等方面的性能,从而满足越来越多样化的应用领域的需求。嵌入式实时系统的动态内存管理对嵌入式实时系统的实时性响应以及内存碎片率等方面的表现起到了决定性的作用,因此成为嵌入式实时系统的重要组成部分。在现代的嵌入式实时系统中,内存管理存在较差的实时性、较高的内存碎片率以及缺少安全防护的不足之处,这会大大降低嵌入式实时系统的可用范围。更糟糕的是随着系统的长期运行,内存碎片率逐步增加,从而导致嵌入式实时系统的可用内存降低。随着系统可用内存的下降,将会出现内存分配失败的现象,从而导致任务无法正常运行,进而使得整个系统瘫痪。 针对现在嵌入式实时系统的内存管理存在的问题,本文以性能良好的TLSF(Two-Level-Segregated Fit,TLSF)算法为基础,然后针对TLSF算法自身存在的内存碎片率问题、最差分配效率过低问题以及内存数据溢出检测三个方面的不足之处进行改进。接着将FreeRTOS系统移植到FRDM-K64的开发板上,并且设计实验来进行算法性能的对比和验证。本文的主要工作: (1)从现有的常用的动态内存分配算法出发,分析现有各类算法的优点以及它们存在的不足之处。然后进一步了解现有的嵌入式实时系统的内存管理系统,并且分析常用的嵌入式实时系统的优势以及内存管理存在的不足之处。最后从中总结出嵌入式实时系统对动态内存分配算法的要求,并且根据各个嵌入式系统的优势选择本文需要的实验系统。 (2)通过对现有的嵌入式实时系统内存管理的研究以及TLSF算法分配策略的重点分析,提出以性能优异的TLSF算法为基础,针对TLSF算法存在内存碎片率问题、最差分配效率过低问题以及内存数据溢出检测问题的三个缺陷进行算法改进的新方案。然后根据嵌入式实时系统对动态内存分配算法的要求,针对TLSF存在的不足,采用直接内存分配算法与TLSF算法原有分配算法相结合的方式解决最差内存分配效率问题;采用自适应算法取得最佳内存切割阈值解决内存碎片率过高问题;采用表头检验算法来解决内存数据溢出检测问题的三个方面进行单独的改进,从而提高新算法的性能。 (3)针对IAR环境下缺少FreeRTOS系统移植方法的问题,提出了四段式移植的新方案。将移植过程分为ARM(Advanced RISC Machines,ARM)自身启动阶段、FreeRTOS介入阶段、内存分配算法移植阶段以及实验测试阶段共四个阶段。新方案使用由下而上的分层式移植结构,将TLSF算法与新算法移植到FreeRTOS系统中并且设计实验进行对比。实验表明:相比TLSF算法,新算法内存分配效率最高提高4.98%,内存释放效率在内存使用率较低时提高1.1%,较高时和TLSF算法差别不大,但是新算法在内存使用率较高时,碎片率比TLSF算法最大降低了10.3%,并且能够有效的检测内存数据溢出,提高了安全防护能力。