内存管理方法和装置与流程

文档序号:24647455发布日期:2021-04-13 15:50阅读:122来源:国知局
内存管理方法和装置与流程

1.本发明涉及计算机技术领域,尤其涉及一种内存管理方法和装置。


背景技术:

2.实时操作系统(real time operating system,rtos)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行的操作系统。提供及时的响应和高可靠性是实时操作系统的主要特点。
3.在实时操作系统的内存管理中,内存块的分配通常需要满足地址对齐和大小对齐,并且,需要记录内存块的管理开销。
4.目前,内存块和内存块的管理开销存放在同一块连续的内存区域中,导致在分配地址对齐和大小对齐的内存块时产生了大量的内存碎片,降低了内存的利用率。


技术实现要素:

5.本发明提供一种内存管理方法和装置,避免了产生内存碎片,提升了内存区域的利用率。
6.第一方面,本发明提供一种内存管理方法,包括:
7.获取内存分配请求,所述内存分配请求用于申请内存;
8.根据所述内存分配请求在内存区域中分配待使用的内存块,并生成所述待使用的内存块的内存管理信息;其中,所述内存区域地址连续,所述待使用的内存块地址对齐且大小对齐;
9.将所述待使用的内存块的内存管理信息存储至预设内存块中;所述预设内存块与所述内存区域不重合,且用于存储所述内存区域中内存块的内存管理信息。
10.可选的,所述根据所述内存分配请求在内存区域中分配待使用的内存块,包括:
11.根据所述内存区域的单位内存块的大小对所述内存区域进行内存分割,获得n个第一内存块;所述n个第一内存块地址对齐且大小对齐,n为正整数;其中,所述第一内存块的大小/所述单位内存块的大小=2的幂次方,的大小/所述单位内存块的大小=2的幂次方,
12.若所述n个第一内存块中存在至少一个空闲的第一内存块,则将其中一个空闲的第一内存块分配为所述待使用的内存块。
13.可选的,所述内存区域地址对齐且大小对齐,所述根据所述内存区域的单位内存块的大小对所述内存区域进行内存分割,获得n个第一内存块,包括:
14.对所述内存区域进行平均分割,获得两个大小相等的第一级内存块;
15.判断所述第一级内存块的大小除以所述内存分配请求申请的内存的大小的商是
否大于1;
16.若大于1,则对至少一个所述第一级内存块执行上述平均分割以及判断的步骤,直至分割获得的内存块的大小除以所述内存分配请求申请的内存的大小的商等于1,将所述分割获得的内存块确定为所述n个第一内存块。
17.可选的,还包括:
18.获取内存释放请求,所述内存释放请求用于请求释放所述内存区域中已占用的内存块;
19.根据所述内存释放请求释放所述已占用的内存块。
20.可选的,还包括:
21.判断所述已占用的内存块的伙伴内存块是否空闲;所述已占用的内存块的伙伴内存块与所述已占用的内存块为通过对同一个内存块进行内存分割后得到的,或者,所述已占用的内存块的伙伴内存块与所述已占用的内存块为地址相邻的内存块;
22.若空闲,则对所述已占用的内存块和所述已占用的内存块的伙伴内存块进行内存合并,获取合并后的内存块,并对所述合并后的内存块重复执行上述内存合并的步骤,直至不能进行内存合并为止,获取合并内存块,并生成所述合并内存块的内存管理信息;
23.将所述合并内存块的内存管理信息存储至所述预设内存块中。
24.可选的,所述内存块的内存管理信息包括:所述内存块的索引值、空闲指示信息和所述内存块的大小;其中,空闲指示信息用于指示所述内存块是否空闲。
25.可选的,所述内存块的内存管理信息还包括所述内存块的伙伴内存块的索引值;所述内存块的伙伴内存块与所述内存块为通过对同一个内存块进行内存分割后得到的,或者,所述内存块的伙伴内存块与所述内存块为地址相邻的内存块。
26.可选的,还包括:
27.获取待查询的内存块的索引值;
28.根据所述待查询的内存块的索引值以及索引值与内存地址之间的对应关系,获得所述待查询的内存块的内存地址。
29.可选的,还包括:
30.获取待查询的内存地址;
31.根据所述待查询的内存地址以及索引值与内存地址之间的对应关系,获得所述待查询的内存地址对应的内存块的索引值。
32.第二方面,本发明提供一种内存管理装置,包括:
33.获取模块,用于获取内存分配请求,所述内存分配请求用于申请内存;
34.管理模块,用于根据所述内存分配请求在内存区域中分配待使用的内存块,并生成所述待使用的内存块的内存管理信息;其中,所述内存区域地址连续,所述待使用的内存块地址对齐且大小对齐;
35.存储模块,用于将所述待使用的内存块的内存管理信息存储至预设内存块中;所述预设内存块与所述内存区域不重合,且用于存储所述内存区域中内存块的内存管理信息。
36.可选的,所述管理模块具体用于:
37.根据所述内存区域的单位内存块的大小对所述内存区域进行内存分割,获得n个
第一内存块;所述n个第一内存块地址对齐且大小对齐,n为正整数;其中,所述第一内存块的大小/所述单位内存块的大小=2的幂次方,的大小/所述单位内存块的大小=2的幂次方,
38.若所述n个第一内存块中存在至少一个空闲的第一内存块,则将其中一个空闲的第一内存块分配为所述待使用的内存块。
39.可选的,所述内存区域地址对齐且大小对齐,所述管理模块具体用于:
40.对所述内存区域进行平均分割,获得两个大小相等的第一级内存块;
41.判断所述第一级内存块的大小除以所述内存分配请求申请的内存的大小的商是否大于1;
42.若大于1,则对至少一个所述第一级内存块执行上述平均分割以及判断的步骤,直至分割获得的内存块的大小除以所述内存分配请求申请的内存的大小的商等于1,将所述分割获得的内存块确定为所述n个第一内存块。
43.可选的,所述获取模块,还用于获取内存释放请求,所述内存释放请求用于请求释放所述内存区域中已占用的内存块;
44.所述管理模块,还用于根据所述内存释放请求释放所述已占用的内存块。
45.可选的,所述管理模块还用于:
46.判断所述已占用的内存块的伙伴内存块是否空闲;所述已占用的内存块的伙伴内存块与所述已占用的内存块为通过对同一个内存块进行内存分割后得到的,或者,所述已占用的内存块的伙伴内存块与所述已占用的内存块为地址相邻的内存块;
47.若空闲,则对所述已占用的内存块和所述已占用的内存块的伙伴内存块进行内存合并,获取合并后的内存块,并对所述合并后的内存块重复执行上述内存合并的步骤,直至不能进行内存合并为止,获取合并内存块,并生成所述合并内存块的内存管理信息;
48.将所述合并内存块的内存管理信息存储至所述预设内存块中。
49.可选的,所述内存块的内存管理信息包括:所述内存块的索引值、空闲指示信息和所述内存块的大小;其中,空闲指示信息用于指示所述内存块是否空闲。
50.可选的,所述内存块的内存管理信息还包括所述内存块的伙伴内存块的索引值;所述内存块的伙伴内存块与所述内存块为通过对同一个内存块进行内存分割后得到的,或者,所述内存块的伙伴内存块与所述内存块为地址相邻的内存块。
51.可选的,所述获取模块,还用于获取待查询的内存块的索引值;
52.所述管理模块,还用于根据所述待查询的内存块的索引值以及索引值与内存地址之间的对应关系,获得所述待查询的内存块的内存地址。
53.可选的,所述获取模块,还用于获取待查询的内存地址;
54.所述管理模块,还用于根据所述待查询的内存地址以及索引值与内存地址之间的对应关系,获得所述待查询的内存地址对应的内存块的索引值。
55.第三方面,本发明提供一种内存管理装置,包括:处理器和存储器;
56.所述存储器,用于存储指令;
57.所述处理器,用于执行所述存储器中存储的指令,以执行本发明任一实施方式提供的内存管理方法。
58.第四方面,本发明提供一种存储介质,包括:可读存储介质和计算机程序,所述计算机程序用于实现本发明任一实施方式提供的内存管理方法。
59.本发明提供一种内存管理方法和装置,根据内存分配请求在内存区域中分配待使用的内存块,并生成待使用的内存块的内存管理信息,将待使用的内存块的内存管理信息存储至预设内存块中。其中,预设内存块与内存区域不重合,且用于存储内存区域中内存块的内存管理信息。通过将内存区域中内存块的内存管理信息进行集中存放,确保了被管理的内存区域的完整性和连续性,在内存分配过程中避免了产生内存碎片,提升了内存区域的利用率。
附图说明
60.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
61.图1为现有的内存块的位置示意图;
62.图2为本发明实施例提供的内存管理方法的流程图;
63.图3为本发明实施例提供的内存块的一种位置示意图;
64.图4为本发明实施例提供的内存块的另一种位置示意图;
65.图5为本发明实施例提供的对内存区域进行内存分割的示意图;
66.图6为本发明实施例提供的对内存区域进行合并的示意图;
67.图7为本发明实施例提供的内存管理装置的一种结构示意图;
68.图8为本发明实施例提供的内存管理装置的另一种结构示意图。
具体实施方式
69.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
70.在实时操作系统的内存管理中,内存块的分配通常需要满足地址对齐和大小对齐,并且,需要记录内存块的管理开销。内存块和内存块的管理开销存放在同一块连续的内存区域中。示例性的,图1为现有的内存块的位置示意图。在图1中,内存块11和内存块12地址连续。内存块12为已分配的内存块,内存块12地址对齐且大小对齐。内存块11中存储有内存块12的管理开销。相似的,内存块14为已分配的内存块,地址对齐且大小对齐,内存块13中存储有内存块14的管理开销。内存块12与内存块13之间的内存块为未分配的内存块。可见,由于内存块和内存块的管理开销存放在地址连续的内存区域中,导致了存放管理开销的内存块、已分配的内存块和未分配的内存块间隔排列,而且,未分配的内存块可能不是地址对齐或者大小对齐的,这样,就存在了大量的内存碎片,降低了内存的利用率。
71.针对上述技术问题,本发明提供的内存管理方法,通过对内存块的管理开销进行集中存储,确保了被管理的内存区域是完整连续的,避免了内存碎片的产生,提升了内存的
利用率。
72.下面,对本发明涉及的概念进行说明。
73.(1)地址对齐
74.内存地址对齐,是一种在计算机内存中排列数据、访问数据的方式。计算机在内存中读写数据时,都是按照基本单位进行操作的。例如,在32位系统中,每次可以读取4字节(一个字节的大小)。所谓地址对齐,是指内存块的起始地址等于基本单位的倍数。
75.(2)大小对齐
76.所谓大小对齐,是指内存块的大小等于基本单位的倍数,且所述倍数为2的幂次方。
77.下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
78.图2为本发明实施例提供的内存管理方法的流程图,图3为本发明实施例提供的内存分配过程中内存块的位置示意图。本实施例提供的内存管理方法,执行主体可以为内存管理装置。如图2和图3所示,本实施例提供的内存管理方法,可以包括:
79.s201、获取内存分配请求,内存分配请求用于申请内存。
80.其中,本实施例对内存分配请求包括的具体内容不做限定。可选的,内存分配请求可以包括申请的内存的大小。申请的内存可以为大小对齐的内存,也可以为大小不对齐的内存。例如,申请的内存的大小可以为4k字节、8k字节、16k字节、32k字节、64k字节、128k字节等,此时,申请的内存大小对齐。又例如,申请的内存的大小可以为6k字节、12k字节、48k字节等,此时,申请的内存大小不对齐。
81.在本实施例中,无论申请的内存是否大小对齐,根据内存分配请求实际分配的内存块均为大小对齐的内存块。
82.s202、根据内存分配请求在内存区域中分配待使用的内存块,并生成待使用的内存块的内存管理信息。
83.其中,内存区域地址连续,待使用的内存块地址对齐且大小对齐。
84.示例性的,在图3中,内存区域地址连续。待使用的内存块可以为内存块32~34。内存块32~34地址对齐且大小对齐。
85.可选的,内存区域地址对齐且大小对齐。
86.通过设置内存区域地址对齐且大小对齐,便于分配地址对齐且大小对齐的待使用的内存块,提升了内存分配效率。
87.可选的,内存块的内存管理信息可以包括:内存块的索引值、空闲指示信息和内存块的大小。
88.其中,内存块的索引值可以唯一区分不同的内存块。
89.其中,空闲指示信息用于指示内存块是否空闲。可选的,空闲指示信息可以为1比特信息。当空闲指示信息为0时,用于指示内存块空闲,当空闲指示信息为1时,用于指示内存块被占用。
90.可选的,内存块的内存管理信息还可以包括内存块的伙伴内存块的索引值。其中,内存块的伙伴内存块与内存块为通过对同一个内存块进行内存分割后得到的,或者,内存块的伙伴内存块与内存块为地址相邻的内存块。
91.后续会通过图5和图6对内存块的内存管理信息以及内存块的伙伴内存块进行示例性说明。
92.s203、将待使用的内存块的内存管理信息存储至预设内存块中。其中,预设内存块与内存区域不重合,且用于存储内存区域中内存块的内存管理信息。
93.示例性的,在图3中,预设内存块标记为内存块31,用于存储内存区域中内存块的内存管理信息,例如,可以存储已分配的内存块32~34的内存管理信息。预设内存块与内存区域不重合,确保了内存区域的完整和连续。
94.可选的,预设内存块与内存区域可以地址连续,例如图3所示。可选的,预设内存块与内存区域也可以地址不连续。
95.可选的,预设内存块为地址对齐且大小对齐。
96.在实时操作系统的内存管理中,内存的分配通常都是地址对齐且大小对齐的。通过设置预设内存块为地址对齐且大小对齐,避免了由于预设内存块造成的地址碎片,提升了内存的利用率。
97.可见,本实施例提供的内存管理方法,适用于分配的内存块地址对齐且大小对齐的场景,通过将被管理的内存区域中内存块的内存管理信息进行集中存放,使得存放内存管理信息的内存块和被管理的内存区域均为地址连续的区域,确保了被管理的内存区域的完整性和连续性,便于地址对齐且大小对齐的内存块的分配,避免了产生内存碎片,提升了内存区域的利用率。
98.可选的,s202中,根据内存分配请求在内存区域中分配待使用的内存块,可以包括:
99.根据内存区域的单位内存块的大小对内存区域进行内存分割,获得n个第一内存块。n个第一内存块地址对齐且大小对齐,n为正整数。其中,第一内存块的大小/单位内存块的大小=2的幂次方,的大小=2的幂次方,
100.若n个第一内存块中存在至少一个空闲的第一内存块,则将其中一个空闲的第一内存块分配为待使用的内存块。
101.下面结合图4进行示例性进行说明。图4为本发明实施例提供的内存块的另一种位置示意图。在本示例中,内存区域的大小为128k字节,单位内存块的大小为4k字节。
102.在第一个示例中,内存分配请求申请的内存的大小为32k字节,申请的内存是大小对齐的。通过内存分配请求申请的内存的大小可以确定第一内存块的大小为32k字节,第一内存块的大小/单位内存块的大小=8。对内存区域进行内存分割,可以获得4个第一内存块,在图4中通过虚线进行分隔。每个第一内存块地址对齐且大小对齐。可选的,可以按照内存区域的地址的顺序,将第一个空闲的内存块42分配为待使用的内存块。可选的,可以将内存区域中任意一个空闲的内存块分配为待使用的内存块,例如内存块43。
103.在第二个示例中,内存分配请求申请的内存的大小为24k字节,申请的内存不是大小对齐的。通过内存分配请求申请的内存的大小可以确定第一内存块的大小为32k字节,第一内存块的大小/单位内存块的大小=8。内存块的分配可以参见上述第一个示例,原理相似,此处不再赘述。
104.可见,通过内存分配请求申请的内存的大小确定第一内存块,将内存区域分割成多个第一内存块,将任意一个空闲的第一内存块分配为待使用的内存块,确保了待使用的
内存块是地址对齐且大小对齐的。
105.可选的,内存区域地址对齐且大小对齐,根据内存区域的单位内存块的大小对内存区域进行内存分割,获得n个第一内存块,可以包括:
106.对内存区域进行平均分割,获得两个大小相等的第一级内存块。
107.判断第一级内存块的大小除以内存分配请求申请的内存的大小的商是否大于1。
108.若大于1,则对至少一个第一级内存块执行上述平均分割以及判断的步骤,直至分割获得的内存块的大小除以内存分配请求申请的内存的大小的商等于1,将分割获得的内存块确定为n个第一内存块。
109.下面结合图5进行示例性说明。图5为本发明实施例提供的对内存区域进行内存分割的示意图。假设,内存区域的大小为128k字节,内存区域的单位内存块的大小为4k字节,内存分配请求申请的内存的大小为4k字节,则第一内存块的大小为4k字节。内存区域可以分割为32个第一内存块。如图5所示,对内存区域进行平均分割,获得2个大小相等的第一级内存块。第一级内存块的大小为64k字节。继续进行内存分割。分别对第一级内存块进行平均分割,一共获得4个大小相等的第二级内存块。第二级内存块的大小为32k字节。继续进行内存分割,直至获得32个大小相等的第五级内存块,第五级内存块的大小为4k字节。至此,获得了32个第一内存块。其中,内存块50与内存块51互为伙伴内存块,相似的,内存块52与内存块53、内存块54与内存块55、内存块56与内存块57、内存块58与内存块59均互为伙伴内存块。可选的,可以基于内存区域的单位内存块设置单位内存块的索引值。在图5中,内存区域包括得32个单位内存块的索引值可以分别标识为0~31。可选的,在内存分配的过程中,可以将内存块中包括的第一个单位内存块的索引值作为该内存块的索引值。需要说明的是,图5中内存块的索引值仅是示例,还可以通过其他的方式设置内存块的索引值,本实施例对此不作限定。
110.可见,由于内存区域地址对齐且大小对齐,通过不断的平均分割直至获得第一内存块,确保了第一内存块地址对齐且大小对齐,便于内存的分配。
111.可选的,本实施例提供的内存管理方法,还可以包括:
112.获取内存释放请求,内存释放请求用于请求释放内存区域中已占用的内存块。
113.根据内存释放请求释放已占用的内存块。
114.其中,本实施例对内存释放请求包括的具体内容不做限定。可选的,内存释放请求可以包括已占用的内存块的索引值。
115.可选的,本实施例提供的内存管理方法,还可以包括:
116.判断已占用的内存块的伙伴内存块是否空闲。已占用的内存块的伙伴内存块与已占用的内存块为通过对同一个内存块进行内存分割后得到的,或者,已占用的内存块的伙伴内存块与已占用的内存块为地址相邻的内存块。
117.若空闲,则对已占用的内存块和已占用的内存块的伙伴内存块进行内存合并,获取合并后的内存块,并对合并后的内存块重复执行上述内存合并的步骤,直至不能进行内存合并为止,获取合并内存块,并生成合并内存块的内存管理信息。
118.将合并内存块的内存管理信息存储至预设内存块中。
119.下面,结合图6对内存块的合并进行示例性说明。图6为本发明实施例提供的对内存区域进行合并的示意图。假设,内存释放请求用于请求释放的内存区域中已占用的内存
块为内存块64,内存块64的伙伴内存块为内存块65。内存块64的索引值为0,内存块65的索引值为4。假设,内存块65空闲,则可以对内存块64和内存块65进行合并,生成内存块62,内存块62的索引值为0。内存块62的伙伴内存块为内存块63。假设,内存块63空闲,则可以对内存块62和内存块63继续进行合并,生成内存块60,内存块60的索引值为0。内存块60的伙伴内存块为内存块61。假设,内存块61非空闲,已被占用,则停止内存合并。此时,生成内存块60的内存管理信息。例如,内存块60的内存管理信息可以包括如下几项:内存块60的索引值0、用于指示内存块60为空闲的空闲指示信息、内存块60的大小64k字节、内存块60的伙伴内存块的索引值16。
120.可选的,本实施例提供的内存管理方法,还可以包括:
121.获取待查询的内存块的索引值。
122.根据待查询的内存块的索引值以及索引值与内存地址之间的对应关系,获得待查询的内存块的内存地址。
123.可选的,本实施例提供的内存管理方法,还可以包括:
124.获取待查询的内存地址。
125.根据待查询的内存地址以及索引值与内存地址之间的对应关系,获得待查询的内存地址对应的内存块的索引值。
126.具体的,内存块的索引值与内存地址之间存在映射关系,内存块的索引值的设置方式不同,内存块的索引值与内存地址之间的映射关系可以不同。示例性的,如图5和图6所示,若内存块的索引值基于内存区域的单位内存块进行设置,内存块的索引值与内存地址之间的映射关系可以为:
127.索引号转换内存地址的公式:内存地址=内存区域的起始地址+(索引号*单位内存的大小)
128.内存地址转换索引号的公式:索引号=(内存地址-内存区域的起始地址)/单位内存的大小
129.通过内存块的索引值与内存地址之间的对应关系,可以根据内存块的索引值查询获得内存块的内存地址,也可以根据内存块的内存地址查询获得内存块的索引值,便于内存块的查找和管理。
130.图7为本发明实施例提供的内存管理装置的一种结构示意图。本实施例提供的内存管理装置,用于执行图2~图6所示实施例提供的内存管理方法。如图7所示,本实施例提供的内存管理装置,可以包括:
131.获取模块71,用于获取内存分配请求,所述内存分配请求用于申请内存;
132.管理模块72,用于根据所述内存分配请求在内存区域中分配待使用的内存块,并生成所述待使用的内存块的内存管理信息;其中,所述内存区域地址连续,所述待使用的内存块地址对齐且大小对齐;
133.存储模块73,用于将所述待使用的内存块的内存管理信息存储至预设内存块中;所述预设内存块与所述内存区域不重合,且用于存储所述内存区域中内存块的内存管理信息。
134.可选的,所述管理模块72具体用于:
135.根据所述内存区域的单位内存块的大小对所述内存区域进行内存分割,获得n个
第一内存块;所述n个第一内存块地址对齐且大小对齐,n为正整数;其中,所述第一内存块的大小/所述单位内存块的大小=2的幂次方,的大小/所述单位内存块的大小=2的幂次方,
136.若所述n个第一内存块中存在至少一个空闲的第一内存块,则将其中一个空闲的第一内存块分配为所述待使用的内存块。
137.可选的,所述内存区域地址对齐且大小对齐,所述管理模块72具体用于:
138.对所述内存区域进行平均分割,获得两个大小相等的第一级内存块;
139.判断所述第一级内存块的大小除以所述内存分配请求申请的内存的大小的商是否大于1;
140.若大于1,则对至少一个所述第一级内存块执行上述平均分割以及判断的步骤,直至分割获得的内存块的大小除以所述内存分配请求申请的内存的大小的商等于1,将所述分割获得的内存块确定为所述n个第一内存块。
141.可选的,所述获取模块71,还用于获取内存释放请求,所述内存释放请求用于请求释放所述内存区域中已占用的内存块;
142.所述管理模块72,还用于根据所述内存释放请求释放所述已占用的内存块。
143.可选的,所述管理模块72还用于:
144.判断所述已占用的内存块的伙伴内存块是否空闲;所述已占用的内存块的伙伴内存块与所述已占用的内存块为通过对同一个内存块进行内存分割后得到的,或者,所述已占用的内存块的伙伴内存块与所述已占用的内存块为地址相邻的内存块;
145.若空闲,则对所述已占用的内存块和所述已占用的内存块的伙伴内存块进行内存合并,获取合并后的内存块,并对所述合并后的内存块重复执行上述内存合并的步骤,直至不能进行内存合并为止,获取合并内存块,并生成所述合并内存块的内存管理信息;
146.将所述合并内存块的内存管理信息存储至所述预设内存块中。
147.可选的,所述内存块的内存管理信息包括:所述内存块的索引值、空闲指示信息和所述内存块的大小;其中,空闲指示信息用于指示所述内存块是否空闲。
148.可选的,所述内存块的内存管理信息还包括所述内存块的伙伴内存块的索引值;所述内存块的伙伴内存块与所述内存块为通过对同一个内存块进行内存分割后得到的,或者,所述内存块的伙伴内存块与所述内存块为地址相邻的内存块。
149.可选的,所述获取模块71,还用于获取待查询的内存块的索引值;
150.所述管理模块72,还用于根据所述待查询的内存块的索引值以及索引值与内存地址之间的对应关系,获得所述待查询的内存块的内存地址。
151.可选的,所述获取模块71,还用于获取待查询的内存地址;
152.所述管理模块72,还用于根据所述待查询的内存地址以及索引值与内存地址之间的对应关系,获得所述待查询的内存地址对应的内存块的索引值。
153.本实施例提供的内存管理装置,用于执行图2~图6所示实施例提供的内存管理方法。技术原理和技术效果相似,此处不再赘述。
154.图8为本发明实施例提供的内存管理装置的另一种结构示意图。如图8所示,本实施例提供的内存管理装置,包括:处理器81和存储器82。所述存储器82,用于存储指令;所述
处理器81,用于执行所述存储器82中存储的指令,以执行图2~图6所示实施例提供的内存管理方法。技术原理和技术效果相似,此处不再赘述。
155.本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
156.最后应说明的是:以上各实施例仅用以说明本发明实施例的技术方案,而非对其限制;尽管参照前述各实施例对本发明实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1