一种资源处理方法及终端与流程

文档序号:14571835发布日期:2018-06-01 22:40阅读:138来源:国知局
一种资源处理方法及终端与流程

本发明涉及计算机领域中的存储技术,尤其涉及一种资源处理方法及终端。



背景技术:

存储器是现代信息技术中用于保存程序和数据等信息的记忆设备,计算机可以将输入的原始数据、计算机程序、计算的中间结果和最终运行结果等信息存储至存储器中,所以,存储器的资源是否充足决定了计算机处理速度的快慢,近年来,随着网络的发展越来越迅速,计算机承载了越来越庞大的计算量和数据信息,而存储器存储的资源是固定且非常有限的,所以对存储器的资源进行管理时,可以采用一些特殊的方法,以提高存储器的运行效率,减少存储空间的浪费。

目前,终端的操作系统可以通过空闲块链表的形式对存储器进行管理,如图1所示,存储器中的所有空闲块以空闲块链表的形式存储,存储器分配资源时,存储器通过遍历链表来查找合适的空闲块;存储器回收资源时,存储器通过遍历链表来查找合适的插入地址插入回收的资源块。

然而,现有的空闲块链表管理方式在进行了大量的分配和回收操作之后产生大量的空间碎片,这些长度非常小的空间碎片不能满足分配要求,但链表中的碎片之和又大于待分配空间,导致了空间碎片过多、资源浪费的问题。



技术实现要素:

为解决上述技术问题,本发明实施例期望提供一种资源处理方法及终端,能够减少空间碎片,降低资源浪费。

本发明的技术方案是这样实现的:

本发明实施例提供一种资源处理方法,包括:

在传输第一数据时,获取所述第一数据的第一空间长度;

将所述第一空间长度与预设空间长度进行对比;

当所述第一空间长度小于所述预设空间长度时,按照所述预设空间长度遍历空闲资源块,确定第一空闲资源块,所述第一空闲资源块大于等于所述预设空间长度;

采用所述第一空闲资源块给所述第一数据分配存储资源。

在上述方案中,所述将所述第一空间长度与所述预设空间长度进行对比之后,所述采用所述第一空闲资源块给所述第一数据分配存储资源之前,所述方法还包括:

当所述第一空间长度大于等于所述预设空间长度时,按照所述第一空间长度遍历所述空闲资源块,确定所述第一空闲资源块,所述第一空闲资源块大于等于所述第一空间长度。

在上述方案中,所述采用所述第一空闲资源块给所述第一数据分配存储资源,包括:

当两个所述预设空间长度之和,大于所述第一空闲资源块的长度时,确定所述第一空闲资源块为所述第一数据的存储资源块;

当两个所述预设空间长度之和,小于等于所述第一空闲资源块的长度时,从所述第一空闲资源块中确定长度为所述预设空间长度的待分配资源块,所述待分配资源块为所述第一数据的存储资源块。

在上述方案中,所述采用所述第一空闲资源块给所述第一数据分配存储资源,包括:

当所述第一空间长度与所述预设空间长度之和,大于所述第一空闲资源块的长度时,确定所述第一空闲资源块为所述第一数据的存储资源块;

当所述第一空间长度与所述预设空间长度之和,小于等于所述第一空闲资源块的长度时,从所述第一空闲资源块中确定长度为所述第一空间长度的待分配资源块,所述待分配资源块为所述第一数据的存储资源块。

在上述方案中,所述从所述第一空闲资源块中确定长度为所述预设空间长度的待分配资源块,包括:

在所述第一空闲资源块中,从所述第一空闲资源块的终止地址开始,读取长度为所述预设空间长度的第二空闲资源块,所述第二空闲资源块属于所述第一空闲资源块;

将所述第二空闲资源块确定为所述待分配资源块。

在上述方案中,所述从所述第一空闲资源块中确定长度为所述第一空间长度的待分配资源块,包括:

在所述第一空闲资源块中,从所述第一空闲资源块的终止地址开始,读取长度为所述第一空间长度的第三空闲资源块,所述第三空闲资源块属于所述第一空闲资源块;

将所述第三空闲资源块确定为所述待分配资源块。

在上述方案中,所述按照所述预设空间长度遍历空闲资源块,确定第一空闲资源块,包括:

从起始空闲资源块开始遍历所述空闲资源块;

将所述预设空间长度与当前空闲资源块的第二空间长度进行比较,所述当前空闲资源块为所述空闲资源块中的一个空闲资源块;

直至确定所述第二空间长度大于所述预设空间长度的所述当前空闲资源块为所述第一空闲资源块。

在上述方案中,所述将所述预设空间长度与当前空闲资源块的第二空间长度进行比较之后,所述方法还包括:

当遍历到终止空闲资源块都没有确定所述第一空闲资源块时,结束将所述预设空间长度与所述当前空闲资源块的所述第二空间长度进行比较的流程并返回确定失败指令。

在上述方案中,所述采用所述第一空闲资源块给所述第一数据分配存储资源之后,所述方法还包括:

在传输完成所述第一数据时,释放所述第一数据,并获取释放完所述第一数据的存储资源块,所述存储资源块包括第一地址信息;

根据所述第一地址信息和预设判定条件,遍历所述空闲资源块,确定与所述存储资源块相邻的第四空闲资源块;

根据所述第一地址信息和第二地址信息对所述存储资源块与所述第四空闲资源块进行判定,所述第四空闲资源块为所述空闲资源块中与所述存储资源块相邻的空闲资源块,所述第二地址信息为所述第四空闲资源块的地址信息;

当判定所述第四空闲资源块与所述存储资源块连续时,将所述第四空闲资源块与所述存储资源块合并成新的所述第四空闲资源块。

在上述方案中,所述根据所述第一地址信息和预设判定条件,遍历所述空闲资源块,确定与所述存储资源块相邻的第四空闲资源块,包括:

从起始空闲资源块开始遍历所述空闲资源块;

将所述第一地址信息与所述当前空闲资源块的第二地址信息进行比较;

当确定所述第二地址信息大于所述第一地址信息,且所述第二地址信息与所述第一地址信息之差最小时,将当前空闲资源块确定为第五空闲资源块,所述第五空闲资源块为与所述存储资源块右相邻的所述第四空闲资源块;

当确定所述第二地址信息小于所述第一地址信息,且所述第二地址信息与所述第一地址信息之差最小时,将当前空闲资源块确定为第六空闲资源块,所述第六空闲资源块为与所述存储资源块左相邻的所述第四空闲资源块。

在上述方案中,所述根据所述第一地址信息和预设判定条件,遍历所述空闲资源块,确定与所述存储资源块相邻的第四空闲资源块之后,所述方法还包括:

当所述当前空闲资源块为终止空闲资源块,且所述第二地址信息小于所述第一地址信息时,结束遍历所述空闲资源块的流程。

在上述方案中,所述存储资源块包括第三空间长度,所述当所述第四空闲资源块与所述存储资源块连续时,将所述第四空闲资源块与所述存储资源块合并成新的所述第四空闲资源块,包括:

当所述存储资源块与所述第五空闲资源块连续时,将所述第五空闲资源块的空间长度与所述第三空间长度合并为新的第五空闲资源块的空间长度,将所述第一地址信息作为第一指针指向的下一个空闲资源块的地址信息,将第二指针指向的下一个空闲资源块的地址信息作为新的第三指针指向的下一个空闲资源块的地址信息,所述第一指针指向的下一个空闲资源块的地址信息为所述第六空闲资源块对应的指针信息,所述第二指针指向的下一个空闲资源块的地址信息为所述存储资源块对应的指针信息,所述第三指针指向的下一个空闲资源块的地址信息为所述第五空闲资源块对应的指针信息;

当所述存储资源块与所述第六空闲资源块连续时,将第六空闲资源块的空间长度与所述第二空间长度合并为新的第六空闲资源块的空间长度。

在上述方案中,所述根据所述第一地址信息和第二地址信息对所述存储资源块与所述第四空闲资源块进行判定之后,所述方法还包括:

当判定所述存储空闲资源块与所述第五空闲资源块和所述第六空闲资源块都不连续时,将所述第一地址信息作为所述第一指针指向的下一个空闲资源块的地址信息,将所述第一指针指向的下一个空闲资源块的地址信息作为所述第三指针指向的下一个空闲资源块的地址信息。

本发明实施例提供一种终端,所述终端包括:

获取单元,用于在传输第一数据时,获取所述第一数据的第一空间长度;

对比单元,用于将所述第一空间长度与预设空间长度进行对比;

确定单元,用于当所述第一空间长度小于所述预设空间长度时,按照所述预设空间长度遍历空闲资源块,确定第一空闲资源块,所述第一空闲资源块大于等于所述预设空间长度;

分配单元,用于采用所述第一空闲资源块给所述第一数据分配存储资源。

在上述终端中,所述确定单元,还用于当所述第一空间长度大于等于所述预设空间长度时,按照所述第一空间长度遍历所述空闲资源块,确定所述第一空闲资源块,所述第一空闲资源块大于等于所述第一空间长度。

在上述终端中,所述确定单元,还用于当两个所述预设空间长度之和,大于所述第一空闲资源块的长度时,确定所述第一空闲资源块为所述第一数据的存储资源块;当两个所述预设空间长度之和,小于等于所述第一空闲资源块的长度时,从所述第一空闲资源块中确定长度为所述预设空间长度的待分配资源块,所述待分配资源块为所述第一数据的存储资源块。

在上述终端中,所述确定单元,还用于当所述第一空间长度与所述预设空间长度之和,大于所述第一空闲资源块的长度时,确定所述第一空闲资源块为所述第一数据的存储资源块;当所述第一空间长度与所述预设空间长度之和,小于等于所述第一空闲资源块的长度时,从所述第一空闲资源块中确定长度为所述第一空间长度的待分配资源块,所述待分配资源块为所述第一数据的存储资源块。

在上述终端中,所述终端还包括:读取单元;

所述读取单元,用于在所述第一空闲资源块中,从所述第一空闲资源块的终止地址开始,读取长度为所述预设空间长度的第二空闲资源块,所述第二空闲资源块属于所述第一空闲资源块;

所述确定单元,还用于将所述第二空闲资源块确定为所述待分配资源块。

在上述终端中,所述读取单元,还用于在所述第一空闲资源块中,从所述第一空闲资源块的终止地址开始,读取长度为所述第一空间长度的第三空闲资源块,所述第三空闲资源块属于所述第一空闲资源块;

所述确定单元,还用于将所述第三空闲资源块确定为所述待分配资源块。

在上述终端中,所述终端还包括:遍历单元和比较单元;

所述遍历单元,用于从起始空闲资源块开始遍历所述空闲资源块;

所述比较单元,用于将所述预设空间长度与当前空闲资源块的第二空间长度进行比较,所述当前空闲资源块为所述空闲资源块中的一个空闲资源块;

所述确定单元,具体用于直至确定所述第二空间长度大于所述预设空间长度的所述当前空闲资源块为所述第一空闲资源块。

在上述终端中,所述终端还包括:结束单元;

所述结束单元,用于当遍历到终止空闲资源块都没有确定所述第一空闲资源块时,结束将所述预设空间长度与所述当前空闲资源块的所述第二空间长度进行比较的流程并返回确定失败指令。

在上述终端中,所述终端还包括:判定单元和合并单元;

所述获取单元,还用于在传输完成所述第一数据时,释放所述第一数据,并获取释放完所述第一数据的存储资源块,所述存储资源块包括第一地址信息;

所述确定单元,还用于根据所述第一地址信息和预设判定条件,遍历所述空闲资源块,确定与所述存储资源块相邻的第四空闲资源块;

所述判定单元,用于根据所述第一地址信息和第二地址信息对所述存储资源块与所述第四空闲资源块进行判定,所述第四空闲资源块为所述空闲资源块中与所述存储资源块相邻的空闲资源块,所述第二地址信息为所述第四空闲资源块的地址信息;

所述合并单元,用于当判定所述第四空闲资源块与所述存储资源块连续时,将所述第四空闲资源块与所述存储资源块合并成新的所述第四空闲资源块。

在上述终端中,所述遍历单元,还用于从起始空闲资源块开始遍历所述空闲资源块;

所述比较单元,还将所述第一地址信息与所述当前空闲资源块的第二地址信息进行比较;

所述确定单元,还用于当确定所述第二地址信息大于所述第一地址信息,且所述第二地址信息与所述第一地址信息之差最小时,将当前空闲资源块确定为第五空闲资源块,所述第五空闲资源块为与所述存储资源块右相邻的所述第四空闲资源块;当确定所述第二地址信息小于所述第一地址信息,且所述第二地址信息与所述第一地址信息之差最小时,将当前空闲资源块确定为第六空闲资源块,所述第六空闲资源块为与所述存储资源块左相邻的所述第四空闲资源块。

在上述终端中,所述结束单元,还用于当所述当前空闲资源块为终止空闲资源块,且所述第二地址信息小于所述第一地址信息时,结束遍历所述空闲资源块的流程。

在上述终端中,所述合并单元,具体用于当所述存储资源块与所述第五空闲资源块连续时,将所述第五空闲资源块的空间长度与所述第三空间长度合并为新的第五空闲资源块的空间长度,将所述第一地址信息作为第一指针指向的下一个空闲资源块的地址信息,将第二指针指向的下一个空闲资源块的地址信息作为新的第三指针指向的下一个空闲资源块的地址信息,所述第一指针指向的下一个空闲资源块的地址信息为所述第六空闲资源块对应的指针信息,所述第二指针指向的下一个空闲资源块的地址信息为所述存储资源块对应的指针信息,所述第三指针指向的下一个空闲资源块的地址信息为所述第五空闲资源块对应的指针信息;当所述存储资源块与所述第六空闲资源块连续时,将第六空闲资源块的空间长度与所述第二空间长度合并为新的第六空闲资源块的空间长度。

在上述终端中,所述终端还包括:更新单元;

所述更新单元,用于当判定所述存储空闲资源块与所述第五空闲资源块和所述第六空闲资源块都不连续时,将所述第一地址信息作为所述第一指针指向的下一个空闲资源块的地址信息,将所述第一指针指向的下一个空闲资源块的地址信息作为所述第三指针指向的下一个空闲资源块的地址信息。

本发明实施例提供了一种资源处理方法及终端,通过在传输第一数据时,获取第一数据的第一空间长度;将第一空间长度与预设空间长度进行对比;当第一空间长度小于预设空间长度时,按照预设空间长度遍历空闲资源块,确定第一空闲资源块,第一空闲资源块大于等于预设空间长度;采用第一空闲资源块给第一数据分配存储资源。采用上述技术实现方案,能够在分配存储器资源的时候,设置最小存储资源,使得分配的空闲资源块和剩余的空闲资源块不小于最小存储资源,能够减少空间碎片,降低资源浪费。

附图说明

图1为现有技术中存储器对空闲块进行分配和回收示意图;

图2为本发明实施例提供的一种资源处理方法流程图一;

图3为本发明实施例提供的一种示例性的空闲块的结构示意图;

图4为本发明实施例提供的一种示例性的已分配的空闲块的结构示意图;

图5为本发明实施例提供的一种示例性的空闲块被分配的示意图一;

图6为本发明实施例提供的一种示例性的空闲块被分配的示意图二;

图7为本发明实施例提供的一种示例性的空闲块被分配的示意图三;

图8为本发明实施例提供的一种资源处理方法流程图二;

图9为本发明实施例提供的一种示例性的已分配空闲块被回收的示意图一;

图10为本发明实施例提供的一种示例性的已分配空闲块被回收的示意图二;

图11为本发明实施例提供的一种示例性的已分配空闲块被回收的示意图三;

图12为本发明实施例提供的一种资源处理方法流程图三;

图13为本发明实施例提供的一种资源处理方法流程图四;

图14为本发明实施例提供的一种终端1的结构示意图一;

图15为本发明实施例提供的一种终端1的结构示意图二;

图16为本发明实施例提供的一种终端1的结构示意图三;

图17为本发明实施例提供的一种终端1的结构示意图四;

图18为本发明实施例提供的一种终端1的结构示意图五;

图19为本发明实施例提供的一种终端1的结构示意图六;

图20为本发明实施例提供的一种终端1的结构示意图七。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

实施例一

本发明实施例提供一种资源处理方法,如图2所示,该方法可以包括:

S101、在传输第一数据时,获取第一数据的第一空间长度。

本发明实施例提供的一种资源处理方法适用于对存储器中的空闲资源进行分配操作的场景下。

本发明实施例中,当终端进行第一数据的传输时,终端操作系统需要调用存储器中的空闲资源来存储第一数据,此时,存储器获取到第一数据所需要占用的第一空间长度。

本发明实施例中,存储器中的空闲资源块是以空闲块链表的形式进行存储的,如图3所示,每一个空闲资源块由3个部分组成,分别是LEN、Next Addr和Space,其中,LEN表示的是该空闲资源块可用空间的长度,LEN的值为Next Addr和Space的值之和、Next Addr表示的是下一块空闲资源块的起始地址,且当该空闲资源块为最后一块空闲资源块时,该值为NULL、Space表示的是该空闲资源块实际可以分配的长度。

本发明实施例中,LEN和Next Addr所占用的长度可以根据存储器大小来设定。

示例性的,设定LEN和Next Addr所占用的长度和为2个字节时,可以管理64K大小的空闲资源块;设定LEN和Next Addr所占用的长度和为4个字节时,可以管理4G大小的空闲资源块。

S102、将第一空间长度与预设空间长度进行对比。

当存储器获取到第一数据的第一空间长度之后,就要判定该第一空间长度是否小于存储器设定的最小长度了。

本发明实施例中存储器中设定有预设空间长度,当存储器获取到终端需要占用第一空间时,存储器将第一空间长度与预设空间长度进行对比,判断第一空间长度是否大于等于预设空间长度。

S103、当第一空间长度小于预设空间长度时,按照预设空间长度遍历空闲资源块,确定第一空闲资源块,该第一空闲资源块大于等于该预设空间长度。

当第一空间长度与预设空间长度的对比结果是第一空间长度小于预设空间长度时,需要在存储器的空闲资源块中寻找大于等于预设空间长度的第一空闲资源块。

本发明实施例中,当第一空间长度小于预设空间长度时,表征终端需要的空间长度小于存储器预设的最低分配的空间长度,此时,存储器按照预设空间长度从空闲资源块中寻找合适的第一空闲资源块。

进一步地,当第一空间长度大于等于预设空间长度时,表征第一空间长度满足存储器的最低分配空间的长度,此时,存储器从空闲资源块中寻找大于等于第一空间长度的第一空闲资源块。

可以理解的是,将第一空间长度与存储器设置的预设空间长度进行比较,避免申请存储器分配的空间长度小于存储器设置的预设空间长度,可以有效的避免空间碎片的生成。

S104、采用第一空闲资源块给第一数据分配存储资源。

当存储器确定了待分配的第一空闲资源块时,就要将第一空闲资源块按照存储器确定的分配空间长度进行分离,并将分离后的待分配空闲资源块分配给第一数据存储资源。

本发明实施例中,当第一空间长度小于预设空间长度时,比较两个预设空间长度之和是否大于第一空闲资源块的长度,如果两个预设空间长度之和大于等于第一空闲资源块的长度,表征第一空闲资源块在分离出预设空间长度的空闲资源块之后,剩余的空闲资源块小于预设空间长度,此时,将整个第一空闲资源块全部分配给第一数据进行数据的存储;如果两个预设空间长度之和小于第一空闲资源块的长度,表征第一空闲资源块在分离出预设空间长度的空闲资源块之后,剩余的空闲资源块大于预设空间长度,此时,将第一空闲资源块从尾部截取预设空间长度的空闲资源块并分配给第一数据进行数据的存储。

进一步地,当第一空间长度大于等于预设空间长度时,比较第一空间长度与预设空间长度之和是否大于第一空闲资源块的长度,如果第一空间长度与预设空间长度与预设空间长度之和大于等于第一空闲资源块的长度,表征第一空闲资源块在分离出第一空间长度的空闲资源块之后,剩余的空闲资源块小于预设空间长度,此时,将整个第一空闲资源块全部分配给第一数据进行数据的存储;如果第一空间长度与预设空间长度与预设空间长度之和小于第一空闲资源块的长度,表征第一空闲资源块在分离出第一空间长度的空闲资源块之后,剩余的空闲资源块大于预设空间长度,此时,将第一空闲资源块从尾部截取第一空间长度的空闲资源块并分配给第一数据进行数据的存储。

本发明实施例中,已分配的资源块的数据结构如图4所示,由LEN和Addr两个部分组成,其中,LEN用来指出分配空间的实际长度,LEN的值为Next Addr和Space的值之和、Addr用来记录已分配资源块的起始地址。

本发明实施例中,第一空闲资源块从尾部截取指定空间长度的空闲资源块,如图5所示,空闲资源块在分配前由LEN1、Next Addr和Space三个部分组成,当需要从该空闲资源块中分配长度为64K资源时,从Space尾部截取64K作为分配的资源,在分配的资源前再分配2个字节存储该资源的LEN2和Addr,此时空闲资源块的LEN1值更改为LEN1’,其中,LEN1’的值为LEN1的值与64k之差。

示例性的,如图6所示,存储器中有L1、L2、L3三块空闲资源块,以链表的形式进行存储,当存储器将L2空闲资源块全部分配给第一数据进行存储操作时,L2空闲资源块中的Next Addr的值更改为L3空闲资源块中的Next Addr的值,L1空闲资源块中的Next Addr的值更改为L2空闲资源块中的Next Addr的值,将L2空闲资源块分配给第一数据。

示例性的,如图7所示,存储器中有L1、L2两块空闲资源块,以链表的形式进行存储,当存储器将L2空闲资源块中的部分空闲资源块分配给第一数据进行存储操作时,L2空闲资源块从尾部截取根据第一数据确定的指定空闲资源块L3,在L3资源块前添加表征L3资源块的长度和地址的L3和Addr字段,此时,L2空闲资源块中表征可分配长度的L2值更改为L2’,其中,L2’的值为L2值与L3值之差。

可以理解的是,在对空闲资源块分配给第一数据时,保证分配出去的第一空闲资源块和剩余的空闲资源块不小于存储器预设的最小值,这样,能够减少在资源分配时,产生较小的空间资源块,导致不能继续进行之后的资源分配,能够减少空间碎片,降低资源浪费。

实施例二

如图8所示,基于实施例一,本发明实施例还提供一种资源回收方法,在步骤S104之后,具体步骤包括:

S201、在传输完成所述第一数据时,释放第一数据,并获取释放完第一数据的存储资源块,存储资源块包括第一地址信息。

本发明实施例提供的一种资源处理方法适用于对已分配的资源块回收至存储器的场景下。

本发明实施例中,终端对第一数据传输完成时,终端就要将存储第一数据相关信息的存储资源块进行释放,此时,存储器获取到该存储资源块,并将该存储资源块回收至空闲资源块链表的指定地址处。

本发明实施例中,已分配的资源块的数据结构如图4所示,由LEN和Addr两个部分组成,其中,LEN用来指出分配空间的实际长度,LEN的值为Next Addr和Space的值之和、Addr用来记录已分配资源块的起始地址。

S202、根据第一地址信息和预设判定条件,遍历空闲资源块,确定与存储资源块相邻的第四空闲资源块。

当存储器将存储资源块回收至空闲资源块链表中之后,存储器就要在空闲资源块链表中寻找与存储资源块相邻的空闲资源块,来判定是否可以将存储资源块与相邻的空闲资源块进行合并了。

本发明实施例中,存储资源块包括Addr字段表示的第一地址信息和LEN字段表示的第三空间长度。

本发明实施例中,存储器读取存储资源块的LEN字段和Addr字段,然后依次读取空闲资源块链表中的Next Addr字段,当空闲资源块链表中第五空闲资源块的Next Addr大于Addr的值,且第五空闲资源块的Next Addr与Addr的值之差最小时,确定第五空闲资源块为与存储资源块右相邻的空闲资源块;当空闲资源块链表中的第六空闲资源块的Next Addr小于Addr的值,且第六空闲资源块的Next Addr与Addr的值之差最小时,确定第六空闲资源块为与存储资源块左相邻的空闲资源块。

本发明实施例中,存储资源块插入存储器的空闲块链表之后,存储资源块的Next Addr字段值的为第六空闲资源块的Next Addr字段的值,第六空闲资源块的Next Addr字段的值为存储资源块的Addr字段的值。

本发明实施例中,当存储器遍历到最后一块空闲资源块没有找到大于Addr的空闲资源块时,表征存储资源块为空闲资源块链表中的最后一块空闲资源块,此时,存储资源块的Next Addr的值为Null,最后一块空闲资源块的Next Addr的值为存储资源块的Addr的值。

示例性的,如图9所示,空闲资源块链表中有L1和L3两个空闲资源块,现在要将L2资源块回收至L1和L3之间的地址,回收之后,L2资源块的Next Addr的值为L1空闲资源块的Next Addr的值,L1空闲资源块的Next Addr的值更改为L2资源块的Addr的值。

S203、根据第一地址信息和第二地址信息对存储资源块与第四空闲资源块进行判定,第四空闲资源块为空闲资源块中与存储资源块相邻的空闲资源块,第二地址信息为第四空闲资源块的地址信息。

当存储资源块在空闲资源块链表中找到与其相邻的空闲资源块时,就要判断该存储资源块是否与其相邻的空闲资源块连续了。

本发明实施例中,存储器分别确定与存储资源块右相邻的第五空闲资源块,和与存储资源块左相邻的第六空闲资源块之后,分别获取存储资源块的Addr字段和LEN字段的值、第五空闲资源块和第六空闲资源块的Next Addr字段和LEN字段的值。

本发明实施例中,存储器通过比较存储资源块的Addr字段和LEN字段值之和与第六空闲资源块的Next Addr的值来判定存储资源块与第五空闲资源块是否连续;存储器通过比较存储资源块的Addr字段与指向第六空闲资源块地址的Next Addr的值和第六空闲资源块LEN字段的值来判定存储资源块与第六空闲资源块是否连续。

S204、当判定第四空闲资源块与存储资源块连续时,将第四空闲资源块与存储资源块合并成新的第四空闲资源块。

存储器对第一地址信息和第二地址信息进行比较,并根据比较结果判定是否将存储资源块和第四空闲资源块合并成为新的第四空闲资源块。

本发明实施例中,当存储资源块的Addr字段和LEN字段值之和与第六空闲资源块的Next Addr的值连续时,表征第五空闲资源块与存储资源块连续,此时,将存储资源块的LEN字段的值更改为存储资源块的LEN值与第五空闲资源块的LEN值之和,存储资源块的Next Addr字段的值更改为第五空闲资源块的Next Addr值,而第六空闲资源块的Next Addr字段的值更改为存储资源块的Addr值;当存储资源块的Addr字段和LEN字段值之和与第六空闲资源块的Next Addr的值不连续时,表征第五空闲资源块与存储资源块不连续,此时,将存储资源块的Addr字段的值作为新的第六空闲资源块的Next Addr字段的值,将第六空闲资源块的Next Addr字段的值作为存储资源块的Next Addr的值。

示例性的,如图10所示,空闲资源块链表中有L1、L3两块空闲资源块和L2存储资源块,其中L2在L1和L3之间且L2和L3连续,此时,将L2和L3合并成L2’,合并后的空闲资源块L2’可分配空间的长度为L2+L3,L2’的Next Addr的值为L3的Next Addr值,LI空闲资源块的Next Addr的值为L2的Addr值。

本发明实施例中,当存储资源块的Addr字段与指向第六空闲资源块的Next Addr的值和第六空闲资源块的LEN字段值之和连续时,表征第六空闲资源块与存储资源块连续,此时,将第六空闲资源块的LEN字段的值更改为存储资源块的LEN值与第六空闲资源块的LEN值之和;当存储资源块的Addr字段与指向第六空闲资源块的Next Addr的值和第六空闲资源块的LEN字段值之和不连续式时,表征第六空闲资源块与存储资源块不连续,此时,将存储资源块的Addr字段的值作为新的第六空闲资源块的Next Addr字段的值,将第六空闲资源块的Next Addr字段的值作为存储资源块的Next Addr的值。

示例性的,如图11所示,空闲资源块链表中有L1、L2两块空闲资源块和L存储资源块,其中L在L2之后且L2和L连续,此时,将L2和L合并成L2’,合并后的空闲资源块L2’可分配空间的长度为L2+L。

可以理解的是,在对已分配的资源块回收至空闲资源块链表时,将与该以分配的资源块相邻的空闲资源块合并成一个新的空闲资源块,能够减少空间碎片,降低资源浪费。

需要说明的是,本发明实施例提供的一种适用于对已分配的资源块回收至存储器的资源处理方法也可以单独使用。

实施例三

本发明实施例提供一种资源处理方法,如图12所示,该方法可以包括:

S301、在终端传输第一数据时,存储器获取第一数据的第一空间长度。

本发明实施例提供的一种资源处理方法适用于对存储器中的空闲资源进行分配操作的场景下。

本发明实施例中,当终端进行第一数据的传输时,终端操作系统需要调用存储器中的空闲资源来存储第一数据,此时,存储器获取到第一数据所需要占用的第一空间长度。

本发明实施例中,存储器中的空闲资源块是以空闲块链表的形式进行存储的,如图3所示,每一个空闲资源块由3个部分组成,分别是LEN、Next Addr和Space,其中,LEN表示的是该空闲资源块可用空间的长度,LEN的值为Next Addr和Space的值之和、Next Addr表示的是下一块空闲资源块的起始地址,且当该空闲资源块为最后一块空闲资源块时,该值为NULL、Space表示的是该空闲资源块实际可以分配的长度。

本发明实施例中,LEN和Next Addr所占用的长度可以根据存储器大小来设定。

示例性的,设定LEN和Next Addr所占用的长度和为2个字节时,可以管理64K大小的空闲资源块;设定LEN和Next Addr所占用的长度和为4个字节时,可以管理4G大小的空闲资源块。

S302、存储器将第一空间长度与预设空间长度进行对比。

当存储器获取到第一数据的第一空间长度之后,就要判定该第一空间长度是否小于存储器设定的最小长度了。

本发明实施例中存储器中设定有预设空间长度,当存储器获取到终端需要占用第一空间时,存储器将第一空间长度与预设空间长度进行对比,判断第一空间长度是否大于等于预设空间长度。

S303、当第一空间长度小于预设空间长度时,存储器从起始空闲资源块开始遍历空闲资源块。

当第一空间长度小于预设空间长度时,表征终端向存储器申请的空间长度没有达到存储器的最低申请标准,此时,存储器会分配给终端预设空间长度,预设空间长度为存储器分配空间长度的最低标准。

本发明实施例中,当终端申请的第一空间长度小于存储器设定的最低标准时,存储器按照分配空间长度的最低标准预设空间长度来遍历空闲资源块链表,从中确定合适的待分配空闲资源块。

S304、存储器将预设空间长度与当前空闲资源块的第二空间长度进行比较,当前空闲资源块为空闲资源块中的一个空闲资源块。

存储器根据预设空间长度与空闲资源块链表中各个空闲资源块的第二空间长度来确定待分配的第一空闲资源块。

本发明实施例中,存储器将预设空间块长度依次与空闲资源块链表中的当前空闲资源块的第二空间长度进行比较,从而确定合适的待分配空闲资源块。

S305、存储器确定第二空间长度大于预设空间长度的当前空闲资源块为第一空闲资源块。

当第二空间长度大于预设空间长度时,存储器将第二空间长度对应的当前空闲资源块作为第一空闲资源块,以供存储器向终端分配存储空间。

本发明实施例中,当第二空间长度大于预设空间长度时,表征第二空间长度对应的当前空闲资源块满足待分配空闲资源块的要求,此时,将满足待分配空闲资源块的当前空闲资源块确定为第一空闲资源块,以供存储器从第一空闲资源块中分配存储空间。

可以理解的是,将第一空间长度与存储器设置的预设空间长度进行比较,避免申请存储器分配的空间长度小于存储器设置的预设空间长度,可以有效的避免空间碎片的生成。

S306、当存储器遍历到终止空闲资源块都没有确定第一空闲资源块时,结束将预设空间长度与当前空闲资源块的第二空间长度进行比较的流程并返回确定失败指令。

当存储器遍历到终止空闲资源块都没有确定第一空闲资源块时,说明该空闲资源块链表中没有大于预设空间长度的空闲资源块,不能进行分配存储空间至终端的流程,此时需要结束该流程并返回确定失败指令。

本发明实施例中,存储器从空闲资源块链表的起始空闲资源块的空间长度开始依次与预设空间长度进行比较,当直到空闲资源块链表的终止空闲资源块的空间长度小于与预设空间长度时,表征该空闲资源块链表中没有大于预设空间长度的空闲资源块,此时结束将预设空间长度与当前空闲资源块的第二空间长度进行比较的流程并返回确定失败指令。

S307、当两个预设空间长度之和,大于第一空闲资源块的长度时,存储器确定第一空闲资源块为第一数据的存储资源块。

当存储器确定了待分配的第一空闲资源块时,就要将第一空闲资源块按照存储器确定的分配空间长度进行分离,并将分离后的待分配空间资源块分配给第一数据存储资源了。

本发明实施例中,存储器需要判断除预设空间长度外第一空闲资源块的剩余长度是否大于预设空间长度。

本发明实施例中,当两个预设空间长度之和大于第一空闲资源块的长度时,表征除预设空间长度外第一空闲资源块的剩余长度小于预设空间长度,此时,存储器将整个第一空闲资源块分配给第一数据进行资源存储。

示例性的,如图6所示,存储器中有L1、L2、L3三块空闲资源块,以链表的形式进行存储,当存储器将L2空闲资源块全部分配给第一数据进行存储操作时,L2空闲资源块中的Next Addr的值更改为L3空闲资源块中的Next Addr的值,L1空闲资源块中的Next Addr的值更改为L2空闲资源块中的Next Addr的值,将L2空闲资源块分配给第一数据。

S308、当两个预设空间长度之和,小于等于第一空闲资源块的长度时,存储器从第一空闲资源块中确定长度为预设空间长度的待分配资源块,待分配资源块为第一数据的存储资源块。

当存储器确定了待分配的第一空闲资源块时,就要将第一空闲资源块按照存储器确定的分配空间长度进行分离,并将分离后的待分配空间资源块分配给第一数据存储资源了。

本发明实施例中,当两个预设空间长度之和小于第一空闲资源块的长度时,表征除预设空间长度外第一空闲资源块的剩余长度大于预设空间长度,此时,存储器将第一空闲资源块从尾部截取预设空间长度的空闲资源块并分配给第一数据进行数据的存储。

本发明实施例中,已分配的资源块的数据结构如图4所示,由LEN和Addr两个部分组成,其中,LEN用来指出分配空间的实际长度,LEN的值为Next Addr和Space的值之和、Addr用来记录已分配资源块的起始地址。

本发明实施例中,第一空闲资源块从尾部截取指定空间长度的空闲资源块,如图5所示,空闲资源块在分配前由LEN1、Next Addr和Space三个部分组成,当需要从该空闲资源块中分配长度为64K资源时,从Space尾部截取64K作为分配的资源,在分配的资源前再分配2个字节存储该资源的LEN2和Addr,此时空闲资源块的LEN1值更改为LEN1’,其中,LEN1’的值为LEN1的值与64k之差。

示例性的,如图7所示,存储器中有L1、L2两块空闲资源块,以链表的形式进行存储,当存储器将L2空闲资源块中的部分空闲资源块分配给第一数据进行存储操作时,L2空闲资源块从尾部截取根据第一数据确定的指定空闲资源块L3,在L3资源块前添加表征L3资源块的长度和地址的L3和Addr字段,此时,L2空闲资源块中表征可分配长度的L2值更改为L2’,其中,L2’的值为L2值与L3值之差。

需要说明的是,S307和S308为并列的两个步骤,具体的根据两个预设长度之和与第一空闲资源块的空间长度的比较结果来执行相应的步骤,本发明实施例不做具体限定。

S309、当第一空间长度大于等于预设空间长度时,存储器按照第一空间长度遍历空闲资源块,确定第一空闲资源块,第一空闲资源块大于等于第一空间长度。

当第一空间长度大于预设空间长度时,表征终端向存储器申请的空间长度达到了存储器的最低申请标准,此时,存储器会分配给终端第一空间长度,预设空间长度为存储器分配空间长度的最低标准。

本发明实施例中,当终端申请的第一空间长度大于存储器设定的最低标准时,存储器按照第一空间长度来遍历空闲资源块链表,依次将第一空间长度与空闲资源块链表中的第二空间长度进行比较,当第二空间长度大于第一空间长度时,将第二空间长度对应的当前空闲资源块确定为第一空闲资源块,以供存储器从第一空闲资源块中分配存储空间至终端。

需要说明的是,S303和S309为S302之后的两个并列的步骤,具体的根据判定条件执行,本发明实施例不做具体限定。

S310、当第一空间长度与预设空间长度之和,大于第一空闲资源块的长度时,存储器确定第一空闲资源块为第一数据的存储资源块。

当存储器确定了待分配的第一空闲资源块时,就要将第一空闲资源块按照存储器确定的分配空间长度进行分离,并将分离后的待分配空间资源块分配给第一数据存储资源了。

本发明实施例中,存储器需要判断除第一空间长度外第一空闲资源块的剩余长度是否大于预设空间长度。

本发明实施例中,当预设空间长度与第一空间长度之和大于第一空闲资源块的长度时,表征除第一空间长度外第一空闲资源块的剩余长度小于预设空间长度,此时,存储器将整个第一空闲资源块分配给第一数据进行资源存储。

S311、当第一空间长度与预设空间长度之和,小于等于第一空闲资源块的长度时,存储器从第一空闲资源块中确定长度为预设空间长度的待分配资源块,待分配资源块为第一数据的存储资源块。

当存储器确定了待分配的第一空闲资源块时,就要将第一空闲资源块按照存储器确定的分配空间长度进行分离,并将分离后的待分配空间资源块分配给第一数据存储资源了。

本发明实施例中,当预设空间长度与第一空间长度之和小于第一空闲资源块的长度时,表征除第一空间长度外第一空闲资源块的剩余长度大于预设空间长度,此时,存储器将第一空闲资源块从尾部截取第一空间长度的空闲资源块并分配给第一数据进行数据的存储。

本发明实施例中,存储器从所述第一空闲资源块的终止地址开始,读取长度为第一空间长度的第二空闲资源块,该第二空闲资源块属于第一空闲资源块,并将第二空闲资源块确定为待分配资源块。

需要说明的是,S310和S311为两个并列的步骤,具体的根据预设长度与第一空间长度之和与第二空间长度的比较结果来执行相应的步骤,本发明实施例不做具体限定。

可以理解的是,在对空闲资源块分配给第一数据时,保证分配出去的第一空闲资源块和剩余的空闲资源块不小于存储器预设的最小值,这样,能够减少在资源分配时,产生较小的空间资源块,导致不能继续进行之后的资源分配,能够减少空间碎片,降低资源浪费。

实施例四

基于实施例三,如图13所示,本发明实施例提供还提供一种资源回收方法,在步骤S309之后,具体步骤包括:

S401、在终端传输完成第一数据时,存储器释放第一数据,并获取释放完第一数据的存储资源块,存储资源块包括第一地址信息。

本发明实施例提供的一种资源处理方法适用于对已分配的资源块回收至存储器的场景下。

本发明实施例中,终端对第一数据传输完成时,终端就要将存储第一数据相关信息的存储资源块进行释放,此时,存储器获取到该存储资源块,并将该存储资源块回收至空闲资源块链表的指定地址处。

本发明实施例中,已分配的资源块的数据结构如图4所示,由LEN和Addr两个部分组成,其中,LEN用来指出分配空间的实际长度,LEN的值为Next Addr和Space的值之和、Addr用来记录已分配资源块的起始地址。

S402、存储器从起始空闲资源块开始遍历空闲资源块。

存储器在获取到存储资源块的第一地址信息之后,就要在空闲资源块链表中确定与存储资源块相邻的空闲资源块了。

本发明实施例中,存储器从空闲资源块链表的起始空闲资源块开始寻找与存储资源块相邻的空闲资源块。

S403、存储器将第一地址信息与当前空闲资源块的第二地址信息进行比较。

存储器通过比较第一地址信息与空闲资源块链表中的当前空闲资源块的第二地址信息来确定与存储资源块相邻的空闲资源块。

本发明实施例中,存储资源块包括Addr字段表示的第一地址信息和LEN字段表示的第三空间长度。

本发明实施例中,存储器读取存储资源块的LEN字段和Addr字段,然后依次与空闲资源块链表中的Next Addr字段进行比较。

S404、当存储器确定第二地址信息大于第一地址信息,且第二地址信息与第一地址信息之差最小时,将当前空闲资源块确定为第五空闲资源块,第五空闲资源块为与存储资源块右相邻的第四空闲资源块,第四空闲资源块为空闲资源块中与存储资源块相邻的空闲资源块。

存储器根据第一地址信息与第二地址信息之间的关系确定与存储资源块右相邻的第五空闲资源块。

本发明实施例中,当第五空闲资源块的Next Addr的值大于Addr的值,且第五空闲资源块的Next Addr与Addr的值之差最小时,确定第五空闲资源块为与存储资源块右相邻的空闲资源块。

S405、当存储器确定第二地址信息小于第一地址信息,且第二地址信息与第一地址信息之差最小时,将当前空闲资源块确定为第六空闲资源块,第六空闲资源块为与存储资源块左相邻的第四空闲资源块。

存储器根据第一地址信息与第二地址信息之间的关系确定与存储资源块右相邻的第五空闲资源块。

本发明实施例中,当空闲资源块链表中的第六空闲资源块的Next Addr小于Addr的值,且第六空闲资源块的Next Addr与Addr的值之差最小时,确定第六空闲资源块为与存储资源块左相邻的空闲资源块。

本发明实施例中,存储资源块插入存储器的空闲块链表之后,存储资源块的Next Addr字段值的为第六空闲资源块的Next Addr字段的值,第六空闲资源块的Next Addr字段的值为存储资源块的Addr字段的值。

示例性的,如图9所示,空闲资源块链表中有L1和L3两个空闲资源块,现在要将L2资源块回收至L1和L3之间的地址,回收之后,L2资源块的Next Addr的值为L1空闲资源块的Next Addr的值,L1空闲资源块的Next Addr的值更改为L2资源块的Addr的值。

需要说明的是,S404和S405为S403之后的两个并列的步骤,具体的根据判定条件执行相应的步骤,本发明实施例不做具体以限定。

S406、当当前空闲资源块为终止空闲资源块,且第二地址信息小于第一地址信息时,存储器结束遍历空闲资源块的流程。

当对空闲资源块链表的终止空闲资源块比较,且没有找到大于第一地址信息的第二地址信息时,存储器遍历完成空闲资源块链表。

本发明实施例中,当存储器遍历到最后一块空闲资源块没有找到大于Addr的空闲资源块时,表征存储资源块为空闲资源块链表中的最后一块空闲资源块,此时,存储资源块的Next Addr的值为Null,最后一块空闲资源块的Next Addr的值为存储资源块的Addr的值。

S407、存储器根据第一地址信息和第二地址信息对存储资源块与第四空闲资源块进行判定,第二地址信息为第四空闲资源块的地址信息。

存储器对第一地址信息和第二地址信息进行比较,判定存储资源块与第五空闲资源块和第六空闲资源块是否连续。

本发明实施例中,存储器通过判断存储资源块的Addr字段和LEN字段值之和与第六空闲资源块的Next Addr的值来判断存储资源块与第五空闲资源块是否连续,存储器通过判断存储资源块的Addr字段与指向第六空闲资源块的Next Addr的值和第六空闲资源块的LEN字段值之和来判断存储资源块与第六空闲资源块是否连续。

S408、当存储器判定第四空闲资源块与存储资源块连续时,将第四空闲资源块与存储资源块合并成新的第四空闲资源块。

存储器对第一地址信息和第二地址信息进行比较,并根据比较结果判定是否将存储资源块和第四空闲资源块合并成为新的第四空闲资源块。

本发明实施例中,当存储资源块与第五空闲资源块连续时,将第五空闲资源块的空间长度与第三空间长度合并为新的第五空闲资源块的空间长度,将第一地址信息作为第一指针指向的下一个空闲资源块的地址信息,将第二指针指向的下一个空闲资源块的地址信息作为新的第三指针指向的下一个空闲资源块的地址信息,第一指针指向的下一个空闲资源块的地址信息为第六空闲资源块对应的指针信息,第二指针指向的下一个空闲资源块的地址信息为存储资源块对应的指针信息,第三指针指向的下一个空闲资源块的地址信息为第五空闲资源块对应的指针信息。

本发明实施例中,当存储资源块与第六空闲资源块连续时,将第六空闲资源块的空间长度与第二空间长度合并为新的第六空闲资源块的空间长度。

本发明实施例中,当存储资源块的Addr字段和LEN字段值之和与第六空闲资源块的Next Addr的值连续时,表征第五空闲资源块与存储资源块连续,此时,将存储资源块的LEN字段的值更改为存储资源块的LEN值与第五空闲资源块的LEN值之和,存储资源块的Next Addr字段的值更改为第五空闲资源块的Next Addr值,而第六空闲资源块的Next Addr字段的值更改为存储资源块的Addr值;当存储资源块的Addr字段和LEN字段值之和与第六空闲资源块的Next Addr的值不连续时,表征第五空闲资源块与存储资源块不连续,此时,将存储资源块的Addr字段的值作为新的第六空闲资源块的Next Addr字段的值,将第六空闲资源块的Next Addr字段的值作为存储资源块的Next Addr的值。

示例性的,如图10所示,空闲资源块链表中有L1、L3两块空闲资源块和L2存储资源块,其中L2在L1和L3之间且L2和L3连续,此时,将L2和L3合并成L2’,合并后的空闲资源块L2’可分配空间的长度为L2+L3,L2’的Next Addr的值为L3的Next Addr值,LI空闲资源块的Next Addr的值为L2的Addr值。

本发明实施例中,当存储资源块的Addr字段与指向第六空闲资源块的Next Addr的值和第六空闲资源块的LEN字段值之和连续时,表征第六空闲资源块与存储资源块连续,此时,将第六空闲资源块的LEN字段的值更改为存储资源块的LEN值与第六空闲资源块的LEN值之和;当存储资源块的Addr字段与指向第六空闲资源块的Next Addr的值和第六空闲资源块的LEN字段值之和不连续式时,表征第六空闲资源块与存储资源块不连续,此时,将存储资源块的Addr字段的值作为新的第六空闲资源块的Next Addr字段的值,将第六空闲资源块的Next Addr字段的值作为存储资源块的Next Addr的值。

示例性的,如图11所示,空闲资源块链表中有L1、L2两块空闲资源块和L存储资源块,其中L在L2之后且L2和L连续,此时,将L2和L合并成L2’,合并后的空闲资源块L2’可分配空间的长度为L2+L。

进一步地,当存储器判定存储空闲资源块与第五空闲资源块和第六空闲资源块都不连续时,将第一地址信息作为第一指针指向的下一个空闲资源块的地址信息,将第一指针指向的下一个空闲资源块的地址信息作为第三指针指向的下一个空闲资源块的地址信息。

需要说明的是,本发明实施例提供的一种适用于对已分配的资源块回收至存储器的资源处理方法也可以单独使用。

可以理解的是,在存储器分配空闲资源时,设置一个最小值,使得分配的空闲资源长度和剩余的空闲资源长度不小于该最小值,避免了长度过小的碎片的产生,能够减少空间碎片,降低资源浪费。

实施例五

如图14所示,本发明实施例提供一种终端1,给终端1可以包括:

获取单元10,用于在传输第一数据时,获取所述第一数据的第一空间长度。

对比单元11,用于将所述第一空间长度与预设空间长度进行对比。

确定单元12,用于当所述第一空间长度小于所述预设空间长度时,按照所述预设空间长度遍历空闲资源块,确定第一空闲资源块,所述第一空闲资源块大于等于所述预设空间长度。

分配单元13,用于采用所述第一空闲资源块给所述第一数据分配存储资源。

可选的,所述确定单元12,还用于当所述第一空间长度大于等于所述预设空间长度时,按照所述第一空间长度遍历所述空闲资源块,确定所述第一空闲资源块,所述第一空闲资源块大于等于所述第一空间长度。

可选的,所述确定单元12,还用于当两个所述预设空间长度之和,大于所述第一空闲资源块的长度时,确定所述第一空闲资源块为所述第一数据的存储资源块;当两个所述预设空间长度之和,小于等于所述第一空闲资源块的长度时,从所述第一空闲资源块中确定长度为所述预设空间长度的待分配资源块,所述待分配资源块为所述第一数据的存储资源块。

可选的,所述确定单元12,还用于当所述第一空间长度与所述预设空间长度之和,大于所述第一空闲资源块的长度时,确定所述第一空闲资源块为所述第一数据的存储资源块;当所述第一空间长度与所述预设空间长度之和,小于等于所述第一空闲资源块的长度时,从所述第一空闲资源块中确定长度为所述第一空间长度的待分配资源块,所述待分配资源块为所述第一数据的存储资源块。

可选的,基于图14如图15所示,该终端1还包括:读取单元14。

所述读取单元14,用于在所述第一空闲资源块中,从所述第一空闲资源块的终止地址开始,读取长度为所述预设空间长度的第二空闲资源块,所述第二空闲资源块属于所述第一空闲资源块。

所述确定单元12,还用于将所述第二空闲资源块确定为所述待分配资源块。

可选的,所述读取单元14,还用于在所述第一空闲资源块中,从所述第一空闲资源块的终止地址开始,读取长度为所述第一空间长度的第三空闲资源块,所述第三空闲资源块属于所述第一空闲资源块。

所述确定单元12,还用于将所述第三空闲资源块确定为所述待分配资源块。

可选的,基于图14如图16所示,该终端1还包括:遍历单元15和比较单元16。

所述遍历单元15,用于从起始空闲资源块开始遍历所述空闲资源块。

所述比较单元16,用于将所述预设空间长度与当前空闲资源块的第二空间长度进行比较,所述当前空闲资源块为所述空闲资源块中的一个空闲资源块。

所述确定单元12,具体用于直至确定所述第二空间长度大于所述预设空间长度的所述当前空闲资源块为所述第一空闲资源块。

可选的,基于图16如图17所示,该终端1还包括:结束单元17。

所述结束单元17,用于当遍历到终止空闲资源块都没有确定所述第一空闲资源块时,结束将所述预设空间长度与所述当前空闲资源块的所述第二空间长度进行比较的流程并返回确定失败指令。

可选的,基于图14如图18所示,该终端1还包括:判定单元18和合并单元19。

所述获取单元10,还用于在传输完成所述第一数据时,释放所述第一数据,并获取释放完所述第一数据的存储资源块,所述存储资源块包括第一地址信息。

所述确定单元12,还用于根据所述第一地址信息和预设判定条件,遍历所述空闲资源块,确定与所述存储资源块相邻的第四空闲资源块。

所述判定单元18,用于根据所述第一地址信息和第二地址信息对所述存储资源块与所述第四空闲资源块进行判定,所述第四空闲资源块为所述空闲资源块中与所述存储资源块相邻的空闲资源块,所述第二地址信息为所述第四空闲资源块的地址信息。

所述合并单元19,用于当判定所述第四空闲资源块与所述存储资源块连续时,将所述第四空闲资源块与所述存储资源块合并成新的所述第四空闲资源块。

可选的,所述遍历单元15,还用于从起始空闲资源块开始遍历所述空闲资源块。

所述比较单元16,还将所述第一地址信息与所述当前空闲资源块的第二地址信息进行比较。

所述确定单元12,还用于当确定所述第二地址信息大于所述第一地址信息,且所述第二地址信息与所述第一地址信息之差最小时,将当前空闲资源块确定为第五空闲资源块,所述第五空闲资源块为与所述存储资源块右相邻的所述第四空闲资源块;当确定所述第二地址信息小于所述第一地址信息,且所述第二地址信息与所述第一地址信息之差最小时,将当前空闲资源块确定为第六空闲资源块,所述第六空闲资源块为与所述存储资源块左相邻的所述第四空闲资源块。

可选的,所述结束单元17,用于当所述当前空闲资源块为终止空闲资源块,且所述第二地址信息小于所述第一地址信息时,结束遍历所述空闲资源块的流程。

可选的,所述合并单元19,具体用于当所述存储资源块与所述第五空闲资源块连续时,将所述第五空闲资源块的空间长度与所述第三空间长度合并为新的第五空闲资源块的空间长度,将所述第一地址信息作为第一指针指向的下一个空闲资源块的地址信息,将第二指针指向的下一个空闲资源块的地址信息作为新的第三指针指向的下一个空闲资源块的地址信息,所述第一指针指向的下一个空闲资源块的地址信息为所述第六空闲资源块对应的指针信息,所述第二指针指向的下一个空闲资源块的地址信息为所述存储资源块对应的指针信息,所述第三指针指向的下一个空闲资源块的地址信息为所述第五空闲资源块对应的指针信息;当所述存储资源块与所述第六空闲资源块连续时,将第六空闲资源块的空间长度与所述第二空间长度合并为新的第六空闲资源块的空间长度。

可选的,基于图18如图19所示,所述终端1还包括:更新单元110。

所述更新单元111,用于当判定所述存储空闲资源块与所述第五空闲资源块和所述第六空闲资源块都不连续时,将所述第一地址信息作为所述第一指针指向的下一个空闲资源块的地址信息,将所述第一指针指向的下一个空闲资源块的地址信息作为所述第三指针指向的下一个空闲资源块的地址信息。

如图20所示,在实际应用中,上述获取单元10、对比单元11、确定单元12、分配单元13、读取单元14、遍历单元15、比较单元16、结束单元17、判定单元18、合并单元19和更新单元110都可由位于服务器1上的处理器111实现,可以为中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)或现场可编程门阵列(FPGA)等实现,,该服务器还可以包括存储器112实现,该存储器112可以与处理器111连接,其中,存储器112用于存储可执行程序代码,该程序代码包括计算机操作指令,存储器112可能包含高速RAM存储器,也可能还包括非易失性存储器,例如,至少一个磁盘存储器。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

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