一种分配内存的方法技术

技术编号:2853558 阅读:185 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种分配内存的方法,该方法至少包括以下步骤:A、判断设置的应用模块使用内存的优先级别,将内存优先分配给使用内存为高优先级的应用模块;B、当内存被分配完以后还有应用模块申请内存,则根据应用模块使用内存的优先级别,强制释放低优先级的应用模块占用的内存,并将释放的内存分配给高优先级的应用模块。在应用模块申请内存时利用该方法,根据应用模块使用内存的优先级别来分配内存,可以保证一些重要的应用模块在内存资源紧张的情况下能够优先分配到内存,并且还可以保证一些重要的应用模块在内存资源被分配完以后能够顺利分配到内存。(*该技术在2024年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及内存分配
,特别涉及。
技术介绍
现有技术中一般采用片分内存的方法和页面交换机制,实现对系统的内存进行管理和分配。所谓片分内存的方法,就是把内存空间划分为多个大小不同的内存缓冲池,每个内存缓冲池再被划分为多个大小相同的内存缓冲区;在应用模块申请分配内存时,系统先找到缓冲区大小比所需内存大小稍大,并且缓冲区大小又最接近所需内存大小的内存缓冲池,然后在该内存缓冲池中直接分配一个内存缓冲区给应用模块。所谓页面交换机制是在一个只有少量物理内存的系统中,操作系统将内存划分成易于处理的页面,在系统运行时将较少使用的页面交换到外接存储设备上去,在真正使用时把外接存储设备上的页面重新交换进内存的机制。页面交换机制允许占用内存比实际内存要大的软件在系统上运行。由于页面交换机制需要有足够的外接存储设备空间来存储被交换的页面,同时外接存储设备的访问速度不能远远低于物理内存的访问速度。而在实时系统中,一般外接存储设备的访问速度都远远低于物理内存的访问速度,因此采用页面交换机制将引发系统性能的下降,系统的实时性也得不到保证。因此,为提高实时环境中系统的执行效率,在对实时系统的内存进行管理和分配时,都只采用片分内存的方法,而不采用页面交换机制。但是,不采用页面交换机制又会带来的一个新的问题因为系统的内存是有限的,在对实时系统的内存进行分配时,由于没有采用页面交换机制,会出现系统内存不够的问题。当内存都被申请分配完以后,如果还有应用模块必须申请内存,那么为了给应用模块分配内存,系统只好进行复位或者让应用模块等待。系统复位就是释放所有的内存空间,将整个系统恢复到初始状态,这样所带来的后果对系统而言显然是难以接受的;而让应用模块等待就有可能出现系统运行速度不能预期的问题,这对于实时系统而言也将是致命的。
技术实现思路
有鉴于此,本专利技术的主要目的在于提供,以解决实时环境中系统内存不够所带来的问题。为达到上述目的,本专利技术提供了,其特征在于,该方法至少包括以下步骤A、判断设置的应用模块使用内存的优先级别,将内存优先分配给使用内存为高优先级的应用模块;B、当内存被分配完以后还有应用模块申请内存,则根据应用模块使用内存的优先级别,强制释放低优先级的应用模块占用的内存,并将释放的内存分配给高优先级的应用模块。上述方案中,该方法在步骤A之前进一步包括设置内存使用百分比的阈值,当应用模块向内存管理模块申请内存时,判断内存使用百分比是否达到阈值,如果没有达到阈值,则直接将内存分配给应用模块;如果达到阈值,则执行步骤A。上述方案中,所述设置的内存百分比阈值被保存在百分比阈值寄存器中;所述的百分比阈值支持掉电存储;所述的百分比阈值寄存器在内存中。上述方案中,在所述的内存分配给应用模块以后进一步包括内存管理模块实时记录内存使用百分比;所述的内存使用百分比被保存在百分比实时寄存器中;所述的百分比实时寄存器在内存中。因此,本专利技术提供的这种分配内存的方法,通过设置应用模块使用内存的优先级别,在应用模块申请内存时,根据应用模块使用内存的优先级别来分配内存,可以在内存使用百分比达到阈值以后放慢内存分配的速度,防止了系统因内存被迅速分配完而发生崩溃,并且保证一些重要的应用模块在内存资源紧张的情况下能够优先分配到内存;当内存被分配完以后还有应用模块申请内存时,强制释放低优先级的应用模块占用的内存,并将释放的内存分配给高优先级的应用模块,保证一些重要的应用模块在内存资源被分配完以后也能够顺利分配到内存。附图说明图1为本专利技术一个较佳实施例中分配内存的方法流程图。具体实施例方式为使本专利技术的目的、技术方案和优点更加清楚明白,以下举实施例,并参照附图,对本专利技术进一步详细说明。本专利技术提供了,通过设置应用模块使用内存的优先级别,在应用模块申请内存时,根据应用模块使用内存的优先级别来分配内存;当内存资源被分配完以后还有应用模块申请内存时,强制释放低优先级的应用模块占用的内存,并将释放的内存分配给高优先级的应用模块。虽然同一个应用模块可以用来处理多个事件,但是应用模块处理的每个事件的重要程度却是不相同的,所以可以根据应用模块所处理每个事件的重要程度来设置应用模块使用内存的优先级别。对于设备故障、系统告警等比较重要的事件,应用模块使用内存的优先级别设置为高优先级;对于一些提示性信息或者事件上报,应用模块使用内存的优先级别设置为低优先级。另外,在实际应用中还可以设置一个内存使用百分比的阈值,内存使用百分比的阈值是根据系统的实际情况进行设置的,它被保存在内存的百分比阈值寄存器中。内存百分比阈值即使在掉电情况下仍然不会丢失,支持掉电存储。另外,内存百分比阈值可以修改,如根据实际应用情况修改内存百分比阈值的数值。在本专利技术较佳实施例中,内存使用百分比被记录和保存在内存的百分比实时寄存器中。如图1所示,图1为本专利技术一个较佳实施例中分配内存的方法流程图,该方法包括以下步骤步骤101~102应用模块向内存管理模块申请内存,内存管理模块根据百分比阈值寄存器中记录的内存使用百分比,判断内存使用百分比是否达到阈值,如果内存使用百分比没有达到阈值,则执行步骤103;否则,执行步骤104;步骤103内存管理模块直接分配内存给应用模块,并执行步骤107;步骤104内存管理模块判断应用模块使用内存的优先级别,如果应用模块使用内存的优先级别为高优先级,则执行步骤105;否则,执行步骤109;步骤105内存管理模块对内存进行分配,如果此时内存资源还没有被分配完,则直接将内存分配给应用模块,内存分配成功,执行步骤107;如果此时内存资源已经被分配完,则内存分配失败,执行步骤106;步骤106内存管理模块强制释放低优先级的应用模块占用的内存,并将释放的内存分配给高优先级的应用模块;步骤107内存中的百分比阈值寄存器记录并保存内存使用的百分比;步骤108内存申请成功;步骤109~110内存管理模块不分配内存给应用模块,内存申请失败。在本专利技术所举的这个较佳实施例中,在对应用模块分配内存时,内存管理模块先判断内存使用百分比,当内存使用百分比达到一定的阈值以后,才根据应用模块使用内存的优先级别,将内存优先分配给使用内存为高优先级的应用模块。在实际应用中,类似的实施方案还可以没有任何困难地直接根据应用模块使用内存的优先级别,先将内存优先分配给使用内存为高优先级的应用模块,再将内存分配给使用内存为低优先级的应用模块,而不再对内存使用百分比进行判断。当内存资源被分配完以后还有应用模块申请内存时,就强制释放低优先级的应用模块占用的内存,并将释放的内存分配给高优先级的应用模块。从上面的实施例可以看出,本专利技术提供的这种分配内存的方法,通过设置应用模块使用内存的优先级别,在应用模块申请内存时,根据应用模块使用内存的优先级别来分配内存,可以在内存使用百分比达到阈值以后放慢内存分配的速度,防止了系统因内存被迅速分配完而发生崩溃,并且保证一些重要的应用模块在内存资源紧张的情况下能够优先分配到内存;当内存被分配完以后还有应用模块申请内存时,强制释放低优先级的应用模块占用的内存,并将释放的内存分配给高优先级的应用模块,保证一些重要的应用模块在内存资源被分配完以后也能够顺利分配到内存。以上所述的具体实施例,对本专利技术的目的、技术方案和本文档来自技高网
...

【技术保护点】
一种分配内存的方法,其特征在于,该方法至少包括以下步骤:A、判断设置的应用模块使用内存的优先级别,将内存优先分配给使用内存为高优先级的应用模块;B、当内存被分配完以后还有应用模块申请内存,则根据应用模块使用内存的优先级别,强 制释放低优先级的应用模块占用的内存,并将释放的内存分配给高优先级的应用模块。

【技术特征摘要】
1.一种分配内存的方法,其特征在于,该方法至少包括以下步骤A、判断设置的应用模块使用内存的优先级别,将内存优先分配给使用内存为高优先级的应用模块;B、当内存被分配完以后还有应用模块申请内存,则根据应用模块使用内存的优先级别,强制释放低优先级的应用模块占用的内存,并将释放的内存分配给高优先级的应用模块。2.根据权利要求1所述的方法,其特征在于,该方法在步骤A之前进一步包括设置内存使用百分比的阈值,当应用模块向内存管理模块申请内存时,判断内存使用百分比是否达到阈值,如果没有达到阈值,则直接将内存分配给应用模块;如果达到阈值,则执...

【专利技术属性】
技术研发人员:韦震宇
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:94[中国|深圳]

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

1