本发明涉及计算机,尤其涉及一种内存资源分配方法、装置、设备及存储介质。
背景技术:
1、在一个系统中有多个应用要申请内部存储空间使用,有些特定系统中,应用申请的地址空间是有重叠的,这时候只能进入堆栈进行排队,等待前面的应用释放内存,才能申请到这段地址空间。
2、目前,现有技术都是通过双向链表进行排序,每个新进来的申请要与链表内所有的节点进行比较,这样当链表中积压的节点非常多的时候,比较过程时间会很长。
3、亟需一种内存资源分配方法,解决当链表中积压的节点非常多的时候,比较过程时间过长的问题,实现高效的内存资源分配。
技术实现思路
1、本发明的主要目的在于提供了一种内存资源分配方法、装置、设备及存储介质,旨在解决现有技术当链表中积压的节点非常多的时候,比较过程时间过长的技术问题。
2、为实现上述目的,本发明提供了一种内存资源分配方法,所述方法包括以下步骤:
3、获取新节点向预设的三向链表申请的目标内存基地址及范围,所述三向链表预先通过内存分配排队算法建立,所述三向链表包括横向链表和竖向链表,所述横向链表为双向链表,所述竖向链表为由内存地址存在重合的节点组成的单向链表;
4、根据所述三向链表和所述目标内存基地址及范围对所述新节点进行内存资源分配。
5、可选地,所述根据所述三向链表和所述目标内存基地址及范围对所述新节点进行内存资源分配的步骤,包括:
6、基于所述横向链表,获取所述横向链表的尾节点;
7、将所述横向链表的尾节点作为初始目标节点,按照由后向前的顺序依次判断所述横向链表的全部目标节点的数据与所述目标内存基地址及范围是否产生内存地址重合;
8、若否,则将所述尾节点的有效值更新为1,以及将所述新节点的有效值更新为0,并将所述新节点作为所述横向链表的新的尾节点,以实现内存资源分配。
9、可选地,所述将所述横向链表的尾节点作为初始目标节点,按照由后向前的顺序依次判断所述横向链表的全部目标节点的数据与所述目标内存基地址及范围是否产生内存地址重合的步骤之后,还包括:
10、若是,则判断所述目标节点的分支有效值是否为1;
11、若所述目标节点的分支有效值为1,则以所述目标节点作为竖向链表的初始节点,并依次获取连接在所述初始节点下的后续分支节点的标记值;
12、在所述后续分支节点中存在所述标记值为0的目标后续分支节点时,将所述目标后续分支节点作为尾分支节点并将所述新节点连接在所述尾分支节点之后,以生成新的尾分支节点;
13、基于所述新的尾分支节点,将所述尾分支节点的标记值更新为1,并将所述新的尾分支节点的标记值更新为0。
14、可选地,所述若是,则判断所述目标节点的分支有效值是否为1的步骤之后,还包括:
15、若所述目标节点的分支有效值不为1,则判定所述目标节点上无连接的分支节点,并将所述新节点作为分支节点;
16、将所述目标节点的分支有效值更新为1,并将所述目标节点作为竖向链表的初始节点,以及将所述分支节点的标记值更新为0。
17、可选地,所述根据所述三向链表和所述目标内存基地址及范围对所述新节点进行内存资源分配的步骤,还包括:
18、基于所述三向链表,在所述目标节点申请内存地址释放时,将所述目标节点申请的所述内存地址释放,并以所述目标节点为初始节点由后向前依次获取对比节点的数据;
19、判断所述目标节点是否为竖向链表的初始节点;
20、若是,则获取所述目标节点的分支节点的数据;
21、依次判断所述分支节点的数据与所述对比节点数据是否产生内存地址重合;
22、若未产生内存地址重合,则将所述目标节点释放的内存地址分配至所述分支节点。
23、可选地,所述依次判断所述分支节点的数据与所述对比节点数据是否产生内存地址重合的步骤之后,还包括:
24、若产生内存地址重合,则判定内存地址未申请成功,并将所述分支节点作为以对比节点作为初始节点的竖向链表的尾节点。
25、可选地,所述若产生内存地址重合,则判定内存地址未申请成功,并将所述分支节点作为以对比节点作为初始节点的竖向链表的尾节点的步骤,具体包括:
26、若产生内存地址重合,则判定内存地址未申请成功,依次获取所述竖向链表中节点的分支有效值;
27、若所述分支有效值为0,则将所述分支节点与所述节点连接,并将所述节点的分支有效值更新为1,将所述分支节点的分支有效值更新为0。
28、此外,为实现上述目的,本发明还提出一种内存资源分配装置,所述装置包括:
29、获取模块,用于获取新节点向预设的三向链表申请的目标内存基地址及范围,所述预设的三向链表预先通过内存分配排队算法建立,所述三向链表包括横向链表和竖向链表,所述横向链表为双向链表,所述竖向链表为由内存地址存在重合的节点组成的单向链表;
30、分配模块,用于根据所述三向链表和所述目标内存基地址及范围对所述新节点进行内存资源分配。
31、此外,为实现上述目的,本发明还提出一种内存资源分配设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的内存资源分配程序,所述内存资源分配程序配置为实现如上文所述的内存资源分配方法的步骤。
32、此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有内存资源分配程序,所述内存资源分配程序被处理器执行时实现如上文所述的内存资源分配方法的步骤。
33、本发明通过获取新节点向预设的三向链表申请的目标内存基地址及范围,其中,预设的三向链表预先通过内存分配排队算法建立,三向链表包括横向链表和竖向链表,横向链表为双向链表,竖向链表为由内存地址存在重合的节点组成的单向链表;根据三向链表和目标内存基地址及范围对所述新节点进行内存资源分配。由于本发明是通过内存分配排队算法建立预设的三向链表,然后获取新节点向预设的三向链表申请的目标内存基地址及范围,再根据三向链表和目标内存基地址及范围对所述新节点进行内存资源分配,相比于现有技术,本发明有效解决了当链表中积压的节点非常多的时候,比较过程时间过长的问题,进而实现了高效的内存资源分配。
1.一种内存资源分配方法,其特征在于,所述方法包括以下步骤:
2.如权利要求1所述的方法,其特征在于,所述根据所述三向链表和所述目标内存基地址及范围对所述新节点进行内存资源分配的步骤,包括:
3.如权利要求2所述的方法,其特征在于,所述将所述横向链表的尾节点作为初始目标节点,按照由后向前的顺序依次判断所述横向链表的全部目标节点的数据与所述目标内存基地址及范围是否产生内存地址重合的步骤之后,还包括:
4.如权利要求3所述方法,其特征在于,所述若是,则判断所述目标节点的分支有效值是否为1的步骤之后,还包括:
5.如权利要求2所述的方法,其特征在于,所述根据所述三向链表和所述目标内存基地址及范围对所述新节点进行内存资源分配的步骤,还包括:
6.如权利要求5所述的方法,其特征在于,所述依次判断所述分支节点的数据与所述对比节点数据是否产生内存地址重合的步骤之后,还包括:
7.如权利要求6所述的方法,其特征在于,所述若产生内存地址重合,则内存地址未申请成功,所述分支节点作为以对比节点作为初始节点的竖向链表的尾节点的步骤,具体包括:
8.一种内存资源分配装置,其特征在于,所述装置包括:
9.一种内存资源分配设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的内存资源分配程序,所述内存资源分配程序配置为实现如权利要求1至7中任一项所述的内存资源分配方法的步骤。
10.一种存储介质,其特征在于,所述存储介质上存储有内存资源分配程序,所述内存资源分配程序被处理器执行时实现如权利要求1至7任一项所述的内存资源分配方法的步骤。