内存管理方法技术

技术编号:4091679 阅读:166 留言:0更新日期:2012-04-11 18:40
本发明专利技术揭露了一种内存管理方法,所述方法包括:预定义公有代码和专有代码;划分预定大小的内存空间给所述公有代码;根据实际场景选择专有代码;根据所选择的专有代码,划分相应的内存空间以加载该专有代码;和根据剩余可用内存创建内存池。与现有技术相比,本发明专利技术提供的内存管理方法的内存池的创建时间不在系统初始化阶段,而在系统具体运行的程序代码确定以后的阶段,这样在内存池创建的时候,系统的剩余可用内存是已知的,可以使能够用于创建内存池的可用空间最大化,大大提高了内存的使用效率。

【技术实现步骤摘要】

本专利技术涉及嵌入式系统的内存管理,特别涉及动态创建内存池的方法。
技术介绍
在嵌入式系统的资源使用中,内存资源通常都比较紧张,目前大部分的嵌入式 系统都采用动态分配内存的方式,当应用程序需要使用内存资源时进行申请,当使用完 毕后释放内存资源。在传统架构的嵌入式系统中,尤其是实时嵌入式系统(Real-time operating system, RT0S)中,系统内存的动态分配都是采用在系统初始化阶段就分配完 毕,在整个程序运行周期内不做修改的方式。由于传统架构的嵌入式系统在系统初始化阶 段就可以确定在初始化后剩余可用内存的大小,所以这样的方式还没出现问题。而对于采用代码覆盖技术的新型架构的嵌入式系统中,上述的方式就显得无能为 力了。所述代码覆盖技术是指嵌入式系统运行的程序代码可分为公用代码和专有代码两 类,所述公用代码是在所述嵌入式系统所有的工作场景下都必须使用到的程序代码,比如 操作系统的基本代码;所述专有代码即只在特定的场景下使用的程序代码,比如MP3格式 解码代码只在MP3格式的音乐文件的解码场景中使用。由于同一时间段根据具体的使用场 景一般只会运行一种专有代码,所以在采用代码覆盖技术的新型架构的嵌入式系统中,对 于这些专有代码是分时加载到内存中的,新的场景的专有代码在运行时覆盖旧的专有代码 所占据的内存。所以这种架构的嵌入式系统中,只有在系统具体需要运行的专有代码的类 型确定后才能够确定系统的剩余可用内存的大小。如果还采取在系统初始化时就进行动态 内存分配的方式,就只能按照最小可用内存来创建内存池以防止内存泄露等问题,而这样 的方式对于内存资源比较紧张的嵌入式系统显然是不合理的。因此,亟待提出一种先进的、可以克服上述缺点的技术方案。
技术实现思路
本专利技术的目的在于提供一种优化内存分配的。为了达到本专利技术的目的,本专利技术提供一种,所述方法包括预定义公 有代码和专有代码;划分预定大小的内存空间给所述公有代码;根据实际场景选择专有代 码;根据所选择的专有代码,划分相应的内存空间以加载该专有代码;和根据剩余可用内 存创建内存池。进一步地,所述公有代码为系统运行必须的相关代码或者模块。进一步地,所述公有代码是系统基本运行所需代码、系统控制代码及底层驱动程 序中的一种或多种。进一步地,所述专有代码为系统根据不同使用场景而需要选择运行的相关代码或 者模块。进一步地,所述专有代码是音频格式编解码代码,不同的专有代码对应于不同音 频格式的音乐文件的编解码场景。进一步地,不同的专有代码在运行时需要不同大小的内存空间。进一步地,相同的专有代码在运行时需要相同大小的内存空间。进一步地,所述专有代码选自MP3格式解码代码、AMR格式解码代码和AAC格式解 码代码中的一个。进一步地,在选择某一类型的专有代码后,根据该类型的专有代码的编译信息获 得系统的剩余可用内存信息。进一步地,所述应用于采用代码覆盖架构的嵌入式系统。本专利技术还提供一种,该包括预定义公有代码和专有代码;划分预定大小的内存空间给所述公有代码;根据实际场景选择专有代码;根据所选择的专有代码,划分相应的内存空间以加载该专有代码;和将剩余可用 内存划分为动态内存分配空间。与现有技术相比,本专利技术提供的的内存池的创建时间不在系统初始 化阶段,而在系统具体运行的程序代码确定以后的阶段,这样在内存池创建的时候,系统的 剩余可用内存是已知的,可以使用于创建内存池的可用空间最大化,大大提高了内存的使 用效率。附图说明结合参考附图及接下来的详细描述,本专利技术将更容易理解,其中同样的附图标记 对应同样的结构部件,其中图1为本专利技术中在一个实施例中的方法流程图;图2为本专利技术中在一个具体的实施例中的实施示意图;和图3A-图3D为现有技术的技术方案和本专利技术中的技术方案所产生的不同内存映 射示意图。具体实施方式为使本专利技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实 施方式对本专利技术作进一步详细的说明。本专利技术中所述适用于采用代码覆盖技术的新型架构的嵌入式系统 中。本专利技术的实施可能通过不同的形式来进行,比如所述可以通过软件、硬件 或者两者的结合来实现成为一种方法或者产品,也可以通过计算机程序实现成为一个系统 的一部分。请参考图1,其示出了本专利技术一个实施例中的100的方法流程图。所 述100包括步骤101,预定义公有代码和专有代码,在嵌入式系统内的程序设计阶段,将系统 运行必须的相关代码或者模块设计为公有代码,将系统根据不同使用场景而需要选择运行 的相关代码或者模块设计为专有代码,当系统处于某一具体的使用场景时,通过加载公有 代码和某一类型的专有代码就可以正常运行;4步骤102,划分预定大小的内存空间给所述公有代码;在所述嵌入式系统的初始 化阶段,为所述公有代码分配预定的内存空间,所述预定的内存空间为可以保证公有代码 正常运行的最小内存单位,该片内存空间在被划分后确定为安全区域,即后续的内存分配 将不涉及到该片内存空间以保证该片内存空间的数据安全性;步骤103,根据实际场景选择专有代码,由于不同的使用场景所需要运行的代码或 者模块是不同的,所以需要根据实际使用场景而选择对应的专有代码;步骤104,根据所选择的专有代码,划分相应的内存空间给专有代码;不同的专有 代码在运行时需要不同大小的内存空间,所以在根据实际使用场景选择对应的专有代码 后,根据所选择的专有代码而划分相应的内存空间给该专有代码,该专有代码需要的内存 空间的大小可以在该专有代码编译完成后由编译信息具体获得;和步骤105,根据剩余可用内存创建内存池。所述专有代码在编译完成后,编译器将 会反馈该专有代码实际占用的内存的起始地址以及大小信息,此时系统就可以获知当前的 剩余可用内存的大小和地址,进一步地根据当前的剩余可用内存而创建为内存池。步骤105 也可以是将剩余可用内存划分为动态内存分配空间。所述的特点及重点之一在于,在系统根据具体的使用场景而确定运 行的程序代码后,系统可以获知当前的剩余可用内存的大小,而系统此时才开始创建内存 池。由于不同的使用场景而确定运行的程序代码运行时需要使用的内存大小是不同的,即 程序代码运行后能够剩余的可用于动态分配的内存大小是不同的,所以所述 能够根据具体的使用场景而最大化的创建一内存池,有效地提高了内存空间的使用效率。为了更好地描述本专利技术,下文将结合一个具体的实施环境对所述进 行详细地描述。请参考图2,其示出了本专利技术应用于一个具体实例中的200的实施 示意图。所述200应用于嵌入式系统,所述嵌入式系统是包括基带模块和移 动多媒体模块的手机系统。所述基带模块通常采用ARM芯片实现,用来对整个手机系统进 行控制和保持整个手机系统正常运行。所述移动多媒体模块通常采用DSP芯片实现,用来 使所述手机系统实现音视频播放功能。所述移动多媒体模块通常作为所述基带模块的协处 理器,在运行时受到所述基带模块的控制。以所述手机系统在音频播放使用环境中为例,所 述200包括步骤201,在所述手机系统的程序设计阶段,将系统基本运行所需代码、系统控制 代码及底层驱动程序设计为公有代码中的一种或多种,比如处理器核(CPU Core)、所述移 动多媒体模块(MMP)的基本运行程序及驱动等。将不同类型的音频格式编解码本文档来自技高网
...

【技术保护点】
一种内存管理方法,其特征在于,其包括:预定义公有代码和专有代码;划分预定大小的内存空间给所述公有代码;根据实际场景选择专有代码;根据所选择的专有代码,划分相应的内存空间以加载该专有代码;和根据剩余可用内存创建内存池。

【技术特征摘要】
一种内存管理方法,其特征在于,其包括预定义公有代码和专有代码;划分预定大小的内存空间给所述公有代码;根据实际场景选择专有代码;根据所选择的专有代码,划分相应的内存空间以加载该专有代码;和根据剩余可用内存创建内存池。2.根据权利要求1所述的方法,其特征在于,所述公有代码是系统运行必须的相关代 码或者模块。3.根据权利要求2所述的方法,其特征在于,所述公有代码是系统基本运行所需代码、 系统控制代码及底层驱动程序中的一种或多种。4.根据权利要求1所述的方法,其特征在于,所述专有代码为系统根据不同使用场景 而需要选择运行的相关代码或者模块。5.根据权利要求4所述的方法,其特征在于,所述专有代码是音频格式编解码代码,不 同的专有代码对应于不同音频格式的音乐文件的编解码场景。6...

【专利技术属性】
技术研发人员:李志刚
申请(专利权)人:无锡中星微电子有限公司
类型:发明
国别省市:32[中国|江苏]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1