CN103744736B - 内存管理的方法及Linux终端 - Google Patents
内存管理的方法及Linux终端 Download PDFInfo
- Publication number
- CN103744736B CN103744736B CN201410010312.0A CN201410010312A CN103744736B CN 103744736 B CN103744736 B CN 103744736B CN 201410010312 A CN201410010312 A CN 201410010312A CN 103744736 B CN103744736 B CN 103744736B
- Authority
- CN
- China
- Prior art keywords
- memory
- region
- storage allocation
- cpu
- allocation space
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000015654 memory Effects 0.000 title claims abstract description 376
- 238000000034 method Methods 0.000 title claims abstract description 20
- 230000005055 memory storage Effects 0.000 claims abstract description 31
- 230000007246 mechanism Effects 0.000 claims description 11
- 230000006870 function Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 11
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 101100325756 Arabidopsis thaliana BAM5 gene Proteins 0.000 description 2
- 101150046378 RAM1 gene Proteins 0.000 description 2
- 101100476489 Rattus norvegicus Slc20a2 gene Proteins 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种内存管理的方法及Linux终端,内存管理的方法包括以下步骤:当在Linux终端上运行程序后,获取为所述程序分配内存空间的分页请求标识;判断所述分页请求标识是否为预设的图像内存区域对应的分页请求标识,根据判断结果在图像内存区域或CPU内存区域分配内存空间,本发明能够根据程序运行的需要,动态地为CPU及GPU分配内存空间,提高系统的性能。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种内存管理的方法及Linux终端。
背景技术
目前很多Android设备采用Linux操作系统,如计算机或者智能电视等。这些采用Linux操作系统的设备的内存硬件电路基本上都包括CPU、GPU、两个MIU((memoryinterface unit,存储接口单元)及两个随机存储器(random access memory,RAM),如图1所示,CPU或GPU分别通过总线及对应的MIU访问对应的内存。
在内存管理中,由于CPU相比GPU使用的内存空间要多很多,因此通常在上述的RAM1部分划分出一块内存区域,以供GPU专用,而剩余部分内存由操作系统内核统一管理,并供运行于CPU上的程序使用。这种方法的优点是:内存管理比较简单,系统并发内存访问速度也比较快。
但是,由于上述RAM1是固定划分出来的,在实际使用中具有一定的限制,例如当有较多复杂的渲染任务时,GPU需要的内存空间过大而无法满足,这时将导致渲染不能顺利进行,用户界面显示异常;而此时正在运行的应用可能比较少,系统内存有很多剩余,却无法使用;再如当有较多应用程序在运行时,CPU需要的内存空间较大,由于系统内存的使用限制,将导致一些应用程序无法运行或者被强行关闭;而此时GPU专用内存可能还有剩余,却无法使用。
发明内容
本发明的主要目的在于提供一种内存管理的方法及Linux终端,旨在根据程序运行的需要,动态地为CPU及GPU分配内存空间,提高系统的性能。
为了达到上述目的,本发明提出一种内存管理的方法,包括以下步骤:
S1、当在Linux终端上运行程序后,获取为所述程序分配内存空间的分页请求标识;
S2、判断所述分页请求标识是否为预设的图像内存区域对应的分页请求标识,根据判断结果在图像内存区域或CPU内存区域分配内存空间。
优选地,所述步骤S2具体为:
S21、判断所述分页请求标识是否为预设的图像内存区域对应的分页请求标识,若是则转到步骤S22,否则转到步骤S23;S22、在所述图像内存区域中分配内存空间;
S23、在所述CPU内存区域分配内存空间。
优选地,所述步骤S22后还包括:
S24、当在所述图像内存区域中分配内存空间失败时,在所述CPU内存区域中分配内存空间;
所述步骤S23之后还包括:
S25、当在所述CPU内存区域中分配内存空间失败时,在所述图像内存区域中分配内存空间。
优选地,所述步骤S1之前包括:
S01、在所述Linux终端中设置所述图像内存区域;
S02、将所述Linux终端的图像专用内存区域映射到所述图像内存区域中,并初始化所述图像内存区域。
优选地,所述CPU内存区域包括:直接存取内存区域、普通内存区域及高端内存区域;
所述步骤S24具体包括:
S241、采用预定算法在所述直接存取内存区域、普通内存区域及高端内存区域中查找满足所述程序运行的页面块;
S242、在首先查找到的满足所述程序运行的页面块对应的内存区域中分配内存空间。
优选地,所述步骤S25之后包括:
S26、当在所述图像内存区域中分配内存空间失败时,触发所述Linux终端的内存溢出机制进行内存空间的释放,并再次在所述图像内存区域为所述程序分配内存空间。
本发明还提供一种Linux终端,包括:
获取模块,用于当在Linux终端上运行程序后,获取为所述程序分配内存空间的分页请求标识;
分配模块,用于判断所述分页请求标识是否为预设的图像内存区域对应的分页请求标识,根据判断结果在图像内存区域或CPU内存区域分配内存空间。
优选地,所述分配模块包括:
判断单元,用于判断所述分页请求标识是否为预设的图像内存区域对应的分页请求标识;
第一分配单元,用于若是预设的图像内存区域对应的分页请求标识,在所述图像内存区域中分配内存空间;
第二分配单元,用于若不是预设的图像内存区域对应的分页请求标识,在所述CPU内存区域分配内存空间。
优选地,所述分配模块还包括:
第三分配单元,用于当在所述图像内存区域中分配内存空间失败时,在所述CPU内存区域中分配内存空间;
第四分配单元,用于当在所述CPU内存区域中分配内存空间失败时,在所述图像内存区域中分配内存空间。
优选地,还包括:
设置模块,用于在所述Linux终端中设置所述图像内存区域;
初始化模块,用于将所述Linux终端的图像专用内存区域映射到所述图像内存区域中,并初始化所述图像内存区域。
优选地,所述CPU内存区域包括:直接存取内存区域、普通内存区域及高端内存区域;所述第三分配单元包括:
查找子单元,用于采用预定算法在直接存取内存区域、普通内存区域及高端内存区域中查找满足所述程序运行的页面块;
分配子单元,用于在第一个查找到的满足所述程序运行的页面块对应的内存区域中分配内存空间。
优选地,所述分配模块还包括第五分配单元,用于当在所述图像内存区域中分配内存空间失败时,触发所述Linux终端的内存溢出机制进行内存空间的释放,并再次在所述图像内存区域为所述程序分配内存空间。
本发明提出的一种内存管理的方法及Linux终端,根据所获取的分页请求标识,首先在该分页请求标识对应的内存区域中为程序分配内存空间,即当为图像内存区域对应的分页请求标识时,优先在图像内存区域中分配内存空间,在分配失败时,可在CPU内存区域分配内存空间;当不是图像内存区域对应的分页请求标识时,优先在CPU内存区域中分配内存空间,在分配失败时,可在图像内存区域中分配内存空间,本发明在保证并发访问速度不变的前提下,根据程序运行的需要,动态地为CPU及GPU分配内存空间,可以解除现有技术中GPU专用内存的限制,充分高效地使用所有内存空间,在相同内存配置的条件下,本实施例的系统性能更优越。
附图说明
图1是现有技术中CPU及GPU的内存的电路图;
图2是本发明内存管理的方法第一实施例的流程示意图;
图3是本发明内存管理的方法第二实施例的流程示意图;
图4是图3所示的在图像内存区域或CPU内存区域中分配内存空间的一实施例的流程示意图;
图5是图3所示的在图像内存区域或CPU内存区域中分配内存空间的另一实施例的流程示意图;
图6是图5所示的当在图像内存区域中分配内存空间失败时,在CPU内存区域中分配内存空间的一实施例的流程示意图;
图7是本发明Linux终端第一实施例的结构示意图;
图8是本发明Linux终端第二实施例的结构示意图;
图9是图8所示的分配模块一实施例的结构示意图;
图10是图8所示的分配模块另一实施例的结构示意图;
图11是图10所示的第三分配单元的结构示意图。
为了使发明的技术方案更加清楚、明了,下面将结合附图作进一步详述。
具体实施方式
具体地,如图2所示,本发明一实施例提出一种内存管理的方法,包括:
步骤S1,当在Linux终端上运行程序后,获取为所述程序分配内存空间的分页请求标识;
其中,Linux终端可以为计算机或者智能电视等,本实施例以智能电视为例进行说明。
其中,分页请求标识与为程序分配的内存区域对应。通常来说,Linux终端上具有ZONE_DMA(Direct Memory Access,直接存取内存区域)、ZONE_NORMAL(普通内存区域)及ZONE_HIGHMEM(高端内存区域),每一个内存区域对应一种分页请求标识,例如若分页请求标识为GFG_NORMAL,则在普通内存区域为该程序分配内存空间。
步骤S2,判断所述分页请求标识是否为预设的图像内存区域对应的分页请求标识,根据判断结果在图像内存区域或CPU内存区域分配内存空间。
其中,本实施例还预先设置一图像内存区域,图像内存区域可以位于上述三个内存区域的任意两个内存区域之间,例如位于直接存取内存区域与普通内存区域之间。
其中,定义上述直接存取内存区域、普通内存区域及高端内存区域为CPU内存区域。
当获取分页请求标识后,首先判断该分页请求标识是否是图像内存区域对应的分页请求标识,即是否为GFG_GPU,根据判断结果在图像内存区域或CPU内存区域分配内存空间。
其中,本实施例中若判断是图像内存区域对应的分页请求标识,则优先在图像内存区域分配内存空间,在图像内存区域分配内存空间失败时,可在CPU内存区域分配内存空间;同理,若判断是CPU内存区域对应的分页请求标识,则优先在CPU内存区域分配内存空间,在CPU内存区域分配内存空间失败时,可在图像内存区域分配内存空间。
本实施例根据所获取的分页请求标识,首先在该分页请求标识对应的内存区域中为程序分配内存空间,即当为图像内存区域对应的分页请求标识时,优先在图像内存区域中分配内存空间,在分配失败时,可在CPU内存区域分配内存空间;当不是图像内存区域对应的分页请求标识时,优先在CPU内存区域中分配内存空间,在分配失败时,可在图像内存区域中分配内存空间,本实施例在保证并发访问速度不变的前提下,根据程序运行的需要,动态地为CPU及GPU分配内存空间,可以解除现有技术中GPU专用内存的限制,充分高效地使用所有内存空间,在相同内存配置的条件下,本实施例的系统性能更优越。
在一优选的实施例中,如图3所示,本发明另一实施例提出一种内存管理的方法,在上述图2实施例的基础上,在上述步骤S1之前还包括步骤S01及步骤S02,其中:
步骤S01,在所述Linux终端中设置所述图像内存区域;
步骤S02,将所述Linux终端的图像专用内存区域映射到所述图像内存区域中,并初始化所述图像内存区域。
本实施例的图像内存区域可位于CPU内存区域中的任意两个内存区域之间,设置图像内存区域包括修改初始化函数、内存分配函数、内存释放函数及增加GFP_GPU分页请求标识等。其中,修改初始化函数主要是修改init.c文件中的arm_bootmem_free函数,修改内存分配函数主要是修改page_alloc.c文件中的alloc_pages_nodemask函数及相关联函数。
将Linux终端的图像专用内存区域映射到图像内存区域中,可使得所有的内存均由操作系统内核同一管理。
在设置图像内存区域完成后,执行初始化图像内存区域的流程,即获取图像内存区域的起始地址、结束地址及图像内存区域的大小,对图像内存区域的空闲页划分为对应的页面块,对图像内存区域对应的页表初始化等。
在一优选的实施例中,如图4所示,上述步骤S2在图像内存区域或CPU内存区域中分配内存空间的步骤包括:
步骤S21,判断所述分页请求标识是否为预设的图像内存区域对应的分页请求标识,若是则转到步骤S22,否则转到步骤S23;
步骤S22,在所述图像内存区域中分配内存空间;
步骤S23,在所述CPU内存区域分配内存空间。
在另一优选的实施例中,如图5所示,上述步骤S2在图像内存区域或CPU内存区域中分配内存空间的步骤还可以包括:
步骤S21,判断所述分页请求标识是否为预设的图像内存区域对应的分页请求标识,若是则转到步骤S22,否则转到步骤S23;
步骤S22,在所述图像内存区域中分配内存空间,若分配成功则结束流程,若分配失败进入步骤S24;
步骤S23,在所述CPU内存区域分配内存空间,若分配成功则结束流程,若分配失败进入步骤S25;
步骤S24,当在所述图像内存区域中分配内存空间失败时,在所述CPU内存区域中分配内存空间;
步骤S25,当在所述CPU内存区域中分配内存空间失败时,在所述图像内存区域中分配内存空间;
步骤S26,当在所述图像内存区域中分配内存空间失败时,触发所述Linux终端的内存溢出机制进行内存空间的释放,并再次在所述图像内存区域为所述程序分配内存空间。
若分页请求标识为图像内存区域对应的分页请求标识,则确定在图像内存区域中分配内存空间,当在图像内存区域中分配内存空间失败时,即图像内存区域中没有足够的剩余内存空间时,按照操作系统内核默认的顺序在直接存取内存区域、普通内存区域及高端内存区域中查找满足条件的内存区域。
本实施例与现有技术不同的是,本实施例预设的图像内存区域优先供GPU使用,但并不仅仅专门供GPU使用,例如当有较多复杂的渲染任务时,预设的图像内存区域可能由于内存空间过小而无法满足条件,此时可以在优先供CPU使用的CPU内存区域中按照默认的顺序查找满足条件的内存区域,避免界面显示异常的问题并保证Linux终端的正常运行。
若分页请求标识不是图像内存区域对应的分页请求标识,则确定在直接存取内存区域、普通内存区域或高端内存区域中分配内存空间,当在直接存取内存区域、普通内存区域或高端内存区域分配内存空间失败时,即这三个内存区域中没有足够的剩余内存空间时,可以在图像内存区域中分配内存空间。
本实施例与现有技术不同的是,本实施例的CPU内存区域优先供CPU使用,但当有较多应用程序在运行时,CPU内存区域可能由于内存空间过小而无法满足条件,此时可以在优先供GPU使用的图像内存区域中分配内存空间。
另外,在上述步骤S25中的在图像内存区域中分配内存空间失败时,触发Linux终端的内存溢出机制(Out Of Memory,OOM)进行内存空间的释放,如强行关闭一些不常用的程序以增加可分配的内存空间,并再次尝试为当前的程序分配内存空间。
与上述实施例不同的是,本实施例在分页请求标识不对应的内存区域中分配内存空间时,若仍然失败,则触发内存溢出机制进行内存空间的释放,并再次尝试为当前的程序分配内存空间。
在一优选的实施例中,如图6所示,上述步骤S24在CPU内存区域中分配内存空间包括:
步骤S241,采用预定算法在直接存取内存区域、普通内存区域及高端内存区域中查找满足所述程序运行的页面块;
步骤S242,在首先查找到的满足所述程序运行的页面块对应的内存区域中分配内存空间。
本实施例在CPU内存区域中分配内存空间时,优选采用伙伴算法查找CPU内存区域中满足程序运行的页面块,具体为在与程序所需内存大小相近的页面块的链表中查找,查找是否有该大小的页面块,若有,则直接分配;若无,则在页面块更大的链表中查找。与在CPU内存区域中分配内存空间一样,在图像内存区域中分配内存空间也采用伙伴算法。
如图7所示,本发明一实施例提出一种Linux终端,包括:
获取模块101,用于当在Linux终端上运行程序后,获取为所述程序分配内存空间的分页请求标识;
其中,Linux终端可以为计算机或者智能电视等,本实施例以智能电视为例进行说明。
其中,分页请求标识与为程序分配的内存区域对应。通常来说,Linux终端上具有ZONE_DMA(Direct Memory Access,直接存取内存区域)、ZONE_NORMAL(普通内存区域)及ZONE_HIGHMEM(高端内存区域),每一个内存区域对应一种分页请求标识,例如若分页请求标识为GFG_NORMAL,则在普通内存区域为该程序分配内存空间。
分配模块102,用于判断所述分页请求标识是否为预设的图像内存区域对应的分页请求标识,根据判断结果在图像内存区域或CPU内存区域分配内存空间。
其中,本实施例还预先设置一图像内存区域,图像内存区域可以位于上述三个内存区域的任意两个内存区域之间,例如位于直接存取内存区域与普通内存区域之间。
其中,定义上述直接存取内存区域、普通内存区域及高端内存区域为CPU内存区域。
当获取分页请求标识后,分配模块102判断该分页请求标识是否是图像内存区域对应的分页请求标识,即是否为GFG_GPU,并根据判断结果在图像内存区域或CPU内存区域分配内存空间。
其中,本实施例的分配模块102若判断是图像内存区域对应的分页请求标识,则优先在图像内存区域分配内存空间,在图像内存区域分配内存空间失败时,可在CPU内存区域分配内存空间;同理,若判断是CPU内存区域对应的分页请求标识,则优先在CPU内存区域分配内存空间,在CPU内存区域分配内存空间失败时,可在图像内存区域分配内存空间。
在一优选的实施例中,如图8所示,本发明另一实施例提出一种Linux终端,在上述图7所述的实施例的基础上,还包括:
设置模块099,用于在所述Linux终端中设置所述图像内存区域;
初始化模块100,用于将所述Linux终端的图像专用内存区域映射到所述图像内存区域中,并初始化所述图像内存区域。
本实施例的图像内存区域可位于CPU内存区域中的任意两个内存区域之间,设置模块099设置图像内存区域包括修改初始化函数、内存分配函数、内存释放函数及增加GFP_GPU分页请求标识等。其中,修改初始化函数主要是修改init.c文件中的arm_bootmem_free函数,修改内存分配函数主要是修改page_alloc.c文件中的alloc_pages_nodemask函数及相关联函数。
初始化模块100将Linux终端的图像专用内存区域映射到图像内存区域中,使得所有的内存均由操作系统内核同一管理。
在设置图像内存区域完成后,初始化模块100进行初始化图像内存区域,即获取图像内存区域的起始地址、结束地址及图像内存区域的大小,对图像内存区域的空闲页划分为对应的页面块,对图像内存区域对应的页表初始化等。
在一优选的实施例中,如图9所示,分配模块102包括:
判断单元1021,用于判断所述分页请求标识是否为预设的图像内存区域对应的分页请求标识;
第一分配单元1022,用于若是预设的图像内存区域对应的分页请求标识,在所述图像内存区域中分配内存空间;
第二分配单元1023,用于若不是预设的图像内存区域对应的分页请求标识,在所述CPU内存区域分配内存空间。
在另一优选的实施例中,如图10所示,在上述图9的实施例的基础上,分配模块还包括:
第三分配单元1024,用于当在所述图像内存区域中分配内存空间失败时,在所述CPU内存区域中分配内存空间;
第四分配单元1025,用于当在所述CPU内存区域中分配内存空间失败时,在所述图像内存区域中分配内存空间;
第五分配单元1026,用于当在所述图像内存区域中分配内存空间失败时,触发所述Linux终端的内存溢出机制进行内存空间的释放,并再次在所述图像内存区域为所述程序分配内存空间。
若分页请求标识为图像内存区域对应的分页请求标识,则确定在图像内存区域中分配内存空间,当在图像内存区域中分配内存空间失败时,即图像内存区域中没有足够的剩余内存空间时,按照操作系统内核默认的顺序在直接存取内存区域、普通内存区域及高端内存区域中查找满足条件的内存区域。
本实施例与现有技术不同的是,本实施例预设的图像内存区域优先供GPU使用,但并不仅仅专门供GPU使用,例如当有较多复杂的渲染任务时,预设的图像内存区域可能由于内存空间过小而无法满足条件,此时可以在优先供CPU使用的CPU内存区域中按照默认的顺序查找满足条件的内存区域,避免界面显示异常的问题并保证Linux终端的正常运行。
若分页请求标识不是图像内存区域对应的分页请求标识,则确定在直接存取内存区域、普通内存区域或高端内存区域中分配内存空间,当在直接存取内存区域、普通内存区域或高端内存区域分配内存空间失败时,即这三个内存区域中没有足够的剩余内存空间时,可以在图像内存区域中分配内存空间。
本实施例与现有技术不同的是,本实施例的CPU内存区域优先供CPU使用,但当有较多应用程序在运行时,CPU内存区域可能由于内存空间过小而无法满足条件,此时可以在优先供GPU使用的图像内存区域中分配内存空间。
另外,在上述第四分配单元1025中的在图像内存区域中分配内存空间失败时,触发Linux终端的内存溢出机制(Out Of Memory,OOM)进行内存空间的释放,如强行关闭一些不常用的程序以增加可分配的内存空间,并再次尝试为当前的程序分配内存空间。
与上述实施例不同的是,本实施例在分页请求标识不对应的内存区域中分配内存空间时,若仍然失败,则触发内存溢出机制进行内存空间的释放,并再次尝试为当前的程序分配内存空间。
在一优选的实施例中,如图11所示,第三分配单元1024包括:
查找子单元10241,用于采用预定算法在直接存取内存区域、普通内存区域及高端内存区域中查找满足所述程序运行的页面块;
分配子单元10242,用于在首先查找到的满足所述程序运行的页面块对应的内存区域中分配内存空间。
本实施例在CPU内存区域中分配内存空间时,查找子单元10241优选采用伙伴算法查找CPU内存区域中满足程序运行的页面块,具体为在与程序所需内存大小相近的页面块的链表中查找,查找是否有该大小的页面块,若有,则直接分配;若无,则在页面块更大的链表中查找。与在CPU内存区域中分配内存空间一样,在图像内存区域中分配内存空间也采用伙伴算法。
本发明一种内存管理的方法及Linux终端,根据所获取的分页请求标识,首先在该分页请求标识对应的内存区域中为程序分配内存空间,即当为图像内存区域对应的分页请求标识时,优先在图像内存区域中分配内存空间,在分配失败时,可在CPU内存区域分配内存空间;当不是图像内存区域对应的分页请求标识时,优先在CPU内存区域中分配内存空间,在分配失败时,可在图像内存区域中分配内存空间;在第二次配内存空间,即在分页请求标识不对应的内存区域中分配内存空间时,若仍然失败,则触发内存溢出机制进行内存空间的释放,并再次尝试为当前的程序分配内存空间,本发明在保证并发访问速度不变的前提下,根据程序运行的需要,动态地为CPU及GPU分配内存空间,可以解除现有技术中GPU专用内存的限制,充分高效地使用所有内存空间,在相同内存配置的条件下,本发明的系统性能更优越。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种内存管理的方法,其特征在于,包括以下步骤:
S1、当在Linux终端上运行程序后,获取为所述程序分配内存空间的分页请求标识;
S2、判断所述分页请求标识是否为预设的图像内存区域对应的分页请求标识,根据判断结果在图像内存区域或CPU内存区域分配内存空间;
其中,步骤S2之后,所述方法还包括:
S24、当在所述图像内存区域中分配内存空间失败时,在所述CPU内存区域中分配内存空间;
S25、当在所述CPU内存区域中分配内存空间失败时,在所述图像内存区域中分配内存空间;
其中,步骤S25具体包括:
在所述CPU内存区域中分配内存空间失败时,采用伙伴算法查找所述图像内存区域中是否存在满足所述程序运行的页面块;
在存在满足所述程序运行的页面块时,为所述程序分配内存空间。
2.根据权利要求1所述的方法,其特征在于,所述步骤S2具体为:
S21、判断所述分页请求标识是否为预设的图像内存区域对应的分页请求标识,若是则转到步骤S22,否则转到步骤S23;
S22、在所述图像内存区域中分配内存空间;
S23、在所述CPU内存区域分配内存空间。
3.根据权利要求1所述的方法,其特征在于,步骤S1之前包括:
S01、在所述Linux终端中设置所述图像内存区域;
S02、将所述Linux终端的图像专用内存区域映射到所述图像内存区域中,并初始化所述图像内存区域。
4.根据权利要求1所述的方法,其特征在于,所述CPU内存区域包括:直接存取内存区域、普通内存区域及高端内存区域;
步骤S24具体包括:
S241、采用伙伴算法在所述直接存取内存区域、普通内存区域及高端内存区域中查找满足所述程序运行的页面块;
S242、在首先查找到的满足所述程序运行的页面块对应的内存区域中分配内存空间。
5.根据权利要求1所述的方法,其特征在于,所述步骤S25之后包括:
S26、当在所述图像内存区域中分配内存空间失败时,触发所述Linux终端的内存溢出机制进行内存空间的释放,并再次在所述图像内存区域为所述程序分配内存空间。
6.一种Linux终端,其特征在于,包括:
获取模块,用于当在Linux终端上运行程序后,获取为所述程序分配内存空间的分页请求标识;
分配模块,用于判断所述分页请求标识是否为预设的图像内存区域对应的分页请求标识,根据判断结果在图像内存区域或CPU内存区域分配内存空间;
其中,所述Linux终端,还包括:
第三分配单元,用于当在所述图像内存区域中分配内存空间失败时,在所述CPU内存区域中分配内存空间;
第四分配单元,用于当在所述CPU内存区域中分配内存空间失败时,在所述图像内存区域中分配内存空间;
其中,所述第四分配单元,还用于在所述CPU内存区域中分配内存空间失败时,采用伙伴算法查找所述图像内存区域中是否存在满足所述程序运行的页面块;在存在满足所述程序运行的页面块时,为所述程序分配内存空间。
7.根据权利要求6所述的终端,其特征在于,所述分配模块包括:
判断单元,用于判断所述分页请求标识是否为预设的图像内存区域对应的分页请求标识;
第一分配单元,用于若是预设的图像内存区域对应的分页请求标识,在所述图像内存区域中分配内存空间;
第二分配单元,用于若不是预设的图像内存区域对应的分页请求标识,在所述CPU内存区域分配内存空间。
8.根据权利要求6所述的终端,其特征在于,还包括:
设置模块,用于在所述Linux终端中设置所述图像内存区域;
初始化模块,用于将所述Linux终端的图像专用内存区域映射到所述图像内存区域中,并初始化所述图像内存区域。
9.根据权利要求6所述的终端,其特征在于,所述CPU内存区域包括:直接存取内存区域、普通内存区域及高端内存区域;所述第三分配单元包括:
查找子单元,用于采用伙伴算法在直接存取内存区域、普通内存区域及高端内存区域中查找满足所述程序运行的页面块;
分配子单元,用于在第一个查找到的满足所述程序运行的页面块对应的内存区域中分配内存空间。
10.根据权利要求6所述的终端,其特征在于,所述分配模块还包括第五分配单元,用于当在所述图像内存区域中分配内存空间失败时,触发所述Linux终端的内存溢出机制进行内存空间的释放,并再次在所述图像内存区域为所述程序分配内存空间。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410010312.0A CN103744736B (zh) | 2014-01-09 | 2014-01-09 | 内存管理的方法及Linux终端 |
PCT/CN2014/082598 WO2015103864A1 (zh) | 2014-01-09 | 2014-07-21 | 内存管理的方法及Linux终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410010312.0A CN103744736B (zh) | 2014-01-09 | 2014-01-09 | 内存管理的方法及Linux终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103744736A CN103744736A (zh) | 2014-04-23 |
CN103744736B true CN103744736B (zh) | 2018-10-02 |
Family
ID=50501756
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410010312.0A Expired - Fee Related CN103744736B (zh) | 2014-01-09 | 2014-01-09 | 内存管理的方法及Linux终端 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN103744736B (zh) |
WO (1) | WO2015103864A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744736B (zh) * | 2014-01-09 | 2018-10-02 | 深圳Tcl新技术有限公司 | 内存管理的方法及Linux终端 |
CN105630599B (zh) * | 2014-10-28 | 2019-02-15 | 龙芯中科技术有限公司 | 基于32/64位混合操作系统的显存分配方法及装置 |
CN104407985B (zh) * | 2014-12-15 | 2018-04-03 | 泰斗微电子科技有限公司 | 存储器地址映射方法及存储器地址映射系统 |
CN104850423B (zh) * | 2015-01-16 | 2017-12-26 | 中国矿业大学 | 识别android系统下应用程序启动阶段的方法 |
CN106484632A (zh) * | 2015-09-01 | 2017-03-08 | 华耀(中国)科技有限公司 | 在Linux系统用户空间分配连续物理内存的方法 |
CN106611401B (zh) | 2015-10-22 | 2020-12-25 | 阿里巴巴集团控股有限公司 | 一种在纹理内存中存储图像的方法及装置 |
CN107770101B (zh) * | 2016-08-15 | 2021-07-16 | 中兴通讯股份有限公司 | 一种fpga中通用成帧规程gfp帧的封装方法及装置 |
CN106648594B (zh) * | 2016-09-30 | 2020-07-10 | 海信视像科技股份有限公司 | 终端启动方法和装置 |
CN109376002A (zh) * | 2018-08-14 | 2019-02-22 | 广东格兰仕集团有限公司 | 一种基于烤箱控制系统的内存优化控制方法 |
CN110471759B (zh) * | 2019-07-04 | 2023-09-01 | 中科晶上(苏州)信息技术有限公司 | 一种多核嵌入式处理器内存实时动态管理方法 |
CN113051072A (zh) * | 2021-03-02 | 2021-06-29 | 长沙景嘉微电子股份有限公司 | 内存管理方法,装置,系统及计算机可读存储介质 |
CN115202892B (zh) * | 2022-09-15 | 2022-12-23 | 粤港澳大湾区数字经济研究院(福田) | 一种机密计算协处理器的内存扩展系统和内存扩展方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1635482A (zh) * | 2003-12-29 | 2005-07-06 | 北京中视联数字系统有限公司 | 一种嵌入式系统内存管理的方法 |
CN1722106A (zh) * | 2004-07-13 | 2006-01-18 | 中兴通讯股份有限公司 | 一种嵌入式实时操作系统中内存分配的方法 |
CN101149703A (zh) * | 2007-10-10 | 2008-03-26 | 中兴通讯股份有限公司 | 一种固定内存的管理方法 |
CN101976225A (zh) * | 2010-10-26 | 2011-02-16 | 深圳创维-Rgb电子有限公司 | 一种数字机顶盒系统内存的分配方法、模块和装置 |
CN102156675A (zh) * | 2010-02-12 | 2011-08-17 | 中兴通讯股份有限公司 | 一种内存分配方法及装置 |
CN102314688A (zh) * | 2011-09-09 | 2012-01-11 | 华中科技大学 | 图像分割方法和图像集分割方法 |
CN103425592A (zh) * | 2013-08-05 | 2013-12-04 | 大唐移动通信设备有限公司 | 一种多进程系统中的内存管理方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7571295B2 (en) * | 2005-08-04 | 2009-08-04 | Intel Corporation | Memory manager for heterogeneous memory control |
CN103163949A (zh) * | 2011-12-13 | 2013-06-19 | 技嘉科技股份有限公司 | 计算机系统及其内存指定方法 |
CN103744736B (zh) * | 2014-01-09 | 2018-10-02 | 深圳Tcl新技术有限公司 | 内存管理的方法及Linux终端 |
-
2014
- 2014-01-09 CN CN201410010312.0A patent/CN103744736B/zh not_active Expired - Fee Related
- 2014-07-21 WO PCT/CN2014/082598 patent/WO2015103864A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1635482A (zh) * | 2003-12-29 | 2005-07-06 | 北京中视联数字系统有限公司 | 一种嵌入式系统内存管理的方法 |
CN1722106A (zh) * | 2004-07-13 | 2006-01-18 | 中兴通讯股份有限公司 | 一种嵌入式实时操作系统中内存分配的方法 |
CN101149703A (zh) * | 2007-10-10 | 2008-03-26 | 中兴通讯股份有限公司 | 一种固定内存的管理方法 |
CN102156675A (zh) * | 2010-02-12 | 2011-08-17 | 中兴通讯股份有限公司 | 一种内存分配方法及装置 |
CN101976225A (zh) * | 2010-10-26 | 2011-02-16 | 深圳创维-Rgb电子有限公司 | 一种数字机顶盒系统内存的分配方法、模块和装置 |
CN102314688A (zh) * | 2011-09-09 | 2012-01-11 | 华中科技大学 | 图像分割方法和图像集分割方法 |
CN103425592A (zh) * | 2013-08-05 | 2013-12-04 | 大唐移动通信设备有限公司 | 一种多进程系统中的内存管理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2015103864A1 (zh) | 2015-07-16 |
CN103744736A (zh) | 2014-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103744736B (zh) | 内存管理的方法及Linux终端 | |
CN107885666B (zh) | 一种内存管理方法和装置 | |
US9898338B2 (en) | Network computer system and method for dynamically changing execution sequence of application programs | |
US9858120B2 (en) | Modifying memory space allocation for inactive tasks | |
US11422944B2 (en) | Address translation technologies | |
US10261918B2 (en) | Process running method and apparatus | |
US11928493B2 (en) | Sharing of FPGA board by multiple virtual machines | |
US9601180B2 (en) | Automatic partial array self-refresh | |
CN111078410B (zh) | 内存分配方法、装置、存储介质及电子设备 | |
WO2022121866A1 (zh) | 一种基于加速卡的服务运行方法、装置、电子设备及计算机可读存储介质 | |
CN109144714A (zh) | 内存管理方法及装置 | |
US20220050722A1 (en) | Memory pool management | |
WO2016000470A1 (zh) | 一种内存控制方法和装置 | |
EP3642720A1 (en) | Apparatuses and methods for allocating memory in a data center | |
CN113204407A (zh) | 一种内存超配管理方法及装置 | |
CN104679684A (zh) | 半导体器件及其操作方法 | |
US20220114086A1 (en) | Techniques to expand system memory via use of available device memory | |
US20120191896A1 (en) | Circuitry to select, at least in part, at least one memory | |
US20160034392A1 (en) | Shared memory system | |
Lim et al. | SWAM: Revisiting Swap and OOMK for Improving Application Responsiveness on Mobile Devices | |
CN105612505B (zh) | Cpu调度的方法和装置 | |
US9405470B2 (en) | Data processing system and data processing method | |
Lee et al. | Compressed and shared swap to extend available memory in virtualized consumer electronics | |
US20120124269A1 (en) | Organizing Memory for Effective Memory Power Management | |
CN107273188B (zh) | 一种虚拟机中央处理单元cpu绑定方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20181002 |