RTOS动态分区内存管理机制的优化设计

发布者:美好未来最新更新时间:2009-10-29 来源: 单片机与嵌入式系统关键字:RTOS  内存管理机制  动态分区 手机看文章 扫描二维码
随时随地手机看文章

  引 言

  在嵌入式领域中,嵌入式实时操作系统(RTOS)正得到越来越广泛的应用。采用嵌入式实时操作系统可以更合理、更有效地利用CPU的资源,简化应用软件的设计,缩短系统开发时间,更好地保证系统的实时性和可靠性。内存资源作为嵌入式系统中极为重要的资源之一,其管理机制历来是嵌入式系统设计的重点和难点。内存管理机制的优劣程度极大地影响着嵌入式系统的整体性能,因此在嵌入式RTOS的内存管理机制中必须满足以下3个要求:

  ①实时性。在嵌入式RTOS中不仅要求调度机制的实时性,资源的分配和回收的实时性也十分重要。

  ②可靠性。嵌入式系统的应用领域决定了嵌入式RTOS必须具有高可靠性,而内存管理的可靠程度直接影响RTOS的可靠性,因此内存管理的可靠性也必不可少。

  ③高效性。由于嵌入式系统资源的稀缺性,因而高效的资源管理机制也同等重要。

  1 动态分区内存管理机制

  1.1 动态分区内存管理概述

  在许多小型嵌入式系统中并未实现虚拟内存机制,动态分区内存管理机制仍然是首选。分区存储管理是满足多道程序设计的最简单的存储管理方法,它允许多个用户程序同时存在系统内存中,即共享内存空间。早期的分区存储管理采用固定分区的方法,把内存空间分成若干个大小不等的区域,称为分区。每个用户程序(作业、进程)调入内存后,占用其中1个分区,程序运行完成后释放该分区。这种存储管理方法的主要问题是内存使用效率极低,很快就被淘汰了。取而代之的是动态分区存储管理技术。图1显示的是动态内存管理的数据结构。

动态内存管理的数据结构

  1.2 动态分区内存分收算法及其性能分析

  在动态内存分配机制中一般采用两种设计方案:最佳适应算法和首次适应算法。最佳适应算法要求所有的空闲内存块按照内存块的大小,由小到大链接在一起。首次适应算法中所有的空闲内存块都是按地址由小到大链接的。图2显示了这2种算法的流程(假设系统申请的内存块大小为n)。

这2种算法的流程

  最佳适应算法和首次适应算法在分配内存的流程上是一致的,然而由于空闲内存块的组织形式不同,其分配的性能也不尽相同。最佳适应算法由于每次分配都是首先分配与所要求的内存块大小最接近的空闲内存块,因而其内存利用率相对较高。然而由于在内存回收过程中需要合并那些地址相邻的空闲块,最佳适应算法往往需要遍历整个空闲区链表以寻找符合条件的内存块。而首次适应算法由于是按照地址的顺序相连,因而在内存回收方面有着最佳适应算法无法比拟的性能。

  图3显示了在几种不同情况下,动态分区内存回收机制所采取的策略。

动态分区内存回收机制所采取的策略

  在A中,释放区回收后合并成新内存块f,其首地址为f1内存块的首地址,大小为f1和R内存块的大小之和。在B中,释放区回收后合并成新内存块f,其首地址为R内存块的首地址,大小为f1和R内存块的大小之和。在C中,释放区回收后合并成新内存块f,其首地址为f1内存块的首地址,大小为f1和R以及f2内存块的大小之和。在D中,释放区回收后不进行合并,直接插入空闲区链表并返回。

  动态分区内存的分配机制有效地避免了内存内部碎片的存在,同时在内存回收策略中使用合并算法也极大地减少了内存外部碎片存在的可能性。然而,当系统需要分配大量的小块内存时,动态分区内存管理机制的性能却并不令人满意。其不足之处主要存在以下2个方面:

  ①当系统分配大量的小块内存后,其空闲区表或空闲区队列将会变得异常庞大。无论是首次适配算法还是最佳适应算法都需要遍历空闲区搜索合适的内存块,因此过于庞大的空闲区结构使搜索算法变得低效。

  ②系统在某些特定的时刻往往会对大量的小块内存进行频繁分配和回收。频繁地对小块内存进行分割分配和合并回收,其实时性表现得并不令人满意。

  基于以上2点,如何在动态分区内存管理机制的基础上优化小块内存的管理机制,成为提高动态分区内存管理性能的关键因素之一。

  2 小块内存动态缓存分配机制

  大部分实时操作系统内存分配机制并未对大块内存和小块内存的分配做出不同的算法设计,然而在实际分配过程中,很难用一种分配算法兼顾大小内存的高效分配。针对动态分区内存管理机制中对小块内存分配的局限性,提出了小块内存动态缓存机制。该机制在继承了动态分区管理机制优良性能的同时,优化了小块内存的管理,对内存管理的实时性和高效性都有一定提高。系统中同时存在2种内存数据结构,分别为小块内存和大块内存设计。大块内存依旧采取动态分区内存管理机制,而小块内存采取动态缓存分配。小块内存数据结构如图4所示。

小块内存数据结构

  假设小块内存最小为1字节,并以2的指数递增,最大为512字节。这也就意味着当系统需要分配或释放小于或等于512字节的内存时,会执行小块内存操作。图5和图6分别是小块内存的分配和回收流程(图中j代表需操作的小块内存对应的缓存号,若申请120字节则j对应为8;min代表小块内存最大的缓存号,如图中min=9)。

小块内存的分配和回收流程

  图7是对小块内存操作算法的简单模拟。小块内存缓存区从上到下依次缓存512~64字节的内存块。有4个操作过程:分配64字节→分配128字节→回收64字节→回收128字节。

对小块内存操作算法的简单模拟

  ①分配64字节。初始状态小块内存缓存区为空,此时将会执行大块内存分配操作并将1 KB内存分割缓存到小块内存缓存区。在分配64字节内存时,系统自动探测到了128字节、256字节和512字节处的缓存区已经处于饥饿状态,因此也将会分配其缓存区1块内存。

  ②分配128字节。由于系统存在该大小的缓存,因此直接获取并返回。

  ③回收64字节。由于释放后,系统中64字节大小的内存块可以合并,因此合并后链入上一级缓存区。

  ④回收128字节。内存块再次进行合并操作,最终调用大块内存释放操作,从而回到原始态。

  图7所示的内存操作只是一个非常简单的模拟,实际系统内存的分配和回收是非常复杂和不确定的,而小块内存动态缓存分配机制的性能在这种情况下表现得尤为突出。总体而言其具有以下几点优势:

  ①快速性。因为使用了缓存机制,所以在大部分情况下,小块内存释放后依旧在缓存区中,当系统再次分配该大小的内存块时就极为快速。

  ②自适应性。在分配小块内存的过程中,算法能检测出处于饥饿状态的内存块大小,并依次为它们所在的缓存区分配1块相应大小的内存块。

  ③动态性。在小块内存的回收过程中,该算法将对内存块进行合并重组。假若某时刻先前从大块内存中分配的1 KB内存块全部被小内存块释放,其经过重组后必定能重新添加到大内存块存储区。

  3 优化后的系统内存管理机制

  图8和图9分别是优化后系统分配和回收内存的算法,图中的max代表的是小块内存的最大值。当不能得到所需的小块内存,或者释放小块内存最终合并成大块内存时,分别调用大块内存分配和释放操作,从而保证小块内存和大块内存操作能很好地协作,增强了系统的稳定性。

优化后系统分配和回收内存的算法

  结 语

  尽管在引入小块内存动态缓存分配机制后,系统在分配小块内存时会存在一定的内存内部碎片,但由于小块内存本身很小以及大块内存的动态分区管理机制,很好地降低了系统中由于存在内存碎片而带来的风险。在实际模拟测验1中,经优化过的动态分区内存管理机制能在一定程度上提高系统的实时性及可靠性,在嵌入式RTOS的设计中具有实际的意义。

关键字:RTOS  内存管理机制  动态分区 引用地址:RTOS动态分区内存管理机制的优化设计

上一篇:单片机在工业无线网络中的具体应用
下一篇:厚积薄发,瑞萨加大SuperH族产品连接性能

推荐阅读最新更新时间:2024-03-16 12:26

嵌入式实时操作系统性能测试方法研究
引 言 随着计算机技术的迅速发展和芯片制造工艺的不断进步,ERTOS的研究和应用日益广泛,从民用的手机、电子书等手持移动设备到航空航天、医学设备、工业控制等各个领域都有它的身影。然而,在设计和选择ERTOS时,如何确定其是否能够满足所需的应用成为一个棘手的问题,必须用一种有效的方法对它们的各个方面进行对比测试,以选择符合要求的系统。本文首先分析三种常用的系统实时性能测试方法,接着介绍一套测试实验平台,对于ERTOS的测试和分析有一定的指导意义。 1 Rheaostone方法 Rhealstone方法对ERTOS中六个关键操作的时间量进行测量,并将它们的加权和称为Rhealstone数。这六个时间量如下: ◆任务切换
[应用]
利用函数参数和返回值提高嵌入式软件质量
   引 言   提高软件代码的质量是每一个软件设计者都必须考虑的问题,这涉及软件的有效性和经济价值。基于嵌入式系统的软件设计多数是以实时操作系统为平台,这和传统的以WindOWS操作系统为平台的程序设计有很大的不同。前者要求对操作系统有更加深入的了解,要求使用者对自己的处理器和编译器工作原理有相当的理解,能够编写一定量的移植代码实现操作系统和底层硬件的连接。μC/OS—II是一种源代码公开的占先式实时操作系统内核,本文主要结合μC/OS—II的系统函数的应用,说明利用μC/OS—II系统函数的参数和返回值来提高程序设计效率和代码质量的方法。    1 参数和返回值分类   通过对μC/0S—II的学习和研究,可以发现它提供
[嵌入式]
uC/OS-II实时操作系统在嵌入式平台上进行移植的一般方法和技巧
引言 ---实时操作系统的使用,能够简化嵌入式系统的应用开发,有效地确保稳定性和可靠性,便于维护和二次开发。 μC/OS-II是一个基于抢占式的实时多任务内核,可固化、可剪裁、具有高稳定性和可靠性,除此以外,μC/OS-II的鲜明特点就是源码公开,便于移植和维护。 在μC/OS-II官方的主页上可以查找到一个比较全面的移植范例列表。但是,在实际的开发项目中,仍然没有针对项目所采用芯片或开发工具的合适版本。那么,不妨自己根据需要进行移植。 本文则以在TMS320C6711 DSP上的移植过程为例,分析了μC/OS-II在嵌入式开发平台上进行移植的一般方法和技巧。μC/OS-II移植的基本步骤 在选定了系统平台和开发
[应用]
μC/OS-II在总线式数据采集系统中的应用
    μC/OS-II是一个源代码开放的实时操作系统,可移植、可固化(嵌入到产品中成为产品的一部分)、可裁减,属于占先式实时内核。执行时间可确定(即函数调用与服务的时间是可知的,不依赖于应用程序的多少),支持现有大多数型号的8位、16位、32位MCU/MPU,已被广泛应用于交换机、路由器、过程控制、汽车业、办公自动化、计算机外设以及民用消费类产品等,具有稳定的可靠性。把μC/OS-II应用在总线式数据采集系统中,可使该系统比以往的前后台系统能够更加稳定地工作,而且在一定程度上满足了监控测量实时性的需求。 1 总线式数据采集系统的组成与功能     随着社会信息化程度的提高,人们对重要工业及生活设施智能化监控的要求也越来
[嵌入式]
RTOS视频网络检测系统研究
在远程测控系统中,嵌入式系统由于其稳定性和实时性优于传统平台而得到迅速发展。本文提出了一种以DSP芯片和VxWorks为操作系统的新型嵌入式系统设计方法。 1 测试系统工作原理 测试系统的主要任务是采用DSP芯片处理通过摄像头拍摄并经过A/D转换的图像。整个系统由视频解码器、DSP和PCI总线专用芯片组成。系统通过PCI总线同通信平台交换数据,同时通过网络进行检测控制。 2 关键设计及器件选择 本系统设计的关键是视频处理卡的设计,一般的视频检测卡功能有限,不能满足本项目的需求,为此,笔者自行设计了一块视频检测卡。 2.1 TMS320C32的功能特点 本测试系统中的DSP芯片选用TI公司的TMS320C3x系列产品,该器件的工作
[测试测量]
实时操作系统在混合动力整车控制器中的应用
混联式混合动力系统的子系统众多,其中整车控制器作为实现驾驶员驾驶需求和能量安全的管理系统,需要协调发动机、扭矩、电机和电池的功率在不同工况下的合理分配,实现制动能量回馈,并控制外围设备(如空调、灯光),以达到最佳的节能排放效果。系统任务的复杂性和强电磁干扰环境都对整车控制器的实时性和可靠性提出了重大挑战,传统的单任务循环式的程序控制模式难以满足需求,因此作者采用了开放源码的嵌入式操作系统 C/OS-II设计整车控制器系统软件。 1 整车系统结构 所开发的全混合动力轿车是天津市重大专项课题,以长城哈佛SUV轿车为平台。该车动力系统主要由发动机、交流电动机、交流发电机和高性能的镍氢电池、行星架动力分配机构以及DC-AC逆变器组成
[单片机]
<font color='red'>实时操作系统</font>在混合动力整车控制器中的应用
汽车领域RTOS有哪些
在汽车领域,常用的RTOS除了以上介绍的AUTOSAR/OSEK OS和FreeRTOS之外,包括但不限于以下几种: 1 QNX OS QNX是一种实时操作系统(RTOS),具有以下功能特性: 1. 实时性:QNX操作系统是一个实时操作系统,提供可靠的实时性能。它能够在严格的时间约束下运行任务,并确保任务按时完成。 2. 微内核架构:QNX采用微内核架构,将操作系统核心的功能模块化,以提高系统的可靠性和灵活性。这种架构允许模块之间的独立运行和更新,而不会影响整个系统。 3. 分布式处理:QNX操作系统支持分布式处理,可以在多个处理器上运行任务,并通过网络进行通信和协调。这使得QNX适用于复杂的分布式系统和嵌入式网络应用。 4. 实
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved