CN101859279A - 一种内存分配、释放方法及装置 - Google Patents
一种内存分配、释放方法及装置 Download PDFInfo
- Publication number
- CN101859279A CN101859279A CN 201010187309 CN201010187309A CN101859279A CN 101859279 A CN101859279 A CN 101859279A CN 201010187309 CN201010187309 CN 201010187309 CN 201010187309 A CN201010187309 A CN 201010187309A CN 101859279 A CN101859279 A CN 101859279A
- Authority
- CN
- China
- Prior art keywords
- lpage
- logical
- page
- logical page
- memory
- 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.)
- Granted
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种内存分配、释放方法及装置,内存分配方法包括:在加载程序时,根据程序预先设置的实时属性,为程序的静态段占用的逻辑页分配对应的物理页;在程序运行过程中,记录逻辑内存中每个逻辑页使用者的数量;当程序的动态段申请的逻辑内存所在的逻辑页由空闲变为有使用者使用时,为动态段申请的逻辑内存所在的逻辑页分配对应的物理页。内存释放方法包括:在程序运行过程中,记录当前逻辑内存中每个逻辑页使用者的数量;当逻辑页由有使用者使用转为空闲时,释放该逻辑页对应的物理页。本发明由内核主动为程序的静态段分配物理页,以及根据程序对逻辑页的需求为其分配和释放物理页,满足了程序对于实时性的要求。
Description
技术领域
本发明涉及内存管理技术领域,尤其涉及一种内存分配、释放方法及装置。
背景技术
在现代操作系统中,虚拟内存技术指的是:程序访问逻辑内存(或称为逻辑空间)的地址(通常称为逻辑地址)并不是实际的物理内存地址,而是由内核的内存管理单元(MMU,Memory Manage Unit)器件将程序访问的逻辑内存的地址映射为物理地址。地址映射管理的基本内存单元为“页”记录逻辑地址和物理地址映射关系的信息结构称为“页表”,内核的内存管理模块为每个程序建立一个页表,页表记录了程序(即应用程序)逻辑页的基本信息如读写权限、是否已分配对应的物理页、逻辑页对应的物理页(如果有)的页号等,页表供MMU器件使用,在程序运行访问内存时MMU器件能够自动完成逻辑页到物理页的转换过程。
一个简单的页表如图1所示,系统中有程序A和程序B,它们的内存空间分别包含4个逻辑页,而系统的物理内存的总数为6个物理页。程序A的第0个逻辑页尚未分配物理页,图中标为‘x’,第1个逻辑页映射到第0个物理页,第2个逻辑页映射到第4个物理页中,等等。当程序A访问第1个逻辑页时,MMU器件根据它的页表来控制访问到物理页0。
内核的内存管理模块在为应用程序分配物理内存时,并不为这些空间逻辑页分配物理页,而是在页表中标记这些逻辑页的物理页未分配。当程序访问这些未分配物理页的逻辑页时,会触发“缺页中断”处理过程,在缺页中断处理过程中,在确认内存访问的合法性之后,才为该逻辑页分配对应的物理页,并在页表中填写物理页号,这种内存管理技术称为请求页调度。
利用虚拟内存和请求页调度技术,允许一个系统内运行的所有程序所需逻辑内存总和大于系统可用物理内存总和,或者一个程序的逻辑内存需求就可大于整个系统的可用物理内存总和。根据程序运行的局部性原理:通常在一个时间段内程序对内存的访问总是集中在某个较小的内存区域内,因此程序运行时不需要将所有程序及数据都加载于逻辑内存中,而是将最近要使用的内容置于物理内存中,对于那些最近不常使用的物理页,可以将其换出存储到交换设备(通常是硬盘)中,而将物理内存分配给其它程序使用。这种内存管理技术叫做“交换”。当该程序访问已被换出的物理页对应的逻辑页时会触发缺页中断,在缺页中断处理程序中,内核的内存管理模块为其重新分配一个物理页(不一定是换出前的物理页),将逻辑页对应内容读取到重新分配的物理页中,并相应修改页表的内容。
内核的内存管理模块在空闲的物理内存小于某个预设值时,要有选择的将一部分正在使用的物理页换出到交换设备中,这样当缺页中断产生时,总能有空闲的物理页分配给程序。在如何选择换出的物理页面时,最常见使用的算法是最近最少使用(Least Recently Used,LRU)算法,这种算法的设计是基于程序的局部性原理:如果一个程序在过去的一个时间段内未使用这个物理页,那么它在未来的一个时间段内不使用这个物理页的概率也比较大。
现有操作系统建立在MMU器件基础上的虚拟内存技术、请求页调度和交换技术,存在下述不足:
现有的请求页调度技术中,当程序第一次访问读写逻辑内存时,会引发缺页中断,被中断的程序会在中断处继续执行,对程序会造成延迟,对实时性要求较高的程序例如网络交换设备所使用的程序其处理实时性的事件的性能会造成影响。
现有的“交换”技术中,基于跟踪各个物理页面的具体使用情况,来决定哪些物理页需要换出,那些被换出的物理页可能是程序已释放的不再需要使用的逻辑页的物理页,也可能是程序还未释放的逻辑页所对应的物理页,只是最近一个时间段内没有被访问过,内核是基于物理页的历史使用情况来推算该物理页未来的使用情况,可能某个物理页面刚刚被换出到交换设备中,程序又要访问这个物理页面,需要立即再将其换入到内存中,内核无法准确地根据程序的需要进行换页操作,这种“换页”的内存管理方式,对于实时性要求很高的程序来说,显然是很缺乏效率的,无法满足其实时性的要求。
并且,在支持“交换”的内存管理技术的设备中,当某个需要访问的逻辑页对应的物理页已经被换出时,需要等待再将该物理页换回物理内存中,由于物理页的换入/换出的时间开销远大于直接访问内存的时间,这种换页技术,无法满足实时性程序对于时延的要求。
发明内容
本发明提供一种内存分配、释放方法及装置,用以解决现有的内存管理方法无法满足程序的实时性要求的问题。
本发明提供的一种内存分配方法,包括:
在加载程序时,根据所述程序预先设置的实时属性,为所述程序的静态段占用的逻辑页分配对应的物理页;
在所述程序运行过程中,记录逻辑内存中每个逻辑页使用者的数量;当所述程序的动态段申请的逻辑内存所在的逻辑页由空闲变为有使用者使用时,为所述动态段申请的逻辑内存所在的逻辑页分配对应的物理页。
本发明实施例提供的一种内存的释放方法,包括:
在所述程序运行过程中,记录当前逻辑内存中每个逻辑页使用者的数量;
当逻辑页由有使用者使用转为空闲时,释放该逻辑页对应的物理页。
本发明实施例提供的一种内存分配装置,包括:
静态段分配模块,用于在加载程序时,根据所述程序预先设置的实时属性,为所述程序的静态段占用的逻辑页分配对应的物理页;
动态段分配模块,用于在所述程序运行过程中,记录逻辑内存中每个逻辑页使用者的数量;当所述程序的动态段申请的逻辑内存所在的逻辑页由空闲变为有使用者使用时,为所述动态段申请的逻辑内存所在的逻辑页分配对应的物理页。
本发明实施例提供的一种内存的释放装置,包括:
记录模块,用于在所述程序运行过程中,记录当前逻辑内存中每个逻辑页使用者的数量;
释放模块,用于当逻辑页由有使用者使用转为空闲时,释放该逻辑页对应的物理页。
本发明有益效果包括:
本发明实施例提供的内存分配方法及装置,在记载程序时,主动为程序的静态段占用的逻辑页分配对应的物理页;在程序运行过程中,如果程序动态段申请的逻辑内存所在的逻辑页由空闲变为有使用者使用时,为动态段申请的逻辑内存所在的逻辑页分配对应的物理页,在本发明实施例中,主动为静态段占用的逻辑页分配对应的物理页,并为程序需要使用的逻辑页分配对应的物理页,这样避免了现有“请求页调度”技术中,程序第一次访问逻辑内存所在的逻辑页时,由于逻辑页预先未分配对应的物理页,触发缺页中断,在缺页中断处理过程中才为逻辑页分配物理页,从而引发程序处理时延的问题,保证了程序对于实时性的要求。
本发明实施例提供的内存释放方法及装置,记录当前逻辑内存中每个逻辑页使用者的数量,当逻辑页不再有使用者使用时,释放该逻辑页对应的物理页,本发明实施例提供的内存释放方法及装置根据程序的需要来释放逻辑页对应的物理页,避免了现有的“交换”技术中,某个物理页面刚刚被换出到交换设备中,程序又要访问这个物理页面,需要立即再将其换入到内存中,内核无法准确地根据程序的需要进行换页操作,无法满足其实时性的要求的问题。
附图说明
图1为现有技术的页表的示意图;
图2为本发明实施例提供的内存分配方法的流程图;
图3为本发明实施例提供的内存释放方法的流程图;
图4为本发明实施例提供的内存分配装置的结构示意图;
图5为本发明实施例提供的动态段分配模块的结构示意图;
图6为本发明实施例提供的内存释放装置的结构示意图;
图7为本发明实施例提供的记录模块的结构示意图。
具体实施方式
下面结合附图,对本发明实施例提供的一种内存分配、释放方法及装置进行详细地说明。
首先对本发明实施例提供的内存分配方法进行详细的说明。
通常程序的内存管理分为两个基础部分,一部分是程序在加载时,根据该程序的可执行文件的预定义为该程序分配代码段和数据段的逻辑内存,另一部分是在程序运行期间为其分配堆栈和堆所需要的逻辑内存。代码段和数据段通常称为程序的静态段,堆栈和堆通常称为程序的动态段。静态段所需的逻辑内存在程序运行过程中固定不变,而动态段所需的逻辑内存在程序运行的整个过程中会不断地增加或减少。本发明实施例提供的内存分配方法,对程序的静态段的内存分配和程序的动态段的内存分配分别进行了改进。
在本发明实施例中,由内核和程序两者来协同完成内存的分配和释放过程,具体实施时,内核的功能例如可以通过对内核中的内存管理模块的功能进行改进来实现。
具体来说,本发明实施例提供的内存分配方法,如图2所示,包括下述步骤:
S201、在加载程序时,内核根据该程序预先设置的实时属性,为该程序的静态段的逻辑页分配对应的物理页;
S202、在程序运行过程中,该程序记录逻辑内存中每个逻辑页使用者的数量;
S203、该程序的动态段申请的逻辑内存所在的逻辑页由空闲转变为有使用者使用时,执行下述步骤S204;
S204、该程序通知内核为该程序的动态段申请的逻辑内存所在的逻辑页分配对应的物理页。
在本发明实施例提供的内存分配方法中,需要预先对有实时性处理要求的程序,设置其实时性属性,以便在加载该程序时对其进行特殊处理。
具体实施时,可以对该程序的可执行文件进行扩展,增加自定义的实时性(REALTIME)属性段,下面举一个实例进行说明。
例如对ELF(Executable and Linkable)格式的可执行文件的扩展,利用编译器的选项在该可执行文件中添加一个新段,假设使用的是GCC编译器,可在该可执行文件的C语言代码中添加以下代码片段:
“_attribute_((section(“REALTIME”)))int rt_flag=1”
在完成编译和链接后,在最终生成的ELF文件中存在一个名为实时(REALTIME)的段,加载程序时,可以通过判断扩展后的可执行文件中是否包含这个实时的段来识别该程序是否是属于实时性程序。
在上述步骤S201中,因为静态段所占用的逻辑内存在程序运行的整个过程中是固定不变的,在加载该程序的时候,内核可主动地为该程序的静态段占用的逻辑页分配对应的物理页。这样的做法,避免了现有的“请求页调度”技术中,当程序第一次访问(读或者写)逻辑内存所在的逻辑页时,由于逻辑页还未分配对应的物理页,触发缺页中断,在缺页中断处理过程中才为逻辑页分配物理页(内核被动地为静态段分配物理页),从而引发程序处理的时延的问题。
较佳地,在上述步骤S201中,在为物理内存的逻辑页分配对应的物理页之后,在分配的物理页的属性中将该物理页设置为锁定状态。之所以要将分配的该物理页的属性设置为锁定状态,是为了防止分配的物理页被内核按照现有技术中“交换”技术进行处理,即防止内核将分配的物理页中的内容换出到交换设备中,保证了有实时性要求的程序能够随时访问物理页,而不会因为“交换”技术引发程序处理时延的问题。
本发明实施例提供的内存分配方法,在上述步骤S202-S204中,对程序的动态段的内存分配过程进行了改进。
上述步骤S202中,在程序运行过程中,程序将动态段即堆和堆栈所占用的逻辑内存视为由逻辑页组成的区间,建立逻辑页描述数组来跟踪每个逻辑页的使用情况。
在该逻辑页描述数组中,每个元素都代表一个逻辑页,相应地,每个元素的值都记录着对应的逻辑页的使用者的数量。将每个元素的初始值设置为零。
当逻辑页中的逻辑内存区域被申请使用时,在逻辑页描述数组中与该逻辑页对应的元素值(使用者的数量)上增加1;相应地,当逻辑页中的逻辑内存区域被所述程序释放时,在逻辑页描述数组中与该逻辑页对应的元素值上减去1。
在上述步骤S203及S204中,该逻辑页由空闲状态转为使用者占用状态,具体来说就是该程序的动态段申请的逻辑内存所在的逻辑页的使用者数量从零变为1时,程序通知内存为该逻辑页分配物理页,分配的物理页要能够完全地覆盖动态段申请的逻辑内存,举例来说,如果逻辑页的大小为100字节,当动态段申请100字节的逻辑内存时,如果逻辑起始地址为1时,其申请的逻辑内存需要占用两个逻辑页,对应地,也需要为其分配两个物理页。
通过本发明实施例提供的内存分配方法,避免了程序在访问逻辑内存时,如果动态段申请的逻辑内存尚未分配对应的物理页,进行“请求页调度”引发的时延问题。
较佳地,步骤S204为动态段申请的逻辑内存所在的逻辑页分配对应的物理页之后,还可以在分配的物理页的属性中将该物理页设置为锁定状态。
与静态段类似,之所以要将分配的该物理页的属性设置为锁定状态,是为了防止分配的物理页被内核按照现有技术中的“交换”技术进行处理,保证有实时性要求的程序能够随时访问物理页,而不会因为按照现有“交换”技术的处理方式引发程序处理时延的问题。
与上述内存分配方法对应,本发明实施例还提供了一种内存的释放方法,本发明实施例提供的内存的释放方法,对程序的动态段使用的物理页的释放方法进行了改进。
本发明实施例提供的内存释放方法,如图3所示,包括下述步骤:
S301、在程序运行过程中,程序记录当前逻辑内存中每个逻辑页使用者的数量;
S302、当某逻辑页由有使用者使用转为空闲时,执行下述步骤S303;
S303、该程序通知内核释放该逻辑页对应的物理页。
本发明实施例提供的内存释放方法中的步骤S301-S303,在具体实施时,与图2所示的步骤S202是同一个步骤,当记录的某个逻辑页的使用者的数量降至零(通常由1降为零)时,就意味着程序不再需要使用该逻辑页,该逻辑页由有使用者使用转为空闲,程序已经释放了该逻辑页,此时需要通知内核将该逻辑页对应的物理页也释放掉。
如果该逻辑页对应的物理页在分配的过程中为了防止被换出而设置了锁定状态,则在释放掉该逻辑页对应的物理页的步骤之前,还需执行解除该物理页锁定状态的步骤,被释放掉的物理页成为空闲的物理内存资源,内核不再将其作为锁定状态的物理页进行处理。
下面以现有的资源图分配器(Resource Map Allocator)的逻辑内存分配方法为例,说明上述内存分配方法及内存释放方法。
资源图分配器使用数据形式为(起点,尺寸)的条目的集合来描述可用的内存区域。初始状态时,可用内存区域即整个逻辑内存空间仅用一个资源图条目来描述,随着程序申请与释放各种大小的逻辑内存区域,可用的逻辑内存区域变得不再连续,资源图的每个条目代表一块连续的可用的逻辑内存区域。
假设系统提供1,000字节的逻辑空间,则资源图条目的初始内容为(0,1,000);
程序申请了50字节的逻辑内存后,资源图条目内容变为(51,1,000);
程序再次申请100字节、200字节的逻辑内存后,资源图条目内容变为(351,1,000);
程序释放100字节的逻辑内存后,资源图条目内容变为(51,150)、(351,1,000);
程序再次申请300字节,由于第一个资源图条目(51,150)内存空间不足,因此从第2个资源图条目中分配,完成分配后,资源图条目为(51,150)、(651,1,000)。
使用逻辑页描述数组来跟踪每个逻辑页的使用情况,当计数为0时代表该逻辑页是空闲的没有使用者使用,当计数为1时,代表该逻辑页有1个使用者。与上述程序申请和释放逻辑内存的过程对应,逻辑页描述数组的变化情况如下
初始状态,逻辑页描述数组为:{0,0,0,0,0,0,0,0,0,0};
程序中请了50字节的逻辑内存后,逻辑页描述数组为:{1,0,0,0,0,0,0,0,0,0};
程序申请了100字节、200字节的逻辑内存后,数组为{2,2,1,1,0,0,0,0,0,0},由于第0、1逻辑页都有两个使用者(也就是每页都有两个逻辑内存区域分别被两个不同的使用者使用),因此计数为2。
逻辑页描述数组中的元素的值由“0”变为“1”时,表示该逻辑页已不再空闲,需要为该逻辑页分配物理页,反之,当逻辑页描述数组中的元素的值由“1”变为“0”时,表示该逻辑页不再有使用者,可以释放对应的物理页。
基于同一发明构思,本发明实施例还提供了一种内存分配装置和释放装置,由于该装置解决问题的原理与前述一种内存分配方法、内存释放方法相似,因此该装置的实施可以参见方法的实施,重复之处不在赘述。
本发明实施例提供的一种内存分配装置,如图4所示,包括:
静态段分配模块401,用于在加载程序时,根据该程序预先设置的实时属性,为该程序的静态段的逻辑页分配对应的物理页;
动态段分配模块402,用于在该程序运行过程中,记录逻辑内存中每个逻辑页使用者的数量;当该程序的动态段申请的逻辑内存所在的逻辑页由空闲变为有使用者使用时,为动态段申请的逻辑内存所在的逻辑页分配对应的物理页。
如图5所示,动态段分配模块402,进一步包括:
数组建立子模块4021,用于建立逻辑页描述数组,使用所述数组中每个元素的值记录每个逻辑页的使用者的数量;并将每个元素的初始值设置为零;
数组记录子模块4022,用于当逻辑页中的逻辑内存区域被申请使用时,在该逻辑页使用者的数量上增加1;当逻辑页中的逻辑内存区域被程序释放时,在该逻辑页使用者的数量上减去1。
上述内存分配装置,进一步还包括:锁定状态设置模块403,用于在为静态段的逻辑页分配对应的物理页,以及为动态段申请的逻辑内存的逻辑页分配对应的物理页之后,在分配的物理页的属性中将所述物理页设置为锁定状态。
本发明实施例提供的内存的释放装置,如图6所示,包括:
记录模块601,用于在程序运行过程中,记录当前逻辑内存中每个逻辑页使用者的数量;
释放模块602,用于当逻辑页由有使用者使用转为空闲时,所述程序通知内核释放该逻辑页对应的物理页。
记录模块601,如图7所示,进一步包括:
数组建立子模块6011,用于建立逻辑页描述数组,使用所述数组中每个元素的值记录每个逻辑页的使用者的数量;并将每个元素的初始值设置为零;
数组记录子模块6012,用于当逻辑页中的逻辑内存区域被申请使用时,在该逻辑页使用者的数量上增加1;当逻辑页中的逻辑内存区域被程序释放时,在该逻辑页使用者的数量上减去1。
本发明实施例提供的内存分配方法及装置,在记载程序时,主动为程序的静态段占用的逻辑页分配对应的物理页;在程序运行过程中,如果程序动态段申请的逻辑内存所在的逻辑页由空闲转为有使用者使用时,表明该逻辑页不再空闲,则该程序通知内核为动态段申请的逻辑内存所在的逻辑页分配对应的物理页,在本发明实施例中,内核主动为静态段占用的逻辑页分配对应的物理页,并可以根据程序的通告,对程序需要使用的逻辑页分配对应的物理页,这样避免了现有“请求页调度”技术中,程序第一次访问逻辑内存所在的逻辑页时,由于逻辑页预先未分配对应的物理页,触发缺页中断,在缺页中断处理过程中才为逻辑页分配物理页,从而引发程序处理时延的问题,保证了程序对于实时性的要求。
进一步地,本发明实施例提供的内存分配方法及装置,在对静态段或动态段申请的逻辑内存所在的逻辑页分配对应的物理页之后,还可以在分配的物理页的属性中将该物理页设置为锁定状态,防止分配的物理页被内核按照现有技术中的“交换”进行处理,保证实时性要求的程序能够随时访问对应物理页,而不会因为现有的“交换”处理引发程序处理时延的问题。
本发明实施例提供的内存释放方法及装置,程序记录当前逻辑内存中每个逻辑页使用者的数量,当逻辑页由有使用者使用转为空闲时,也就是程序不再使用该逻辑页时,释放该逻辑页对应的物理页,本发明实施例提供的内存释放方法及装置根据程序的需要来释放逻辑页对应的物理页,避免了现有的“交换”技术中,某个物理页面刚刚被换出到交换设备中,程序又要访问这个物理页面,需要立即再将其换入到内存中,内核无法准确地根据程序的需要进行换页操作,无法满足其实时性的要求的问题。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种内存分配方法,其特征在于,包括:
在加载程序时,根据所述程序预先设置的实时属性,为所述程序的静态段占用的逻辑页分配对应的物理页;
在所述程序运行过程中,记录逻辑内存中每个逻辑页使用者的数量;当所述程序的动态段申请的逻辑内存所在的逻辑页由空闲变为有使用者使用时,为所述动态段申请的逻辑内存所在的逻辑页分配对应的物理页。
2.如权利要求1所述的方法,其特征在于,所述程序预先设置的实时属性通过下述方式实现:
对程序的可执行文件进行扩展,在扩展后的可执行文件中增加自定义的实时属性段。
3.如权利要求1所述的方法,其特征在于,所述记录逻辑内存中每个逻辑页使用者的数量,包括:
建立逻辑页描述数组,使用所述数组中每个元素的值记录每个逻辑页的使用者的数量;并将每个元素的初始值设置为零;
当逻辑页中的逻辑内存区域被申请使用时,在该逻辑页使用者的数量上增加1;
当逻辑页中的逻辑内存区域被所述程序释放时,在该逻辑页使用者的数量上减去1。
4.如权利要求1-3任一项所述的方法,其特征在于,为所述静态段的逻辑页分配对应的物理页,以及为动态段申请的逻辑内存的逻辑页分配对应的物理页之后,还包括:
在分配的物理页的属性中将所述物理页设置为锁定状态。
5.一种内存的释放方法,其特征在于,包括:
在所述程序运行过程中,记录当前逻辑内存中每个逻辑页使用者的数量;
当逻辑页由有使用者使用转为空闲时,释放该逻辑页对应的物理页。
6.如权利要求5所述的方法,其特征在于,所述记录当前逻辑内存中使用每个逻辑页使用者的数量,包括:
建立逻辑页描述数组,使用所述数组中每个元素的值记录每个逻辑页的使用者的数量;并将每个元素的初始值设置为零;
当逻辑页中的逻辑内存区域被申请使用时,在该逻辑页使用者的数量上增加1;
当逻辑页中的逻辑内存区域被所述程序释放时,在该逻辑页使用者的数量上减去1。
7.如权利要求5或6所述的方法,其特征在于,当逻辑页由有使用者使用转为空闲时,释放该逻辑页对应的物理页的步骤之前,还包括:
解除该逻辑页对应的物理页设置的锁定状态。
8.一种内存分配装置,其特征在于,包括:
静态段分配模块,用于在加载程序时,根据所述程序预先设置的实时属性,为所述程序的静态段占用的逻辑页分配对应的物理页;
动态段分配模块,用于在所述程序运行过程中,记录逻辑内存中每个逻辑页使用者的数量;当所述程序的动态段申请的逻辑内存所在的逻辑页由空闲变为有使用者使用时,为所述动态段申请的逻辑内存所在的逻辑页分配对应的物理页。
9.如权利要求8所述的装置,其特征在于,所述动态段分配模块,进一步包括:
数组建立子模块,用于建立逻辑页描述数组,使用所述数组中每个元素的值记录每个逻辑页的使用者的数量;并将每个元素的初始值设置为零;
数组记录子模块,用于当逻辑页中的逻辑内存区域被申请使用时,在该逻辑页使用者的数量上增加1;当逻辑页中的逻辑内存区域被程序释放时,在该逻辑页使用者的数量上减去1。
10.如权利要求8或9所述的装置,其特征在于,还包括:
锁定状态设置模块,用于在为所述静态段的逻辑页分配对应的物理页,以及为动态段申请的逻辑内存的逻辑页分配对应的物理页之后,在分配的物理页的属性中将所述物理页设置为锁定状态。
11.一种内存的释放装置,其特征在于,包括:
记录模块,用于在所述程序运行过程中,记录当前逻辑内存中每个逻辑页使用者的数量;
释放模块,用于当逻辑页由有使用者使用转为空闲时,释放该逻辑页对应的物理页。
12.如权利要求11所述的装置,其特征在于,所述记录模块,进一步包括:
数组建立子模块,用于建立逻辑页描述数组,使用所述数组中每个元素的值记录每个逻辑页的使用者的数量;并将每个元素的初始值设置为零;
数组记录子模块,用于当逻辑页中的逻辑内存区域被申请使用时,在该逻辑页使用者的数量上增加1;当逻辑页中的逻辑内存区域被程序释放时,在该逻辑页使用者的数量上减去1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101873098A CN101859279B (zh) | 2010-05-21 | 2010-05-21 | 一种内存分配、释放方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101873098A CN101859279B (zh) | 2010-05-21 | 2010-05-21 | 一种内存分配、释放方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101859279A true CN101859279A (zh) | 2010-10-13 |
CN101859279B CN101859279B (zh) | 2012-05-09 |
Family
ID=42945199
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010101873098A Expired - Fee Related CN101859279B (zh) | 2010-05-21 | 2010-05-21 | 一种内存分配、释放方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101859279B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102103541A (zh) * | 2011-02-28 | 2011-06-22 | 中国人民解放军国防科学技术大学 | 防止内存泄露和内存多次释放的内核模块内存管理方法 |
CN102495807A (zh) * | 2010-12-23 | 2012-06-13 | 中国科学院软件研究所 | 一种支持物理存储器动态加载或卸载的方法 |
CN103106147A (zh) * | 2013-03-08 | 2013-05-15 | 中国科学院上海微系统与信息技术研究所 | 内存分配方法及系统 |
CN103870315A (zh) * | 2014-03-26 | 2014-06-18 | 中国联合网络通信集团有限公司 | 一种jvm能耗控制方法及装置 |
CN104077266A (zh) * | 2013-03-27 | 2014-10-01 | 华为技术有限公司 | 多内核操作系统实现方法和实现装置及系统 |
WO2016019566A1 (zh) * | 2014-08-08 | 2016-02-11 | 华为技术有限公司 | 内存管理方法、装置和系统、以及片上网络 |
CN107861887A (zh) * | 2017-11-30 | 2018-03-30 | 科大智能电气技术有限公司 | 一种串行易失性存储器的控制方法 |
CN107885596A (zh) * | 2017-06-22 | 2018-04-06 | 叶雅敏 | 用于音视频解码、编码的高频访问内存的程序优化方法 |
CN108021442A (zh) * | 2016-11-03 | 2018-05-11 | 阿里巴巴集团控股有限公司 | 释放物理内存的系统、装置及方法 |
CN108255475A (zh) * | 2017-12-19 | 2018-07-06 | 芯海科技(深圳)股份有限公司 | 一种elf文件格式的扩展应用方法 |
CN111538584A (zh) * | 2019-07-19 | 2020-08-14 | 新华三技术有限公司 | 内存资源分配方法、装置、设备及机器可读存储介质 |
US11099900B2 (en) | 2016-09-27 | 2021-08-24 | Huawei Technologies Co., Ltd. | Memory reclamation method and apparatus |
CN113626347A (zh) * | 2021-07-29 | 2021-11-09 | 武汉新芯集成电路制造有限公司 | 存储装置及其工作方法 |
CN114185645A (zh) * | 2021-12-09 | 2022-03-15 | 北京字节跳动网络技术有限公司 | 一种内存处理方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1532708A (zh) * | 2003-03-19 | 2004-09-29 | 华为技术有限公司 | 一种静态内存管理方法 |
US20050091266A1 (en) * | 2003-10-23 | 2005-04-28 | Fujitsu Limited | Data file system, data access server and data access program storage medium |
CN101169759A (zh) * | 2007-11-08 | 2008-04-30 | Ut斯达康通讯有限公司 | 应用程序级的内存管理方法 |
-
2010
- 2010-05-21 CN CN2010101873098A patent/CN101859279B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1532708A (zh) * | 2003-03-19 | 2004-09-29 | 华为技术有限公司 | 一种静态内存管理方法 |
US20050091266A1 (en) * | 2003-10-23 | 2005-04-28 | Fujitsu Limited | Data file system, data access server and data access program storage medium |
CN101169759A (zh) * | 2007-11-08 | 2008-04-30 | Ut斯达康通讯有限公司 | 应用程序级的内存管理方法 |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495807A (zh) * | 2010-12-23 | 2012-06-13 | 中国科学院软件研究所 | 一种支持物理存储器动态加载或卸载的方法 |
CN102103541B (zh) * | 2011-02-28 | 2012-11-14 | 中国人民解放军国防科学技术大学 | 防止内存泄露和内存多次释放的内核模块内存管理方法 |
CN102103541A (zh) * | 2011-02-28 | 2011-06-22 | 中国人民解放军国防科学技术大学 | 防止内存泄露和内存多次释放的内核模块内存管理方法 |
CN103106147B (zh) * | 2013-03-08 | 2016-03-16 | 中国科学院上海微系统与信息技术研究所 | 内存分配方法及系统 |
CN103106147A (zh) * | 2013-03-08 | 2013-05-15 | 中国科学院上海微系统与信息技术研究所 | 内存分配方法及系统 |
WO2014154045A1 (zh) * | 2013-03-27 | 2014-10-02 | 华为技术有限公司 | 多内核操作系统实现方法和实现装置及系统 |
CN104077266A (zh) * | 2013-03-27 | 2014-10-01 | 华为技术有限公司 | 多内核操作系统实现方法和实现装置及系统 |
CN104077266B (zh) * | 2013-03-27 | 2017-07-07 | 华为技术有限公司 | 多内核操作系统实现方法和实现装置及系统 |
CN103870315B (zh) * | 2014-03-26 | 2017-05-31 | 中国联合网络通信集团有限公司 | 一种jvm能耗控制方法及装置 |
CN103870315A (zh) * | 2014-03-26 | 2014-06-18 | 中国联合网络通信集团有限公司 | 一种jvm能耗控制方法及装置 |
CN105518631B (zh) * | 2014-08-08 | 2019-04-12 | 华为技术有限公司 | 内存管理方法、装置和系统、以及片上网络 |
WO2016019566A1 (zh) * | 2014-08-08 | 2016-02-11 | 华为技术有限公司 | 内存管理方法、装置和系统、以及片上网络 |
CN105518631A (zh) * | 2014-08-08 | 2016-04-20 | 华为技术有限公司 | 内存管理方法、装置和系统、以及片上网络 |
US11099900B2 (en) | 2016-09-27 | 2021-08-24 | Huawei Technologies Co., Ltd. | Memory reclamation method and apparatus |
CN108021442A (zh) * | 2016-11-03 | 2018-05-11 | 阿里巴巴集团控股有限公司 | 释放物理内存的系统、装置及方法 |
CN107885596B (zh) * | 2017-06-22 | 2021-06-15 | 叶雅敏 | 用于音视频解码、编码的高频访问内存的程序优化方法 |
CN107885596A (zh) * | 2017-06-22 | 2018-04-06 | 叶雅敏 | 用于音视频解码、编码的高频访问内存的程序优化方法 |
CN107861887A (zh) * | 2017-11-30 | 2018-03-30 | 科大智能电气技术有限公司 | 一种串行易失性存储器的控制方法 |
CN108255475A (zh) * | 2017-12-19 | 2018-07-06 | 芯海科技(深圳)股份有限公司 | 一种elf文件格式的扩展应用方法 |
CN111538584A (zh) * | 2019-07-19 | 2020-08-14 | 新华三技术有限公司 | 内存资源分配方法、装置、设备及机器可读存储介质 |
CN113626347A (zh) * | 2021-07-29 | 2021-11-09 | 武汉新芯集成电路制造有限公司 | 存储装置及其工作方法 |
CN113626347B (zh) * | 2021-07-29 | 2023-12-15 | 武汉新芯集成电路制造有限公司 | 存储装置及其工作方法 |
CN114185645A (zh) * | 2021-12-09 | 2022-03-15 | 北京字节跳动网络技术有限公司 | 一种内存处理方法及装置 |
CN114185645B (zh) * | 2021-12-09 | 2023-08-04 | 抖音视界有限公司 | 一种内存处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101859279B (zh) | 2012-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101859279B (zh) | 一种内存分配、释放方法及装置 | |
CN101221536B (zh) | 嵌入式系统的内存管理方法及装置 | |
US20110246742A1 (en) | Memory pooling in segmented memory architecture | |
CN104915151A (zh) | 多虚拟机系统中一种主动共享的内存超量分配方法 | |
KR102077149B1 (ko) | 메모리 관리 방법 및 장치 | |
CN105843748B (zh) | 一种对内存中内存页的处理方法及装置 | |
CN102650931B (zh) | 一种写入数据的方法及系统 | |
CN102306126A (zh) | 内存管理方法、装置和系统 | |
US20060236059A1 (en) | System and method of allocating contiguous memory in a data processing system | |
CN101847127A (zh) | 一种内存管理方法及装置 | |
CN103150257A (zh) | 一种内存管理方法和装置 | |
CN104866428A (zh) | 数据存取方法和数据存取装置 | |
CN101226553A (zh) | 一种嵌入式数据库变长字段存储的实现方法及装置 | |
CN110162328B (zh) | 一种智能卡操作系统升级方法及装置 | |
CN109753361A (zh) | 一种内存管理方法、电子设备及存储装置 | |
CN101706788A (zh) | 一种嵌入式文件系统的跨区访问方法 | |
CN103218305A (zh) | 存储空间的分配方法 | |
CN103778149A (zh) | 文件系统及其对文件进行存储管理的方法 | |
CN102063386A (zh) | 一种单载体多目标的缓存系统的缓存管理方法 | |
CN105469173A (zh) | 一种静态内存进行优化管理的方法 | |
CN111694765A (zh) | 一种面向移动应用特征的非易失性内存文件系统多粒度空间管理方法 | |
CN103336670A (zh) | 一种基于数据温度对数据块自动进行分布的方法和装置 | |
CN102521157B (zh) | 一种在fpga上实现板载存储资源管理的系统和方法 | |
CN110109677B (zh) | 一种动态对象缓存池分配方法 | |
CN102520879B (zh) | 基于优先级的文件信息存储方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
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: 20120509 Termination date: 20160521 |