一种嵌入式系统内存管理方法及装置与流程

文档序号:17773577发布日期:2019-05-28 19:44阅读:197来源:国知局
一种嵌入式系统内存管理方法及装置与流程

本发明涉及嵌入式系统技术领域,尤其涉及一种嵌入式系统内存管理方法及装置。



背景技术:

目前,嵌入式系统的应用非常广泛,嵌入式系统一般由嵌入式计算机系统和执行装置组成,而嵌入式计算机系统是整个嵌入式系统的核心,由硬件层、中间层、系统软件层和应用软件层组成。其中,图形处理器(graphicsprocessingunit,gpu)是硬件层的重要组成部分,用于执行复杂的数学和几何计算,实现对图像的渲染和显示,是“人机对话”的重要设备之一。

通常情况下,gpu在对图像的渲染和显示的过程中会使用大量的内存资源,而由于嵌入式产品的性能限制,嵌入式系统的内存资源是有限的,这可能会影响gpu的正常运作,因此,如何高效管理和使用嵌入式系统的内存是非常有必要的。



技术实现要素:

本发明实施例提供了一种嵌入式系统内存管理方法及装置,具体的,本发明实施例提供的技术方案如下:

第一方面,本发明实施例提供了一种嵌入式系统内存管理方法,包括:

接收gpu发送的内存分配请求;其中,内存分配请求至少携带有gpu请求分配的内存大小;

若确定为gpu配置的专用内存区域的大小满足gpu请求分配的内存大小,则根据gpu请求分配的内存大小,从专用内存区域中为gpu分配内存;其中,专用内存区域是从嵌入式系统的内存中为gpu划分出的内存区域。

第二方面,本发明实施例提供了一种嵌入式系统内存管理装置,包括:

接收单元,用于接收gpu发送的内存分配请求;其中,内存分配请求至少携带有gpu请求分配的内存大小;

分配单元,用于若确定为gpu配置的专用内存区域的大小满足gpu请求分配的内存大小,则根据gpu请求分配的内存大小,从专用内存区域中为gpu分配内存;其中,专用内存区域是从嵌入式系统的内存中为gpu划分出的内存区域。

第三方面,本发明实施例还提供了一种嵌入式系统内存管理设备,包括:存储器和处理器,其中,存储器,用于存储计算机指令;处理器,用于执行计算机指令以实现本发明实施例提供的嵌入式系统内存管理方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,计算机指令被处理器执行时实现本发明实施例提供的嵌入式系统内存管理方法。

本发明实施例的有益效果如下:

本发明实施例中,在嵌入式系统的内存中为gpu预留出专用内存区域,在接收到gpu发送的内存分配请求时,优先从为gpu配置的专用内存区域中分配内存,这样,不仅优化了嵌入式系统中的内存使用,而且,通过为gpu预留专用内存区域,能够在gpu使用内存时尽可能地满足gpu对内存的使用需求,从而有效地解决了图像的渲染或显示因内存不足而出现异常的问题,保证了gpu的正常运行,提高了嵌入式系统运行的稳定性和用户体验。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本发明实施例中的嵌入式系统内存管理方法的流程示意图;

图2为本发明实施例中的嵌入式系统内存管理方法的具体流程示意图;

图3为本发明实施例中的嵌入式系统内存管理装置的功能结构示意图;

图4为本发明实施例中的嵌入式系统内存管理设备的硬件结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,并不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前,嵌入式系统中默认的内存分配方式是优先从低端内存区域中分配内存,当低端内存区域的内存不足时,再从高端内存区域中分配内存,这样,由于低端内存区域通常是内存较小的区域,优先从低端内存区域中分配内存很可能出现因内存不足导致嵌入式系统崩溃的问题,为此,本发明实施例针对嵌入式系统,例如基于通用微处理器(advancedriscmachines,arm)体系结构的嵌入式linux系统等,提供了一种内存管理方法,该方法可以由嵌入式系统中的内存管理装置来执行,具体的,内存管理装置预先从嵌入式系统的内存中为gpu划分出专用内存区域,当接收到gpu发送的内存分配请求时,若确定为gpu配置的专用内存区域的大小满足gpu请求分配的内存大小,则根据gpu请求分配的内存大小,从专用内存区域中为gpu分配内存。这样,不仅优化了嵌入式系统中的内存使用,而且,通过为gpu预留专用内存区域,能够在gpu使用内存时尽可能地满足gpu对内存的使用需求,从而有效地解决了图像的渲染或显示因内存不足而出现异常的问题,保证了gpu的正常运行,提高了嵌入式系统运行的稳定性和用户体验。

下面结合附图对本发明实施例提供的嵌入式系统内存管理方法进行详细描述,当然,本发明并不限于以下实施例。

在本发明实施例提供的嵌入式系统内存管理方法中,内存管理装置可以预先将嵌入式系统的内存划分为内存大小不小于预设阈值的高端内存区域以及内存大小小于预设阈值的低端内存区域,并从嵌入式系统的高端内存区域中为gpu划分出的专用高端内存区域,从嵌入式系统的低端内存区域中为gpu划分出的专用低端内存区域,从而将划分出的专用高端内存区域和专用低端内存区域确定为gpu的专用内存区域,其中,专用低端内存区域的内存大小小于专用高端内存区域的内存大小。

此外,在本发明实施例提供的嵌入式系统内存管理方法中,内存管理装置还可以预先将内核中的大物理地址扩展(largephysicaladdressextension,lpae)宏关闭,使内存管理装置在接收到gpu发送的内存分配请求时,不再优先从低端内存区域中分配内存,而是先从为gpu配置的专用内存区域中分配内存,具体的,参阅图1所示,本发明实施例提供的嵌入式系统内存管理方法的流程如下:

步骤101:接收gpu发送的内存分配请求;其中,内存分配请求至少携带有gpu请求分配的内存大小。

在实际应用中,gpu在运行过程中可以根据当前数据量确定所需内存大小,并根据确定出的所需内存大小向内存管理装置发送内存分配请求。

步骤102:若确定为gpu配置的专用内存区域的大小满足gpu请求分配的内存大小,则根据gpu请求分配的内存大小,从专用内存区域中为gpu分配内存;其中,专用内存区域是从嵌入式系统的内存中为gpu划分出的内存区域。

在实际应用中,内存管理装置在接收到gpu发送的内存分配请求时,可以先确定为gpu配置的专用内存区域的大小是否满足gpu请求分配的内存大小,具体的,可以在确定专用高端内存区域的内存大小不小于gpu请求分配的内存大小时,认为专用内存区域的大小满足gpu请求分配的内存大小,进而可以根据gpu请求分配的内存大小,从专用高端内存区域中为gpu分配内存。这样,优先从专用高端内存区域中为gpu分配内存,能够有效地解决图像的渲染或显示因内存不足而出现异常的问题,尽可能地保证了gpu的正常运行,提高了嵌入式系统运行的稳定性和用户体验。

此外,内存管理装置若确定为gpu配置的专用高端内存区域的内存大小小于gpu请求分配的内存大小,则可以在确定高端内存区域的大小满足gpu请求分配的内存大小时,根据gpu请求分配的内存大小,从高端内存区域中为gpu分配内存。这样,当为gpu配置的专用高端内存区域的内存大小不满足gpu请求分配的内存大小时,优先从嵌入式系统的高端内存区域中为gpu分配内存,也能够有效地解决图像的渲染或显示因内存不足而出现异常的问题,尽可能地保证gpu的正常运行。

进一步的,内存管理装置若确定嵌入式系统的高端内存区域的大小不满足gpu请求分配的内存大小,则还可以在确定专用低端内存区域的大小满足gpu请求分配的内存大小时,根据gpu请求分配的内存大小,从专用低端内存区域中为gpu分配内存。这样,当嵌入式系统的高端内存区域的大小不满足gpu请求分配的内存大小时,再从为gpu配置的专用低端内存区域中为gpu分配内存,能够尽可能地避免因嵌入式系统的内存不足而出现图像渲染或显示异常的问题,有效地保证了gpu的正常运行。

进一步的,内存管理装置若确定专用低端内存区域的大小不满足gpu请求分配的内存大小,则还可以在确定低端内存区域的大小满足gpu请求分配的内存大小时,根据gpu请求分配的内存大小,从低端内存区域中为gpu分配内存。

值得说的是,本发明实施例中,内存管理装置在根据gpu请求分配的内存大小,为gpu分配内存后,还可以在确定gpu针对分配的内存使用完成时释放分配的内存,或者,在确定gpu在使用分配的内存的过程中发生异常时释放分配的内存,从而实现了内存的循环使用。

下面对本发明实施例提供的嵌入式系统内存管理方法作进一步详细说明,参阅图2所示,本发明实施例提供的嵌入式系统内存管理方法的具体流程如下:

步骤201:接收gpu发送的内存分配请求;其中,内存分配请求至少携带有gpu请求分配的内存大小。

步骤202:判断为gpu配置的专用高端内存区域的大小是否满足gpu请求分配的内存大小,若是,则执行步骤203;若否,则执行步骤204。

步骤203:根据gpu请求分配的内存大小,从专用高端内存区域中为gpu分配内存,并继续执行步骤211。

步骤204:判断嵌入式系统的高端内存区域的大小是否满足gpu请求分配的内存大小,若是,则执行步骤205;若否,则执行步骤206。

步骤205:根据gpu请求分配的内存大小,从嵌入式系统的高端内存区域中为gpu分配内存,并继续执行步骤211。

步骤206:判断为gpu配置的专用低端内存区域的大小是否满足gpu请求分配的内存大小,若是,则执行步骤207;若否,则执行步骤208。

步骤207:根据gpu请求分配的内存大小,从专用低端内存区域中为gpu分配内存,并继续执行步骤211。

步骤208:判断嵌入式系统的低端内存区域的大小是否满足gpu请求分配的内存大小,若是,则执行步骤209;若否,则执行步骤210。

步骤209:根据gpu请求分配的内存大小,从低端内存区域中为gpu分配内存,并继续执行步骤211。

步骤210:提示gpu当前内存不足。

步骤211:在确定gpu针对分配的内存使用完成时,或者在确定gpu在使用分配的内存的过程中发生异常时,释放为gpu分配的内存。

基于上述实施例,本发明实施例提供了一种嵌入式系统内存管理装置,参阅图3所示,本发明实施例提供的嵌入式系统内存管理装置300至少包括:

接收单元301,用于接收gpu发送的内存分配请求;其中,内存分配请求至少携带有gpu请求分配的内存大小;

分配单元302,用于若确定为gpu配置的专用内存区域的大小满足gpu请求分配的内存大小,则根据gpu请求分配的内存大小,从专用内存区域中为gpu分配内存;其中,专用内存区域是从嵌入式系统的内存中为gpu划分出的内存区域。

在一种可能的实施方式中,若嵌入式系统的内存至少被划分为内存大小不小于预设阈值的高端内存区域,以及内存大小小于预设阈值的低端内存区域,则专用内存区域包括:

从高端内存区域中为gpu划分出的专用高端内存区域;以及,从低端内存区域中为gpu划分出的专用低端内存区域;

其中,专用低端内存区域的内存大小小于专用高端内存区域的内存大小。

在一种可能的实施方式中,在确定为gpu配置的专用内存区域的大小满足gpu请求分配的内存大小时,分配单元302具体用于:

若确定专用高端内存区域的内存大小不小于gpu请求分配的内存大小,则认为专用内存区域的大小满足gpu请求分配的内存大小。

在一种可能的实施方式中,在根据gpu请求分配的内存大小,从专用内存区域中为gpu分配内存时,分配单元302具体用于:

根据gpu请求分配的内存大小,从专用高端内存区域中为gpu分配内存。

在一种可能的实施方式中,若确定专用高端内存区域的内存大小小于gpu请求分配的内存大小,则分配单元302还用于:

若确定高端内存区域的大小满足gpu请求分配的内存大小,则根据gpu请求分配的内存大小,从高端内存区域中为gpu分配内存。

在一种可能的实施方式中,若确定高端内存区域的大小不满足gpu请求分配的内存大小,则分配单元302还用于:

若确定专用低端内存区域的大小满足gpu请求分配的内存大小,则根据gpu请求分配的内存大小,从专用低端内存区域中为gpu分配内存。

在一种可能的实施方式中,若确定专用低端内存区域的大小不满足gpu请求分配的内存大小,则分配单元302还用于:

若确定低端内存区域的大小满足gpu请求分配的内存大小,则根据gpu请求分配的内存大小,从低端内存区域中为gpu分配内存。

在一种可能的实施方式中,本发明实施例提供的嵌入式系统内存管理装置300还包括:

释放单元303,用于在分配单元302根据gpu请求分配的内存大小,为gpu分配内存之后,在确定gpu针对分配的内存使用完成时,释放分配的内存;或者,在确定gpu在使用分配的内存的过程中发生异常时,释放分配的内存。

值得说的是,本发明实施例提供的嵌入式系统内存管理装置300中的各个单元对应于本发明实施例中的上述内存管理装置,从而可以实现嵌入式系统内存管理功能。

在介绍了本发明示例性实施方式的嵌入式系统内存管理方法和装置之后,接下来,对本发明实施例提供的嵌入式系统内存管理设备进行简单介绍。

参阅图4所示,本发明实施例提供的嵌入式系统内存管理设备400至少包括:处理器41和存储器42,其中,存储器42,用于存储计算机指令;处理器41,用于执行计算机指令以实现本发明实施例提供的嵌入式系统内存管理方法。

需要说明的是,图4所示的嵌入式系统内存管理设备400仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

本发明实施例提供的嵌入式系统内存管理设备400还可以包括连接不同组件(包括处理器41和存储器42)的总线43。其中,总线43表示几类总线结构中的一种或多种,包括存储器总线、外围总线、局域总线等。

存储器42可以包括易失性存储器形式的可读介质,例如随机存储器(randomaccessmemory,ram)421和/或高速缓存存储器422,还可以进一步包括只读存储器(readonlymemory,rom)423。

存储器42还可以包括具有一组(至少一个)程序模块424的程序工具424,程序模块424包括但不限于:操作子系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

嵌入式系统内存管理设备400也可以与一个或多个外部设备44(例如键盘、遥控器等)通信,还可以与一个或者多个使得用户能与嵌入式系统内存管理设备400交互的设备通信(例如手机、电脑等),和/或,与使得嵌入式系统内存管理设备400能与一个或多个其它嵌入式系统内存管理设备400进行通信的任何设备(例如路由器、调制解调器等)通信。这种通信可以通过输入/输出(input/output,i/o)接口45进行。并且,嵌入式系统内存管理设备400还可以通过网络适配器46与一个或者多个网络(例如局域网(localareanetwork,lan),广域网(wideareanetwork,wan)和/或公共网络,例如因特网)通信。如图4所示,网络适配器46通过总线43与嵌入式系统内存管理设备400的其它模块通信。应当理解,尽管图4中未示出,可以结合嵌入式系统内存管理设备400使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、磁盘阵列(redundantarraysofindependentdisks,raid)子系统、磁带驱动器以及数据备份存储子系统等。

下面对本发明实施例提供的计算机可读存储介质进行介绍。本发明实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机指令,该计算机指令被处理器执行时实现本发明实施例提供的嵌入式系统内存管理方法。具体地,该可执行程序可以内置在嵌入式系统内存管理设备400中,这样,嵌入式系统内存管理设备400就可以通过执行内置的可执行程序实现本发明实施例提供的嵌入式系统内存管理方法。

此外,本发明实施例提供的嵌入式系统内存管理方法还可以实现为一种程序产品,该程序产品包括程序代码,当该程序产品可以在嵌入式系统内存管理设备400上运行时,该程序代码用于使嵌入式系统内存管理设备400执行本发明实施例提供的嵌入式系统内存管理方法。

本发明实施例提供的程序产品可以采用一个或多个可读介质的任意组合,其中,可读介质可以是可读信号介质或者可读存储介质,而可读存储介质可以是但不限于是电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合,具体地,可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、ram、rom、可擦式可编程只读存储器(erasableprogrammablereadonlymemory,eprom)、光纤、便携式紧凑盘只读存储器(compactdiscread-onlymemory,cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。

本发明实施例提供的程序产品可以采用cd-rom并包括程序代码,还可以在计算设备上运行。然而,本发明实施例提供的程序产品不限于此,在本发明实施例中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。

此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1