CN117687933A - 存储空间分配方法、装置、设备、存储介质及程序产品 - Google Patents
存储空间分配方法、装置、设备、存储介质及程序产品 Download PDFInfo
- Publication number
- CN117687933A CN117687933A CN202311765318.4A CN202311765318A CN117687933A CN 117687933 A CN117687933 A CN 117687933A CN 202311765318 A CN202311765318 A CN 202311765318A CN 117687933 A CN117687933 A CN 117687933A
- Authority
- CN
- China
- Prior art keywords
- allocation
- storage
- address
- storage space
- addresses
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 108
- 238000013507 mapping Methods 0.000 claims description 134
- 238000004590 computer program Methods 0.000 claims description 21
- 238000012545 processing Methods 0.000 claims description 10
- 238000006243 chemical reaction Methods 0.000 claims description 9
- 238000013519 translation Methods 0.000 claims description 5
- 230000000694 effects Effects 0.000 abstract description 8
- 238000007726 management method Methods 0.000 description 25
- 238000010586 diagram Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 8
- 235000019580 granularity Nutrition 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 238000013467 fragmentation Methods 0.000 description 4
- 238000006062 fragmentation reaction Methods 0.000 description 4
- 238000010926 purge Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000003672 processing method Methods 0.000 description 3
- 239000013589 supplement Substances 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 239000000047 product Substances 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种存储空间分配方法、装置、设备、存储介质及程序产品,其中,所述存储空间分配方法包括:在接收到第一对象发送的存储空间获取请求后,基于总存储空间的分配情况,确定针对所述存储空间获取请求的第一分配策略;所述第一分配策略为页式分配策略或段式分配策略;基于所述第一分配策略,为所述第一对象分配存储空间。如此,采用段页混合的方式进行存储管理,可以根据总存储空间的分配情况,实时调整分配策略,使分配策略在段式分配策略和页式分配策略之间进行切换,从而可以在保障硬件开销小、且寻址简单的基础上,提高存储空间的利用率,进而能够在特定情况下,达到空间利用率百分百的效果。
Description
技术领域
本申请涉及但不限于计算机技术领域,尤其涉及一种存储空间分配方法、装置、设备、存储介质及程序产品。
背景技术
段式存储管理的基本原理是,接收请求者发送的内存获取请求,根据内存获取请求中的内存大小,从存储器中确定出一段连续的、且与该内存大小匹配的内存空间,将这段内存空间分配给该请求者。但是,段式存储管理方法在多次分配与释放的过程中,会造成内存空间的碎片化,存在资源浪费的问题。
发明内容
有鉴于此,本申请实施例至少提供一种存储空间分配方法、装置、设备、存储介质及程序产品。
本申请实施例的技术方案是这样实现的:
一方面,本申请实施例提供一种存储空间分配方法,所述存储空间分配方法包括:在接收到第一对象发送的存储空间获取请求后,基于总存储空间的分配情况,确定针对所述存储空间获取请求的第一分配策略;所述第一分配策略为页式分配策略或段式分配策略;基于所述第一分配策略,为所述第一对象分配存储空间。
在一些实施例中,所述基于总存储空间的分配情况,确定针对所述存储空间获取请求的第一分配策略,包括:确定所述总存储空间中已被分配的存储地址的分配数量;所述分配数量表征所述总存储空间的分配情况;基于所述分配数量和预设的数量阈值,确定所述第一分配策略。
在一些实施例中,所述基于所述分配数量和预设的数量阈值,确定所述第一分配策略,包括:在所述分配数量小于所述数量阈值的情况下,将段式分配策略作为所述第一分配策略;在所述分配数量大于或等于所述数量阈值的情况下,将页式分配策略作为所述第一分配策略。
在一些实施例中,所述基于总存储空间的分配情况,确定针对所述存储空间获取请求的第一分配策略,包括:确定所述总存储空间中已被分配的存储地址的分配数量、和所述总存储空间中未被分配的存储地址的未分配数量;确定所述分配数量和所述未分配数量之间的比值,得到第一数值;所述第一数值表征所述总存储空间的分配情况;基于所述第一数值和预设的占比阈值,确定所述第一分配策略。
在一些实施例中,所述基于所述第一数值和预设的占比阈值,确定所述第一分配策略,包括:在所述第一数值小于所述占比阈值的情况下,将段式分配策略作为所述第一分配策略;在所述第一数值大于或等于所述占比阈值的情况下,将页式分配策略作为所述第一分配策略。
在一些实施例中,所述存储空间获取请求中包括所述第一对象所需的存储地址的第一数量;所述基于所述第一分配策略,为所述第一对象分配存储空间,包括:基于所述第一分配策略,从所述总存储空间中确定第一数量个第一存储地址;将所述第一数量个第一存储地址分配给所述第一对象。
在一些实施例中,所述总存储空间中包括至少一个物理地址;所述基于所述第一分配策略,从所述总存储空间中确定第一数量个第一存储地址,包括:在所述第一分配策略为段式分配策略的情况下,从所述至少一个物理地址中确定连续的第一数量个第一物理地址;将所述第一数量个第一物理地址作为所述第一数量个第一存储地址。
在一些实施例中,所述从所述至少一个物理地址中确定连续的第一数量个第一物理地址,包括:基于所述至少一个物理地址对应的分配标识,从所述至少一个物理地址中确定未分配的至少一个第二物理地址;在所述至少一个第二物理地址中存在连续的第一数量个第二物理地址的情况下,将所述连续的第一数量个第二物理地址作为所述第一数量个第一物理地址。
在一些实施例中,所述存储空间分配方法还包括:在所述至少一个第二物理地址中不存在连续的第一数量个第二物理地址的情况下,检测针对存储地址的释放操作;在检测到所述释放操作的情况下,重新执行所述从所述至少一个物理地址中确定连续的第一数量个第一物理地址的步骤。
在一些实施例中,所述总存储空间包括至少一个物理地址;所述基于所述第一分配策略,从所述总存储空间中确定第一数量个第一存储地址,包括:在所述第一分配策略为页式分配策略的情况下,从所述至少一个物理地址中确定第一数量个第三物理地址;对所述第一数量个第三物理地址进行地址转换,得到连续的第一数量个逻辑地址;将所述第一数量个逻辑地址作为所述第一数量个第一存储地址。
在一些实施例中,所述从所述至少一个物理地址中确定第一数量个第三物理地址,包括:确定所述总存储空间中已被分配的存储地址的分配数量、和所述总存储空间中包括的存储地址的第二数量;在所述分配数量与所述第一数量之和小于或等于所述第二数量的情况下,从所述至少一个物理地址中确定所述第一数量个第三物理地址。
在一些实施例中,所述从所述至少一个物理地址中确定所述第一数量个第三物理地址,包括:基于所述至少一个物理地址对应的分配标识,从所述至少一个物理地址中确定未分配的至少一个第四物理地址;从所述至少一个第四物理地址中,确定所述第一数量个第三物理地址。
在一些实施例中,所述对所述第一数量个第三物理地址进行地址转换,得到连续的第一数量个逻辑地址,包括:按照偏移确定方法,确定所述第一数量个第三物理地址的逻辑偏移;所述逻辑偏移具有连续性;基于所述第一对象的标识,建立所述逻辑偏移和所述第一数量个第三物理地址之间的关联关系;以所述关联关系中的所述第一对象的标识和所述逻辑偏移,表示所述连续的第一数量个逻辑地址。
在一些实施例中,所述基于所述第一对象的标识,建立所述逻辑偏移和所述第一数量个第三物理地址之间的关联关系,包括:基于映射条目的标识,确定地址映射表中未存储数据的第一数量个第一映射条目;基于所述第一对象的标识,将所述逻辑偏移和所述第一数量个第三物理地址对应存储至所述第一数量个第一映射条目。
在一些实施例中,所述基于所述第一对象的标识,将所述逻辑偏移和所述第一数量个第三物理地址对应存储至所述第一数量个第一映射条目之后,所述存储空间分配方法还包括:将所述第一数量个第一映射条目的标识从第一标识值更新为第二标识值;所述第一标识值表征对应的映射条目未被占用;所述第二标识值表征对应的映射条目已被占用。
在一些实施例中,所述将所述第一数量个第一存储地址分配给所述第一对象,包括:在所述第一数量个第一存储地址为所述第一数量个第一物理地址的情况下,确定所述第一数量个第一物理地址的基地址;基于所述基地址和所述段式分配策略,确定针对所述存储空间获取请求的第一回执消息;将所述第一回执消息发送给所述第一对象。
在一些实施例中,所述将所述第一数量个第一存储地址分配给所述第一对象,包括:在所述第一数量个第一存储地址为所述第一数量个逻辑地址的情况下,基于所述页式分配策略,确定针对所述存储空间获取请求的第二回执消息;将所述第二回执消息发送给所述第一对象。
在一些实施例中,所述将所述第一数量个第一存储地址分配给所述第一对象之后,所述存储空间分配方法还包括:将所述第一数量个第一存储地址对应的物理地址的分配标识从第三标识值更新为第四标识值;所述第三标识值表征对应的物理地址未分配,所述第四标识值表征对应的物理地址已分配;在所述总存储空间中已被分配的存储地址的分配数量上添加所述第一数量。
在一些实施例中,所述存储空间分配方法还包括:接收针对第二存储地址的释放请求;基于所述第二存储地址的分配策略,对所述第二存储地址进行释放操作。
在一些实施例中,所述基于所述第二存储地址的分配策略,对所述第二存储地址进行释放操作,包括:基于所述第二存储地址的第二分配策略,将所述第二存储地址对应的物理地址的分配标识更新为第三标识值;所述第三标识值表征对应的物理地址未分配;在所述总存储空间中已被分配的存储地址的分配数量上减去所述第二存储地址的数量。
在一些实施例中,所述基于所述第二存储地址的第二分配策略,将所述第二存储地址对应的物理地址的分配标识更新为第三标识值,包括:在所述第二分类策略为段式分配策略的情况下,确定所述第二存储地址对应的连续的至少一个第五物理地址;将所述至少一个第五物理地址的分配标识更新为所述第三标识值。
在一些实施例中,所述基于所述第二存储地址的第二分配策略,将所述第二存储地址对应的物理地址的分配标识更新为第三标识值,包括:在所述第二分配策略为页式分配策略的情况下,从地址映射表中确定所述第二存储地址对应的至少一个第二映射条目;从所述至少一个第二映射条目中,确定所述第二存储地址对应的至少一个第六物理地址;将所述至少一个第六物理地址的分配标识更新为所述第三标识值;清除所述至少一个第二映射条目中的数据,并将所述至少一个第二映射条目的标识更新为第一标识值;所述第一标识值表征对应的映射条目未被占用。
在一些实施例中,所述存储空间分配方法还包括:接收针对目标数据的操作请求;所述操作请求中包括所述目标数据对应的第三存储地址的第三分配策略;基于所述目标数据和所述第三分配策略,处理所述操作请求。
在一些实施例中,所述基于所述目标数据和所述第三分配策略,处理所述操作请求,包括:基于所述第三分配策略,确定所述第三存储地址对应的目标物理地址;在所述操作请求为读操作的情况下,将所述目标数据写入所述目标物理地址;在所述操作请求为写操作的情况下,从所述目标物理地址中读取所述目标数据。
在一些实施例中,所述基于所述第三分配策略,确定所述第三存储地址对应的目标物理地址,包括:在所述第三分配策略为段式分配策略的情况下,从所述操作请求中确定所述第三存储地址对应的基地址和所述第三存储地址的第三数量;所述基地址表征所述第三存储地址对应的初始物理地址;基于所述基地址和所述第三数量,确定所述目标物理地址。
在一些实施例中,所述基于所述第三分配策略,确定所述第三存储地址对应的目标物理地址,包括:在所述第三分配策略为页式分配策略的情况下,从所述操作请求中确定所述第三存储地址的第四数量和所述第三存储地址对应的对象的标识;基于所述第三存储地址对应的对象的标识和所述第四数量,从地址映射表中确定所述第三存储地址对应的所述第四数量个第三映射条目;将所述第四数量个第三映射条目中的物理地址作为所述目标物理地址。
另一方面,本申请实施例提供一种存储空间分配装置,所述存储空间分配装置包括:确定模块,用于在接收到第一对象发送的存储空间获取请求后,基于总存储空间的分配情况,确定针对所述存储空间获取请求的第一分配策略;所述第一分配策略为页式分配策略或段式分配策略;分配模块,用于基于所述第一分配策略,为所述第一对象分配存储空间。
再一方面,本申请实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的部分或全部步骤。
又一方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的部分或全部步骤。
又一方面,本申请实施例提供一种计算机程序,包括计算机可读代码,当所述计算机可读代码在计算机设备中运行时,所述计算机设备中的处理器执行用于实现上述方法中的部分或全部步骤。
又一方面,本申请实施例提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序被计算机读取并执行时,实现上述方法中的部分或全部步骤。
本申请实施例中,通过在接收到第一对象发送的存储空间获取请求后,基于总存储空间的分配情况,确定针对存储空间获取请求的第一分配策略;第一分配策略为页式分配策略或段式分配策略;基于第一分配策略,为第一对象分配存储空间。这样,采用段页混合的方式进行存储管理,可以根据总存储空间的分配情况,实时调整分配策略,使分配策略在段式分配策略和页式分配策略之间进行切换,从而可以在保障硬件开销小、且寻址简单的基础上,提高存储空间的利用率,进而能够在特定情况下,达到空间利用率百分百的效果。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本申请的技术方案。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本申请的实施例,并与说明书一起用于说明本申请的技术方案。
图1为段式存储管理的分配结果示意图;
图2为本申请实施例提供的一种存储空间分配方法的实现流程示意图一;
图3为本申请实施例提供的一种地址映射表的组成结构示意图;
图4为本申请实施例提供的一种存储空间分配方法的实现流程示意图二;
图5为本申请实施例提供的一种存储空间释放方法的实现流程示意图;
图6为本申请实施例提供的一种针对存储空间的目标数据的处理方法的实现流程示意图;
图7为本申请实施例提供的一种段页混合存储管理方法的实现流程示意图;
图8为本申请实施例提供的一种存储空间分配流程的实现示意图;
图9为本申请实施例提供的一种存储空间释放流程的实现示意图;
图10为本申请实施例提供的一种针对存储空间的数据的读写流程的实现示意图;
图11为本申请实施例提供的一种总存储空间的分配情况的示意图;
图12为本申请实施例提供的一种地址映射表更新后的组成结构示意图;
图13为本申请实施例提供的一种存储空间分配装置的组成结构示意图;
图14为本申请实施例提供的一种计算机设备的硬件实体示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图和实施例对本申请的技术方案进一步详细阐述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
所涉及的术语“第一/第二/第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一/第二/第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请的目的,不是旨在限制本申请。
为了更好地理解本申请实施例提供的存储空间分配方法,下面先对相关技术中的方案进行说明。
段式存储管理作为最普遍的存储管理方式之一,具有管理资源开销小,地址计算简单等优点,应用非常广泛。段式存储管理根据每次请求中的空间大小,从存储器中确定与该空间大小相同的、且地址连续的一段存储空间。实际应用过程中,线程的数量很多,且线程的种类也很多,所以存储空间在不断分配、释放的过程中,因线程对应的存储空间不同、存储空间的使用时长不同,会造成存储空间的碎片化;也就是说,在某一时刻,未被分配的存储空间和已分配的存储空间会交替出现,如果当前请求的空间大小比较大,且小于未被分配的总存储空间时,由于存储器被分割为较多碎片化的小存储空间(小存储空间小于当前请求的空间大小),那么此时存储管理器是无法分配出来的,造成存储空间利用率不高的结果,浪费了宝贵的存储器资源。段式存储管理除其硬件开销小、寻址简单的优点之外,还存在空间利用率较低的缺点。图1为段式存储管理的分配结果示意图。如图1所示,最高有效位(Most Significant Bit,MSB)是二进制中代表最高值的比特位,最低有效位(LeastSignificant Bit,LSB):是二进制中代表最低值的比特位。图1中示出的LSB=0与MSB=M-1之间为空间大小为M的存储空间,图1中示出的填充部分表示对应的存储空间已分配(occupied),无填充部分表示对应的存储空间未分配(ilde);从图1中可以看出,未分配的存储空间是多个碎片化的、且不连续的小存储空间;这种情况下,如果当前请求的空间大小(request size)小于未分配的总存储空间,但是由于未分配的存储空间比较碎片化,此时系统无法为当前请求分配存储空间。
页式存储管理,是将存储器的每个分配粒度作为一个存储单元来管理。当一个线程需要申请N个粒度时,存储管理器从现有的未被占用的存储单元中找到相等数量的存储单元,并把这些存储单元都标识成这个线程的存储空间,以供这个线程使用。页式存储管理具有空间利用率可以做到100%的优点,但具有硬件开销大,寻址相对复杂的缺点。
上述两种存储管理方式,单纯的使用任何一种,都需接受其各自的优缺点,无法同时保障空间利用率和硬件开销。
为此,本申请实施例提供一种存储空间分配方法,该方法可以由计算机设备的处理器执行。其中,计算机设备指的可以是服务器、笔记本电脑、平板电脑、台式计算机、智能电视、机顶盒、移动设备(例如移动电话、便携式视频播放器、个人数字助理、专用消息设备、便携式游戏设备)等具备数据处理能力的设备。图2为本申请实施例提供的一种存储空间分配方法的实现流程示意图一,如图2所示,该方法包括如下步骤S201至步骤S202:
步骤S201,在接收到第一对象发送的存储空间获取请求后,基于总存储空间的分配情况,确定针对所述存储空间获取请求的第一分配策略;所述第一分配策略为页式分配策略或段式分配策略。
这里,第一对象可以指的是需要存储空间的对象;第一对象可以称之为请求者(Requestor)。示例性地,第一对象可以为多个线程构成的task(任务)、也可以为需要存储空间的服务,本申请实施例对此不作限定。存储空间获取请求用于获取特定大小的存储空间;示例性地,存储空间获取请求可以为alloc请求,以向栈申请内存。在一种可行的实现方式中,存储空间获取请求中可以携带有所需的空间大小(req_size),以通过存储空间获取请求获取特定大小(req_size)的存储空间。总存储空间可以指的是计算机设备能够分配的存储空间。示例性地,总存储空间可以为存储设备(storage);storage可以指物理存储设备,也可以指数据存储器;例如,硬盘驱动器、固态硬盘、闪存驱动器等。
第一分配策略是为第一对象分配存储空间时采用的分配策略;第一分配策略是根据总存储空间的分配情况确定的。在一种可行的实现方式中,可以预先配置Alloc modedecision logic(分配模式决策逻辑);如此,在接收到第一对象的存储空间获取请求后,就可以通过分配模式决策逻辑,根据总存储空间的分配情况判定当前使用何种分配策略(页式分配策略还是段式分配策略);分配策略还可以称之为分配模式(alloc mode),页式分配策略可以为页式分配逻辑(Page allocation logic),段式分配策略可以为段式分配逻辑(Segment allocation logic)。
具体地,分配模式决策逻辑可以为在总存储空间的分配情况不满足预设条件时,确定当前使用的分配策略为段式分配策略(段式存储管理);在总存储空间的分配情况满足预设条件时,确定当前使用的分配策略为页式分配策略(页式存储管理)。
其中,预设条件可以表征总存储空间中存在较多碎片化的存储空间,也可以体现为总存储空间中已有大量的存储空间已被分配,也即,总存储空间中未被分配的存储空间较少。这种情况下,分配模式决策逻辑在总存储空间中不存在较多碎片化的存储空间的情况下,确定当前使用的分配策略为段式分配策略;在总存储空间中存在较多碎片化的存储空间的情况下,确定当前使用的分配策略为页式分配策略。如此,在总存储空间中不存在较多碎片化的存储空间的情况下,主要采用段式分配策略;在总存储空间中存在较多碎片化的存储空间的情况下,采用页式分配策略作为辅助方式进行补充。
在一种可行的实现方式中,在接收到第一对象发送的存储空间获取请求后,可以通过Alloc mode decision logic,确定针对存储空间获取请求的第一分配逻辑;具体地,在Alloc mode decision logic确定总存储空间中不存在较多碎片化的存储空间的情况下,将段式分配策略作为第一分配策略;在Alloc mode decision logic确定总存储空间中存在较多碎片化的存储空间的情况下,将页式分配策略作为第一分配策略。
步骤S202,基于所述第一分配策略,为所述第一对象分配存储空间。
在一种可行的实现方式中,在存储空间获取请求中携带有第一对象所需的空间大小(req_size)的情况下,可以基于第一分配策略为第一对象分配该req_size的存储空间。
本申请实施例中,基于总存储空间的分配情况,确定针对第一对象发送的存储空间获取请求的第一分配策略;第一分配策略为页式分配策略或段式分配策略;基于第一分配策略为第一对象分配存储空间。这样,采用段页混合的方式进行存储管理,可以根据总存储空间的分配情况,实时调整分配策略,使分配策略在段式分配策略和页式分配策略之间进行切换,从而可以在保障硬件开销小、且寻址简单的基础上,提高存储空间的利用率,进而能够在特定情况下,达到空间利用率百分百的效果。例如,当前已经分配了96个粒度,那么在当前请求者正好需要4个粒度的情况下,可以达到空间利用率100%的效果。
在一些实施例中,上述步骤S201中的“基于总存储空间的分配情况,确定针对所述存储空间获取请求的第一分配策略”可以通过如下步骤S2011至步骤S2012来实现:
步骤S2011,确定所述总存储空间中已被分配的存储地址的分配数量;所述分配数量表征所述总存储空间的分配情况。
这里,总存储空间中可以包括多个存储地址,每一存储地址代表一个存储单元的粒度。示例性地,存储单元的粒度可以预先设定,具体可以根据数据类型、数据量的大小、以及当前写的带宽等多种因素进行综合评估后确定。
需要说明的是,在分配时,实际分配的是物理地址,但是逻辑地址是物理地址的另一种表现形式,因此本申请中的存储地址可以泛指物理地址和逻辑地址。
在一种可行的实现方式中,Alloc mode decision logic(分配模式决策逻辑)中可以维护有occupied_count(占用_计数),occupied_count=分配数量;如此,就可以通过occupied_count实时确定总存储空间中已被分配的存储地址的分配数量。
步骤S2012,基于所述分配数量和预设的数量阈值,确定所述第一分配策略。
这里,数量阈值用于作为分配策略的判断依据,换句话说,数量阈值用于作为总存储空间中是否存在较多碎片化的存储空间的判断依据。在一种可行的实现方式中,可以根据典型场景下的系统功能和系统性能来确定数量阈值;具体地,可以根据系统要处理的业务、业务的并行量、资源需求量、存储空间利用率等因素来确定数量阈值。示例性地,在总存储空间中的存储空间的总数量为256的情况下,数量阈值可以设置为192。
在本申请实施例中,通过分配数量和数量阈值确定第一分配策略;这样,可以将总存储空间中是否存在较多碎片化的存储空间的情况以数值化的形式进行体现,从而可以更清晰明了地获知总存储空间的分配情况,进而能够实时调整分配策略,使分配策略在段式分配策略和页式分配策略之间进行切换。
在一种实施方式中,步骤S2012的具体实现方式可以为:在所述分配数量小于所述数量阈值的情况下,将段式分配策略作为所述第一分配策略;在所述分配数量大于或等于所述数量阈值的情况下,将页式分配策略作为所述第一分配策略。
这里,分配数量小于数量阈值,说明总存储空间中不存在较多碎片化的存储空间。分配数量大于或等于数量阈值,说明总存储空间中存在较多碎片化的存储空间。
在一种可行的实现方式中,在occupied_count(分配数量)小于数量阈值的情况下,将段式分配策略(Segment allocation logic)作为第一分配策略;在occupied_count大于或等于数量阈值的情况下,将页式分配策略(Page allocation logic)作为第一分配策略。
在本申请实施例中,在分配数量小于数量阈值时,将段式分配策略作为第一分配策略;在分配数量大于或等于数量阈值时,将页式分配策略作为第一分配策略。这样,前期分配数量小于数量阈值时采用段式分配策略,后期分配数量大于或等于数量阈值时采用页式分配策略作为补充,从而可以在保障硬件开销小、且寻址简单的基础上,提高存储空间的利用率,进而能够在特定情况下,达到空间利用率百分百的效果。
在其他实施例中,上述步骤S201中的“基于总存储空间的分配情况,确定针对所述存储空间获取请求的第一分配策略”还可以通过如下步骤S2013至步骤S2015来实现:
步骤S2013,确定所述总存储空间中已被分配的存储地址的分配数量、和所述总存储空间中未被分配的存储地址的未分配数量。
在一种可行的实现方式中,未分配数量=总存储空间中的存储地址的总数量-分配数量。
在另一种可行的实现方式中,Alloc mode decision logic(分配模式决策逻辑)中可以维护有occupied_count(占用_计数)和ilde_count(空闲_计数);如此,可以通过occupied_count实时确定总存储空间中已被分配的存储地址的分配数量,通过ilde_count实时确定总存储空间中未被分配的存储地址的未分配数量;occupied_count=分配数量,ilde_count=未分配数量。
步骤S2014,确定所述分配数量和所述未分配数量之间的比值,得到第一数值;所述第一数值表征所述总存储空间的分配情况。
这里,第一数值表征总存储空间中已被分配的存储地址的分配数量与总存储空间中未被分配的存储地址的未分配数量之间的比例关系。
步骤S2015,基于所述第一数值和预设的占比阈值,确定所述第一分配策略。
这里,占比阈值用于作为分配策略的判断依据。
在本申请实施例中,通过第一数值和占比阈值确定第一分配策略;这样,是将总存储空间中是否存在较多碎片化的存储空间的情况以另一种数值化(占比)的形式进行体现,从而可以更清晰明了地获知总存储空间的分配情况,进而能够实时调整分配策略,使分配策略在段式分配策略和页式分配策略之间进行切换。
在一种实施方式中,步骤S2015的具体实现方式可以为:在所述第一数值小于所述占比阈值的情况下,将段式分配策略作为所述第一分配策略;在所述第一数值大于或等于所述占比阈值的情况下,将页式分配策略作为所述第一分配策略。
这里,第一数值小于占比阈值,说明总存储空间中不存在较多碎片化的存储空间。第一数值大于或等于占比阈值,说明总存储空间中存在较多碎片化的存储空间。
在一种可行的实现方式中,在第一数值小于占比阈值的情况下,将段式分配策略(Segment allocation logic)作为第一分配策略;在第一数值大于或等于占比阈值的情况下,将页式分配策略(Page allocation logic)作为第一分配策略。
在本申请实施例中,在第一数值小于占比阈值时,将段式分配策略作为第一分配策略;在第一数值大于或等于占比阈值时,将页式分配策略作为第一分配策略。这样,前期第一数值小于占比阈值时采用段式分配策略,后期第一数值大于或等于占比阈值时采用页式分配策略作为补充,从而可以在保障硬件开销小、且寻址简单的基础上,提高存储空间的利用率,进而能够在特定情况下,达到空间利用率百分百的效果。
需要说明的是,总存储空间中是否存在较多碎片化的存储空间的情况还可以以其他形式进行体现;示例性地,可以以总存储空间中的存储地址的总数量与总存储空间中已被分配的存储地址的分配数量之间的比例关系来体现。又一示例性地,可以根据总存储空间中已被分配的存储地址的分配数量与总存储空间中未被分配的存储地址的未分配数量之间的比例关系、以及总存储空间中未被分配的存储地址的连续性来体现总存储空间中是否存在较多碎片化的存储空间的情况;如,总存储空间中未被分配的存储地址均不连续,则表征碎片化程度高;总存储空间中未被分配的存储地址存在少量连续,则表征碎片化程度低。
在一些实施例中,在存储空间获取请求中包括第一对象所需的存储地址的第一数量的情况下,上述步骤S202可以通过如下步骤S2021至步骤S2022来实现:
步骤S2021,基于所述第一分配策略,从所述总存储空间中确定第一数量个第一存储地址。
这里,第一数量指的是第一对象所需的存储地址的数量;示例性地,第一数量(req_size)=3。第一存储地址指的是根据第一对象的存储空间获取请求从总存储空间中确定出的存储地址。
在一种可行的实现方式中,在第一数量等于3的情况下,基于页式分配策略或段式分配策略,从总存储空间中确定3个第一存储地址。
步骤S2022,将所述第一数量个第一存储地址分配给所述第一对象。
在一种实施方式中,在第一数量个第一存储地址是采用段式分配策略分配的情况下,步骤S2022的具体实现方式可以为:在所述第一数量个第一存储地址为所述第一数量个第一物理地址的情况下,确定所述第一数量个第一物理地址的基地址;基于所述基地址和所述段式分配策略,确定针对所述存储空间获取请求的第一回执消息;将所述第一回执消息发送给所述第一对象。
这里,第一回执消息用于表征已分配完成。示例性地,第一回执消息可以为携带有基地址的done信号。在一种可行的实现方式中,在第一分配策略为段式分配策略(Segmentallocation logic)的情况下,可以将确定的基地址携带于done信号返回给第一对象。
在其他实施方式中,在第一数量个第一存储地址是采用页式分配策略分配的情况下,步骤S2022的具体实现方式还可以为:在所述第一数量个第一存储地址为所述第一数量个逻辑地址的情况下,基于所述页式分配策略,确定针对所述存储空间获取请求的第二回执消息;将所述第二回执消息发送给所述第一对象。
这里,第二回执消息用于表征已分配完成。第二回执消息可以为不携带基地址的done信号,仅是一个表征分配完成的信号。在一种可行的实现方式中,在第一分配策略为页式分配策略的情况下,可以返回done信号给第一对象。
需要说明的是,由于段式分配策略下会给第一对象返回携带有基地址的done信号,页式分配策略下会给第一对象返回不携带数据的done信号,因此,第一对象可以根据done信号是否携带数据来确定分配模式;如此,可以降低通信成本,提高通信速率。或者,在不考虑通信成本的情况下,done信号中可以直接携带有分配模式。
在本申请实施例中,存储空间获取请求中包括第一对象所需的存储地址的第一数量,如此,就可以基于第一分配策略从总存储空间中确定第一数量个第一存储地址,将第一数量个第一存储地址分配给第一对象,从而完成为第一对象分配存储空间。
在一些实施例中,步骤S2022之后,还可以执行步骤S2023至步骤S2024:
步骤S2023,将所述第一数量个第一存储地址对应的物理地址的分配标识从第三标识值更新为第四标识值;所述第三标识值表征对应的物理地址未分配,所述第四标识值表征对应的物理地址已分配。
这里,分配标识为第三标识值,表示对应的物理地址未被分配;分配标识为第四标识值,表示对应的物理地址已被分配。示例性地,第三标识值可以为0,第四标识值可以为1。
步骤S2024,在所述总存储空间中已被分配的存储地址的分配数量上添加所述第一数量。
在一种可行的实现方式中,将第一数量个第一存储地址分配给第一对象后,可以在occupied_count上添加第一数量,以保证occupied_count一直是最新的。
在本申请实施例中,将第一数量个第一存储地址对应的物理地址的分配标识从第三标识值更新为第四标识值;如此,可以防止物理地址重复分配给其他对象;在分配数量上添加第一数量,可以保证分配数量一直是最新的,便于实时根据分配数量确定总存储空间的分配情况,进而根据总存储空间的分配情况实时调整分配策略。
在一些实施例中,总存储空间中包括至少一个物理地址,如果第一分配策略为段式分配策略,那么上述步骤S2021可以通过如下步骤S2021a至步骤S2021b来实现:
步骤S2021a,在所述第一分配策略为段式分配策略的情况下,从所述至少一个物理地址中确定连续的第一数量个第一物理地址。
这里,第一数量个第一物理地址指的是从至少一个物理地址中连续的第一数量个物理地址。由于段式分配策略用于确定连续的存储空间,因此在第一分配策略为段式分配策略的情况下,可以从总存储空间中的至少一个物理地址中确定连续的第一数量个第一物理地址。
步骤S2021b,将所述第一数量个第一物理地址作为所述第一数量个第一存储地址。
这里,第一数量个第一物理地址是连续的,可以通过基(base)地址和第一数量进行表示,不需要进行映射,因此直接将第一数量个第一物理地址作为第一数量个第一存储地址。
在本申请实施例中,在第一分配策略为段式分配策略的情况下,可以从总存储空间中的至少一个物理地址中确定连续的第一数量个第一物理地址,直接将第一数量个第一物理地址作为第一数量个第一存储地址,以将第一数量个第一存储地址分配给第一对象,从而完成为第一对象分配存储空间。
在一些实施例中,上述步骤S2021a中的“从所述至少一个物理地址中确定连续的第一数量个第一物理地址”可以通过如下步骤A1至步骤A4来实现:
步骤A1,基于所述至少一个物理地址对应的分配标识,从所述至少一个物理地址中确定未分配的至少一个第二物理地址。
这里,总存储空间中的至少一个物理地址的分配标识可以为有效标志(validflag),可以采用对应位宽的寄存器进行表示;示例性地,如果总存储空间中包括256个物理地址,那么采用256bit位宽的寄存器表示256个物理地址的valid flag;其中,每一bit的数值表征对应的物理地址是否已分配,因而每一bit也可称之为对应的物理地址的分配标识。至少一个第二物理地址指的是总存储空间的至少一个物理地址中未分配的物理地址。
在一种可行的实现方式中,bit=0表征物理地址未被分配,bit=1表征物理地址已被分配;那么,可以从至少一个物理地址中,确定bit=0的物理地址,将bit=0的物理地址确定为至少一个第二物理地址。
需要说明的是,步骤A1之后,可以执行步骤A2或步骤A3至步骤A4。
步骤A2,在所述至少一个第二物理地址中存在连续的第一数量个第二物理地址的情况下,将所述连续的第一数量个第二物理地址作为所述第一数量个第一物理地址。
这里,至少一个第二物理地址中存在连续的第一数量个第二物理地址,说明,总存储空间中连续的且未分配的物理地址能够满足第一对象对存储空间的需求,也即,当前能够从总存储空间中分配出第一对象所需的存储空间。
在本申请实施例中,通过至少一个物理地址对应的分配标识,从至少一个物理地址中确定未分配的至少一个第二物理地址,再从至少一个第二物理地址中确定连续的第一数量个第二物理地址,将连续的第一数量个第二物理地址作为第一数量个第一物理地址。如此,可以保障最终确定的第一数量个第一物理地址是未被分配的、且是连续的,从而可以保障存储空间分配的有效性。
步骤A3,在所述至少一个第二物理地址中不存在连续的第一数量个第二物理地址的情况下,检测针对存储地址的释放操作。
这里,针对存储地址的释放操作是指,将分配出去的存储地址回收回来,也即,将存储地址从已分配状态切换至未分配状态。至少一个第二物理地址中不存在连续的第一数量个第二物理地址,说明,总存储空间中连续的且未分配的物理地址不能够满足第一对象对存储空间的需求,也即,当前无法从总存储空间中分配出第一对象所需的存储空间。
在一种可行的实现方式中,针对存储地址的释放操作可以为,有效标志(validflag)的清除事件。在至少一个第二物理地址中不存在连续的第一数量个第二物理地址的情况下,检测valid flag的清除事件。
步骤A4,在检测到所述释放操作的情况下,重新执行所述从所述至少一个物理地址中确定连续的第一数量个第一物理地址的步骤。
这里,重新执行所述从所述至少一个物理地址中确定连续的第一数量个第一物理地址的步骤,指的是,重新采用段式分配策略,为第一对象分配存储空间。
在一种可行的实现方式中,若检测到valid flag的清除事件,则重新执行步骤S2021a;否则继续在此步骤等待。
在本申请实施例中,在至少一个第二物理地址中不存在连续的第一数量个第二物理地址的情况下,检测valid flag的清除事件。如此,可以在检测到valid flag的清除事件的情况下,重新采用段式分配策略为第一对象分配存储空间,从而可以保障存储空间分配的有效性。
在其他实施例中,总存储空间中包括至少一个物理地址,如果第一分配策略为页式分配策略,那么上述步骤S2021还可以通过如下步骤S2021c至步骤S2021e来实现:
步骤S2021c,在所述第一分配策略为页式分配策略的情况下,从所述至少一个物理地址中确定第一数量个第三物理地址。
这里,页式分配策略用于分配全部非连续或部分非连续的存储空间。第一数量个第三物理地址指的是从总存储空间的至少一个物理地址中确定的非连续的第一数量个物理地址。
步骤S2021d,对所述第一数量个第三物理地址进行地址转换,得到连续的第一数量个逻辑地址。
由于第一数量个第三物理地址是非连续的,无法通过基地址和第一数量进行表示,因此需要对第一数量个第三物理地址进行地址转换,将其转换为连续的逻辑地址,以便第一对象使用所分配的存储空间。
在一种可行的实现方式中,可以根据第一对象的标识、第一数量个第三物理地址,构建连续的第一数量个逻辑地址。
步骤S2021e,将所述第一数量个逻辑地址作为所述第一数量个第一存储地址。
这里,第一数量个逻辑地址是连续的,且连续的第一数量个逻辑地址和非连续的第一数量个物理地址是通过第一对象的标识进行关联的,因此每一对象会对应一段连续的逻辑地址,如此可以将第一数量个逻辑地址作为第一数量个第一存储地址,并分配给第一对象;后续,第一对象可以通过自身标识确定连续的第一数量个逻辑地址,进而根据第一数量个逻辑地址确定非连续的第一数量个第三物理地址。
在本申请实施例中,在第一分配策略为页式分配策略的情况下,先从总存储空间中的至少一个物理地址中确定确定非连续的第一数量个第三物理地址,再对第一数量个第三物理地址进行地址转换得到连续的第一数量个逻辑地址,将第一数量个逻辑地址分配给第一对象;如此,可以将碎片化的物理地址利用起来,提高存储空间的利用率。
在一些实施例中,上述步骤S2021c中的“从所述至少一个物理地址中确定第一数量个第三物理地址”可以通过如下步骤B1至步骤B2来实现:
步骤B1,确定所述总存储空间中已被分配的存储地址的分配数量、和所述总存储空间中包括的存储地址的第二数量。
这里,由于实际分配的是物理地址,因此总存储空间中已被分配的存储地址的分配数量,实际指的是,总存储空间中已被分配的物理地址的分配数量;总存储空间中包括的存储地址的第二数量,实际指的是,总存储空间中包括的物理地址的第二数量,第二数量是总存储空间中包括的物理地址的总数量。
步骤B2,在所述分配数量与所述第一数量之和小于或等于所述第二数量的情况下,从所述至少一个物理地址中确定所述第一数量个第三物理地址。
这里,分配数量与第一数量之和小于或等于第二数量,说明,总存储空间中非连续的且未分配的物理地址能够满足第一对象对存储空间的需求,也即,当前能够从总存储空间中分配出第一对象所需的存储空间。如此,先判断分配数量与第一数量之和是否大于第二数量,在分配数量与第一数量之和小于或等于第二数量的情况下,再进行分配;这样,相比于直接分配,可以提高存储空间的分配效率,节省时间。
在一些实施方式中,在分配数量与第一数量之和大于第二数量的情况下,检测针对存储地址的释放操作;在检测到释放操作的情况下,重新执行上述S2021c的步骤;否则继续在此步骤等待。
在一些实施例中,步骤B2中的“从所述至少一个物理地址中确定所述第一数量个第三物理地址”的具体实现方式可以为:基于所述至少一个物理地址对应的分配标识,从所述至少一个物理地址中确定未分配的至少一个第四物理地址;从所述至少一个第四物理地址中,确定所述第一数量个第三物理地址。
这里,至少一个第四物理地址与至少一个第二物理地址相同,均指的是总存储空间的至少一个物理地址中未分配的物理地址。需要说明的是,将至少一个物理地址中未分配的物理地址区分为第二物理地址与第四物理地址的原因在于:第二物理地址是在段式分配策略下确定的,而第四物理地址是在也是分配策略下确定的。
在一种可行的实现方式中,bit=0表征物理地址未被分配,bit=1表征物理地址已被分配;那么,可以从至少一个物理地址中,确定bit=0的物理地址,将bit=0的物理地址确定为至少一个第四物理地址;再从至少一个第四物理地址中确定第一数量个第三物理地址。
在本申请实施例中,通过至少一个物理地址对应的分配标识,从至少一个物理地址中确定未分配的至少一个第四物理地址,再从至少一个第四物理地址中确定非连续的第一数量个第三物理地址;是为了保障最终确定的第一数量个第四物理地址是未被分配的,从而可以保障存储空间分配的有效性。
在一些实施例中,上述步骤S2021d可以通过如下步骤C1至步骤C3来实现:
步骤C1,按照偏移确定方法,确定所述第一数量个第三物理地址的逻辑偏移;所述逻辑偏移具有连续性。
这里,偏移确定方法用于确定物理地址的逻辑偏移。在一种可行的实现方式中,偏移确定方法可以为:内部计数器从0到req_size(第一数量)-1作为logic_offset(逻辑偏移),逻辑偏移是从阿拉伯数字从0依次递增至req_size。
步骤C2,基于所述第一对象的标识,建立所述逻辑偏移和所述第一数量个第三物理地址之间的关联关系。
这里,第一对象的标识可以为Task_id。基于第一对象的标识建立逻辑偏移和第一数量个第三物理地址之间的关联关系,是指按照第一对象的标识,将逻辑偏移和第一数量个第三物理地址进行关联,以便根据第一对象的标识确定对应的逻辑地址和物理地址。
步骤C3,以所述关联关系中的所述第一对象的标识和所述逻辑偏移,表示所述连续的第一数量个逻辑地址。
由于基于第一对象的标识建立了逻辑偏移和第一数量个第三物理地址之间的关联关系,因此,可以通过第一对象的标识和逻辑偏移来表示第一数量个第三物理地址。
在本申请实施例中,通过第一对象的标识和逻辑偏移建立第一数量个第三物理地址到第一数量个逻辑地址的映射;如此,可以使非连续的第一数量个第三物理地址转换为连续的第一数量个逻辑地址,以便第一对象使用;进而,可以将碎片化的物理地址利用起来,提高存储空间的利用率。
在一些实施例中,上述步骤C2可以通过如下步骤C21至步骤C22来实现:
步骤C21,基于映射条目的标识,确定地址映射表中未存储数据的第一数量个第一映射条目。
这里,地址映射表用于表征物理地址与逻辑地址之间的映射关系(关联关系)。地址映射表中可以包括多个映射条目,地址映射表可以表示为mapping_table,映射条目可以表示为entry;映射条目的标识用于表征这个entry是否有效,映射条目的标识可以表示为entry_valid。
示例性地,如图3所示,mapping_table中可以包括N个entry,N的具体数值可根据实际业务场景进行设置。mapping_table的每个entry包括4个field(field描述的是类的属性信息)。总存储空间中可以包括M个物理地址,M个物理地址各自对应有自己的valid flag(有效标志);其中,valid flag=1,表示已被分配;valid flag=0,表示未被分配。M大于等于N。
如下表1所示:mapping_table的每个entry包括entry_valid(映射条目的标识)、task_id(对象的标识)、logic_offset(逻辑偏移)、physical_address(物理地址)这4个field。entry_valid用于通过1bit(比特)的标识来标识这个entry是否有效;entry是否有效也可以理解为这个entry是否已存储数据,如果未存储数据则说明这个entry有效(未被占用),如果已存储数据则说明这个entry无效(已被占用)。task_id表示这个entry被哪个对象所占用。logic_offset表示这个entry为哪个对象的逻辑地址。physical_address表示这个entry为哪个对象的逻辑地址对应的physical address。其中,mapping table的深度大于等于alloc size的上限;每个task对应的多个映射条目可以分散存储在映射表中。
field | description |
entry_valid | 1bit,表示这个entry是否有效;通过该标识,查找未占用的条目 |
task_id | 表示这个entry被哪个对象所占用 |
logic_offset | 表示这个entry为哪个对象的逻辑地址 |
physical_address | 表示这个entry为哪个对象的逻辑地址对应的physical address |
表1
每一对象对应的映射条目与每一对象所需的存储地址的数量相同,也即,一个映射条目代表一个存储地址。第一数量个第一映射条目是地址映射表中未存储数据的第一数量个映射条目。
在一种可行的实现方式中,可以从地址映射表中确定entry_valid表示entry有效的第一数量个映射条目,将其作为第一数量个第一映射条目。需要说明的是,第一数量个第一映射条目可以连续,也可以不连续。
步骤C22,基于所述第一对象的标识,将所述逻辑偏移和所述第一数量个第三物理地址对应存储至所述第一数量个第一映射条目。
在一种可行的实现方式中,可以将task_id、logic_offset、physical_address依次写入第一数量个第一映射条目(mapping table的未被占用的entry)。
在本申请实施例中,基于第一对象的标识,将逻辑偏移和第一数量个第三物理地址对应存储至地址映射表中未存储数据的第一数量个第一映射条目;如此,可以方便快捷地根据第一对象的标识确定第一对象对应的逻辑地址,进而确定第一对象所使用的的物理地址,以便第一对象使用。
在一些实施例中,步骤C22之后,还可以执行如下步骤C23:
步骤C23,将所述第一数量个第一映射条目的标识从第一标识值更新为第二标识值;所述第一标识值表征对应的映射条目未被占用;所述第二标识值表征对应的映射条目已被占用。
这里,地址映射表中的每一映射条目均设置有1bit的标识,该标识为第一标识值,则表示对应的映射条目未被占用;该标识为第二标识值,则表示对应的映射条目已被占用。示例性地,第一标识值可以为0,第二标识值可以为1。
在本申请实施例中,将第一数量个第一映射条目的标识从第一标识值更新为第二标识值;如此,可以防止第一映射条目被其他对象占用。
基于前述实施例,本申请实施例提供的一种存储空间分配方法还包括如下步骤S203至步骤S204:
步骤S203,接收针对第二存储地址的释放请求。
这里,第二存储地址可以为已被分配给某一对象的存储地址。释放请求用于释放第二存储地址,也即,释放请求用于将第二存储地址所指示的物理地址从已被分配转换为未被分配。需要说明的是,第二存储地址可以为通过前述实施例中分配给第一对象的第一数量个第一存储地址,也可以为之前已分配给其他对象的存储地址,本申请实施例对此不作限定。
在一种可行的实现方式中,在某一对象不需要使用已分配的第二存储地址的情况下,可以发送释放请求至计算机设备;如此,计算机设备在接收到第二存储地址的释放请求之后,就可以对第二存储地址进行释放操作。
步骤S204,基于所述第二存储地址的分配策略,对所述第二存储地址进行释放操作。
这里,由于第二存储地址可能是采用段式分配策略分配的,也可能是采用页式分配策略分配的,且段式分配策略分配的是连续的物理地址,页式分配策略分配的是连续的逻辑地址,从而不同分配策略下的存储地址的释放操作会不同。在释放时,需要先确定第二存储地址的分配策略,再根据第二存储地址的分配策略对第二存储地址进行释放操作。
在一些实施例中,上述步骤S204可以通过如下步骤S2041至步骤S2042来实现:
步骤S2041,基于所述第二存储地址的第二分配策略,将所述第二存储地址对应的物理地址的分配标识更新为第三标识值;所述第三标识值表征对应的物理地址未分配。
这里,第二分配策略指的是第二存储地址的分配策略。将第二存储地址对应的物理地址的分配标识更新为第三标识值,也即,将第二存储地址对应的物理地址的分配标识设置为0,以表示第二存储地址对应的物理地址未分配。
步骤S2042,在所述总存储空间中已被分配的存储地址的分配数量上减去所述第二存储地址的数量。
释放时,不仅需要将第二存储地址对应的物理地址的分配标识更新为第三标识值,还需要将在分配数量上减去第二存储地址的数量,以保证分配数量一直是最新的。
需要说明的是,释放时仅将第二存储地址对应的物理地址的分配标识更新为第三标识值,并在分配数量上减去第二存储地址的数量,而不清除之前已经存储在第二存储地址中的数据,是因为在第二存储地址对应的物理地址被再次分配给其他对象时,可以直接使用其他对象的数据覆盖之前的数据;如此,可以简化释放操作,提高处理速率。
在一种实施方式中,在第二存储地址的分配策略为段式分配策略的情况下,步骤S2041的具体实现方式可以为:在所述第二分类策略为段式分配策略的情况下,确定所述第二存储地址对应的连续的至少一个第五物理地址;将所述至少一个第五物理地址的分配标识更新为所述第三标识值。
这里,由于段式分配策略直接分配的是连续的物理地址,不需要进行地址映射,因此可以直接确定第二存储地址对应的连续的至少一个第五物理地址,将至少一个第五物理地址的分配标识更新为第三标识值。
在另一种实施方式中,在第二存储地址的分配策略为页式分配策略的情况下,步骤S1041的具体实现方式可以为:在所述第二分配策略为页式分配策略的情况下,从地址映射表中确定所述第二存储地址对应的至少一个第二映射条目;从所述至少一个第二映射条目中,确定所述第二存储地址对应的至少一个第六物理地址;将所述至少一个第六物理地址的分配标识更新为所述第三标识值;清除所述至少一个第二映射条目中的数据,并将所述至少一个第二映射条目的标识更新为第一标识值;所述第一标识值表征对应的映射条目未被占用。
这里,由于页式分配策略分配的是对不连续的物理地址进行地址转换后的逻辑地址,因此需要通过地址映射表来确定第二存储地址对应的物理地址。至少一个第二映射条目是第二存储地址对应的映射条目,第二映射条目的数量与第二存储地址的数量相同。至少一个第六物理地址是至少一个第二映射条目中存储的物理地址,也是第二存储地址对应的多个不连续的物理地址。
需要说明的是,释放根据页式分配策略分配的第二存储地址时,可以不清除第二存储地址对应的至少一个第二映射条目中的数据,仅将至少一个第二映射条目的标识更新为第一标识值,之后在使用至少一个第二映射条目时可以采用新数据覆盖之前的数据。
基于前述实施例,本申请实施例提供的一种存储空间分配方法还包括如下步骤S205至步骤S206:
步骤S205,接收针对目标数据的操作请求;所述操作请求中包括所述目标数据对应的第三存储地址的第三分配策略。
这里,目标数据可以为当前要处理的数据。第三存储地址可以指的是目标数据对应的存储地址。第三分配策略可以指的是第三存储地址的分配策略。操作请求用于对目标数据进行写操作或读操作。在操作请求为写操作的情况下,第三存储地址为目标数据要写入的地址;在操作请求为读操作的情况下,要从第三存储地址中读取目标数据。
在一种可行的实现方式中,可以接收task中的任一agent发送的操作请求。
步骤S206,基于所述目标数据和所述第三分配策略,处理所述操作请求。
在本申请实施例中,通过目标数据和目标数据对应的第三存储地址的第三分配策略处理操作请求,可以实现数据的读取和写入。
在一些实施例中,步骤S206可以通过如下步骤S2061至步骤S2063来实现:
步骤S2061,基于所述第三分配策略,确定所述第三存储地址对应的目标物理地址。
这里,目标物理是第三存储地址对应的物理地址。
在一种可行的实现方式中,可以由页式分配策略(page allocation logic)来判断第三存储地址是否需要进行地址转换。具体地,操作请求可以携带有第三分配策略,在第三分配策略为段式分配策略的情况下,直接确定目标物理地址;在第三分配策略为页式分配策略的情况下,通过地址转换确定目标物理地址。
在一种实施方式中,在第三分配策略为段式分配策略的情况下,步骤S2061的具体实现方式可以为:在所述第三分配策略为段式分配策略的情况下,从所述操作请求中确定所述第三存储地址对应的基地址和所述第三存储地址的第三数量;所述基地址表征所述第三存储地址对应的初始物理地址;基于所述基地址和所述第三数量,确定所述目标物理地址。
这里,第三数量是第三存储地址的数量,也即,第三数量是第三存储地址对应的物理地址的数量。由于段式分配策略用于分配连续的物理地址,因此可以通过第三存储地址的基地址和第三数量来确定第三存储地址对应的目标物理地址。
在另一种实施方式中,在第三分配策略为页式分配策略的情况下,步骤S2061的具体实现方式可以为:在所述第三分配策略为页式分配策略的情况下,从所述操作请求中确定所述第三存储地址的第四数量和所述第三存储地址对应的对象的标识;基于所述第三存储地址对应的对象的标识和所述第四数量,从地址映射表中确定所述第三存储地址对应的所述第四数量个第三映射条目;将所述第四数量个第三映射条目中的物理地址作为所述目标物理地址。
这里,第四数量和第三数量均表示第三存储地址的数量。第四数量个第三映射条目是第三存储地址对应的映射条目。由于逻辑地址是连续的,因此可以直接通过第三存储地址对应的对象的标识和第四数量确定第三存储地址对应的映射条目,进而确定第三存储地址对应的目标物理地址。
步骤S2062,在所述操作请求为读操作的情况下,将所述目标数据写入所述目标物理地址。
步骤S2063,在所述操作请求为写操作的情况下,从所述目标物理地址中读取所述目标数据。
在本申请实施例中,在操作请求为读操作的情况下,将目标数据写入目标物理地址,可以实现数据的写入;在操作请求为写操作的情况下,从目标物理地址中读取目标数据,可以实现数据的读取。
图4为本申请实施例提供的一种存储空间分配方法的实现流程示意图二,如图4所示,应用于计算机设备,该方法包括如下步骤S401至步骤S410:
步骤S401,在接收到第一对象发送的存储空间获取请求后,确定总存储空间中已被分配的存储地址的分配数量;分配数量表征总存储空间的分配情况。
步骤S402,判断分配数量是否小于数量阈值。
如果分配数量小于数量阈值,则执行步骤S403;如果分配数量大于或等于数量阈值,则执行步骤S404。
步骤S403,在分配数量小于数量阈值的情况下,将段式分配策略作为第一分配策略。
需要说明的是,步骤S403之后,可以执行步骤S405至步骤S406。
步骤S404,在分配数量大于或等于数量阈值的情况下,将页式分配策略作为第一分配策略。
需要说明的是,步骤S404之后,可以执行步骤S407至步骤S409。
步骤S405,在第一分配策略为段式分配策略的情况下,从至少一个物理地址中确定连续的第一数量个第一物理地址。
步骤S406,将第一数量个第一物理地址作为第一数量个第一存储地址。
步骤S407,在第一分配策略为页式分配策略的情况下,从至少一个物理地址中确定非连续的第一数量个第三物理地址。
步骤S408,对第一数量个第三物理地址进行地址转换,得到连续的第一数量个逻辑地址。
步骤S409,将第一数量个逻辑地址作为第一数量个第一存储地址。
需要说明的是,步骤S406和步骤S409之后,均可以执行步骤S410。
步骤S410,将第一数量个第一存储地址分配给第一对象。
图5为本申请实施例提供的一种存储空间释放方法的实现流程示意图,如图5所示,应用于计算机设备,该方法包括如下步骤S501至步骤S509:
步骤S501,接收针对第二存储地址的释放请求。
步骤S502,判断第二存储地址的第二分配策略是否为段式分配策略。
如果第二分类策略为段式分配策略,则执行步骤S503至S504;如果第二分类策略为页式分配策略,则执行步骤S505至步骤S508。
步骤S503,在第二分类策略为段式分配策略的情况下,确定第二存储地址对应的连续的至少一个第五物理地址。
步骤S504,将至少一个第五物理地址的分配标识更新为第三标识值;第三标识值表征对应的物理地址未分配。
步骤S505,在第二分配策略为页式分配策略的情况下,从地址映射表中确定第二存储地址对应的至少一个第二映射条目。
步骤S506,从至少一个第二映射条目中,确定第二存储地址对应的不连续的至少一个第六物理地址。
步骤S507,将至少一个第六物理地址的分配标识更新为第三标识值;第三标识值表征对应的物理地址未分配。
步骤S508,清除至少一个第二映射条目中的数据,并将至少一个第二映射条目的标识更新为第一标识值;第一标识值表征对应的映射条目未被占用。
需要说明的是,步骤S504和步骤S508之后,均可以执行步骤S509。
步骤S509,在总存储空间中已被分配的存储地址的分配数量上减去第二存储地址的数量。
图6为本申请实施例提供的一种针对存储空间的目标数据的处理方法的实现流程示意图,应用于计算机设备,如图6所示,该方法包括如下步骤S601至步骤S610:
步骤S601,接收针对目标数据的操作请求;操作请求中包括目标数据对应的第三存储地址的第三分配策略。
步骤S602,判断第三分配策略是否为段式分配策略。
如果第三分配策略为段式分配策略,则执行步骤S603至步骤S604;如果第三分配策略为页式分配策略,则执行步骤S605至步骤至S607。
步骤S603,在第三分配策略为段式分配策略的情况下,从操作请求中确定第三存储地址对应的基地址和第三存储地址的第三数量。
其中,基地址表征第三存储地址对应的初始物理地址。
步骤S604,基于基地址和第三数量,确定目标物理地址。
步骤S605,在第三分配策略为页式分配策略的情况下,从操作请求中确定第三存储地址的第四数量和第三存储地址对应的对象的标识。
步骤S606,基于第三存储地址对应的对象的标识和第四数量,从地址映射表中,确定第三存储地址对应的第四数量个第三映射条目。
步骤S607,将第四数量个第三映射条目中的物理地址作为目标物理地址。
需要说明的是,步骤S604和步骤S607之后,均可以执行步骤S608。
步骤S608,判断操作请求是否为读操作。
如果操作请求为读操作,则执行步骤S609;如果操作请求为写操作,则执行步骤S610。
步骤S609,在操作请求为读操作的情况下,将目标数据写入目标物理地址。
步骤S610,在操作请求为写操作的情况下,从目标物理地址中读取目标数据。
下面说明本申请实施例提供的存储空间分配方法在实际场景中的应用。
本申请实施例提供一种段页混合存储管理方法,如图7所示,该方法可由如下部件来实现:
请求者(Requestor,如task):用于发送存储空间获取请求(alloc请求),接收返回的分配结果(done信号);发送释放请求(dealloc请求);其中,释放请求中可以携带有分配模式(alloc mode)、基(base)地址、释放的空间大小(size)、以及释放对象的标识(task_id)。
分配模式决策逻辑(Alloc mode decision logic):用于根据总存储空间的分配情况判定使用何种分配模式,并根据分配模式把alloc请求发送到下游的对应模块中;接收下游模块的返回的分配结果;维护分配数量(occupied_count);
段式分配策略(Segment allocation logic):用于通过查询总存储空间的分配标识(即有效标志,valid flag),做段式的存储管理,更新分配标识并把找到的基地址携带于done信号中返回给分配模式决策逻辑。
页式分配策略(Page allocation logic):用于通过查询总存储空间的分配标识,做页式存储管理,更新分配标识并返回done信号给分配模式决策逻辑;维护其内部的地址映射表(mapping table);根据Agent送来的读写请求(read/write request)的分配模式提供逻辑地址到物理地址(logic to physical)的地址转换功能,并把操作请求送给存储设备(storage)。
分配标识(即有效标志,Valid_flag):是个总存储空间的bit mask(位掩码),每一bit代表一个granularity(存储单元的粒度)是否被分配,0表示未被分配,1表示已被分配;会被段式分配策略和页式分配策略在分配的时候设置为1;会被释放逻辑(deallocationlogic)在释放的时候设置为0;
释放策略:接收请求者的释放请求,并在分配模式决策逻辑里面的分配数量上减去对应的数量;把页式分配逻辑的地址映射表对应的映射条目给清零;把对应的分配标识给清零;
Agent:可以理解为一个或若干个有实际读写需求的用户,把分配模式、对象的标识、逻辑偏移、物理地址发送给页式分配逻辑,并接收从存储设备返回的读数据;
存储设备(Storage):存储实际数据,接收页式分配逻辑的读写请求,并把读出的数据送给Agent。
本申请的流程主要分为如下三个:存储空间分配流程(allocation flow),存储空间释放流程(deallocation flow),以及针对存储空间的数据的读写流程(read/writeflow)。由于各个流程的内容相对独立,因此下面分开介绍:
如图8所示,存储空间分配流程包括如下步骤S801至步骤S813:
步骤S801,系统上电,初始化相关内部寄存器。
相关内部寄存器包括:只读存储器(Read Only Memory,ROM)、随机存储器(RandomAccess Memory,RAM)、高速缓冲存储器(Cache)、物理存储器和地址空间等。
步骤S802,分配模式决策逻辑接收请求者发送的alloc请求,根据其内部的分配数量来判定用什么分配模式。
其判定原理是:当分配数量小于预设的数量阈值时,使用普通的段式分配逻辑,执行步骤S803至步骤808;否则使用页式分配逻辑,执行步骤S809至步骤813。
步骤S803,分配模式决策逻辑把alloc请求送到段式分配逻辑。
步骤S804,段式分配逻辑根据分配标识,查找分配标识连续为0、且可以容纳alloc请求的req_size的范围。
步骤S805,判断是否能够找到。
如果能够找到,则执行步骤S806至步骤S807;否则,执行步骤S808。
步骤S806,将该范围的起始位置作为基地址,返回基地址给分配模式决策逻辑。
步骤S807,分配模式决策逻辑接收到从段式分配逻辑返回的基地址,把alloc请求的req_size加到分配数量上,并返回携带有基地址的done信号给请求者。
至此,这次的分配结束。
步骤S808,检测分配标识的清除事件。
如果有清除事件,则跳转到步骤S804;否则继续在此步骤等待。
步骤S809,判断alloc请求的req_size加上分配数量是否小于等于总存储空间的存储地址的总数量。
如果alloc请求的req_size加上分配数量小于等于总存储空间的存储地址的总数量,则执行步骤S810至步骤S812;如果alloc请求的req_size加上分配数量大于总存储空间的存储地址的总数量,则执行步骤S813。
步骤S810,把alloc请求的req_size加到分配数量中,并把alloc请求送到页式分配逻辑。
其中,把alloc请求的req_size提前加到分配数量中,是因为同一时间仅会处理一个分配事件,所以可以提前加;当前也可以分配后再加,本申请实施例对此不作限定。
步骤S811,页式分配逻辑接收alloc请求,内部计数器从0到req_size-1loop作为逻辑偏移,其寻找分配标识为0的物理地址,每次都把找到的逻辑偏移、物理地址和第一对象的标识写到地址映射表的未被占用的映射条目;等所有的物理地址都写到了地址映射表中,给分配模式决策逻辑返回done信号。
步骤S812,分配模式决策逻辑把收到的done信号返回给请求者。
此次分配完成。
步骤S813,检测分配标识的清除事件。
如果有清除事件,则跳转到步骤S809;否则继续在此步骤等待。
如图9所示,存储空间释放流程包括如下步骤S901至步骤S906:
步骤S901,请求者发送释放请求给释放逻辑。
步骤S902,判断释放请求对应的存储空间的分配模式是否为页式分配逻辑。
如果释放请求对应的存储空间的分配模式为页式分配逻辑,则执行步骤S903至步骤S904;如果释放请求对应的存储空间的分配模式是段式分配逻辑,则执行步骤S905。
步骤S903,释放逻辑从0到req_size-1loop作为逻辑偏移,用entry_valid、task_id、logic_offset作为匹配项去地址映射表中取相匹配的映射条目的物理地址。
步骤S904,释放逻辑把相匹配的物理地址作为指引去清除对应的分配标识;把相匹配的映射条目清零。
清除完这个task_id对应的所有映射条目,跳转至步骤S906。
步骤S905,用基地址、req_size生成清除事件去清除对应的分配标识。
步骤S905之后,执行步骤S906。
步骤S906,从分配数量中减去req_size,此时释放操作完成。
如图10所示,针对存储空间的数据的读写流程包括如下步骤S1001至步骤S1006:
步骤S1001,Agent发送读写请求至页式分配逻辑。
不管是何种寻址方式,都要把读写请求送到页式分配逻辑,由其决定是否要做逻辑地址到物理地址的地址转换。
步骤S1002,页式分配逻辑根据读写需求做逻辑地址到物理地址的地址转换,并把读写请求送给存储设备。
步骤S1003,存储设备完成读写操作。
具体地,可以通过步骤S1004至步骤S1005来实现。
步骤S1004,判断是否为写操作。
如果是读操作,则执行步骤S1005;如果是写操作,执行步骤S1006。
步骤S1005,把读出来的数据返回给Agent。
步骤S1006,将数据写入存储设备。
此次读写操作完成。
下面是本申请实施例提供的存储空间分配方法的一个应用实例。
总存储空间有256层深,分配标识用一个256bit位宽的寄存器进行表示;页式分配逻辑里面的映射表是一个20bits宽、64层深的寄存器组,20bits包括:1bit的entry_valid、5bit的task_id、6bit的logic_offset、8bit的physical_addr。
给分配模式决策逻辑里预设的数量阈值可以是192,当前的分配数量=200,当前时刻的分配情况如图11所示,可以看到,index=0,index=3,index=6的空间未被分配,但是它们在物理上并不连续,当前来一个task_id=0x20、req_size=3的请求,由于分配数量200大于数量阈值192,只能选择页式分配逻辑进行分配,经过寻找,更新后的分配标识和地址映射表如图12所示。
本申请至少包括如下关键点:1.段页混合方式进行存储管理;2.前期分配数量小的时候主要利用段式管理,利用了其硬件开销小,寻址简单的优点,后期用页式管理作为辅助方式进行补充,用相对较小的硬件开销(相比较于纯页式管理的资源开销),提高存储空间的利用率;3.根据单笔alloc size的上限,来确定页式管理的地址映射表的规格(深度);4.根据总存储空间中已被分配的物理地址的分配数量和数量阈值来确定分配模式;5.不同分配模式的读写操作,都走相同的路径,保证硬件的同步性;6.分配数量的更新操作时机在两种分配模式一定能分配成功之后。
基于前述的实施例,本申请实施例提供一种存储空间分配装置,该装置包括所包括的各单元、以及各单元所包括的各模块,可以通过计算机设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(CentralProcessing Unit,CPU)、微处理器(Microprocessor Unit,MPU)、数字信号处理器(DigitalSignal Processor,DSP)或现场可编程门阵列(Field Programmable Gate Array,FPGA)等。
图13为本申请实施例提供的一种存储空间分配装置的组成结构示意图,如图13所示,存储空间分配装置1300包括:确定模块1310和分配模块1320,其中:
确定模块1310,用于在接收到第一对象发送的存储空间获取请求后,基于总存储空间的分配情况,确定针对所述存储空间获取请求的第一分配策略;所述第一分配策略为页式分配策略或段式分配策略;
分配模块1320,用于基于所述第一分配策略,为所述第一对象分配存储空间。
在一些实施例中,确定模块1310具体用于:确定所述总存储空间中已被分配的存储地址的分配数量;所述分配数量表征所述总存储空间的分配情况;基于所述分配数量和预设的数量阈值,确定所述第一分配策略。
在一些实施例中,确定模块1310具体用于:在所述分配数量小于所述数量阈值的情况下,将段式分配策略作为所述第一分配策略;在所述分配数量大于或等于所述数量阈值的情况下,将页式分配策略作为所述第一分配策略。
在一些实施例中,确定模块1310具体用于:确定所述总存储空间中已被分配的存储地址的分配数量、和所述总存储空间中未被分配的存储地址的未分配数量;确定所述分配数量和所述未分配数量之间的比值,得到第一数值;所述第一数值表征所述总存储空间的分配情况;基于所述第一数值和预设的占比阈值,确定所述第一分配策略。
在一些实施例中,确定模块1310具体用于:在所述第一数值小于所述占比阈值的情况下,将段式分配策略作为所述第一分配策略;在所述第一数值大于或等于所述占比阈值的情况下,将页式分配策略作为所述第一分配策略。
在一些实施例中,分配模块1320具体用于:基于所述第一分配策略,从所述总存储空间中确定第一数量个第一存储地址;将所述第一数量个第一存储地址分配给所述第一对象。
在一些实施例中,分配模块1320具体用于:在所述第一分配策略为段式分配策略的情况下,从所述至少一个物理地址中确定连续的第一数量个第一物理地址;将所述第一数量个第一物理地址作为所述第一数量个第一存储地址。
在一些实施例中,分配模块1320具体用于:基于所述至少一个物理地址对应的分配标识,从所述至少一个物理地址中确定未分配的至少一个第二物理地址;在所述至少一个第二物理地址中存在连续的第一数量个第二物理地址的情况下,将所述连续的第一数量个第二物理地址作为所述第一数量个第一物理地址。
在一些实施例中,分配模块1320具体用于:在所述至少一个第二物理地址中不存在连续的第一数量个第二物理地址的情况下,检测针对存储地址的释放操作;在检测到所述释放操作的情况下,重新执行所述从所述至少一个物理地址中确定连续的第一数量个第一物理地址的步骤。
在一些实施例中,分配模块1320具体用于:在所述第一分配策略为页式分配策略的情况下,从所述至少一个物理地址中确定第一数量个第三物理地址;对所述第一数量个第三物理地址进行地址转换,得到连续的第一数量个逻辑地址;将所述第一数量个逻辑地址作为所述第一数量个第一存储地址。
在一些实施例中,分配模块1320具体用于:确定所述总存储空间中已被分配的存储地址的分配数量、和所述总存储空间中包括的存储地址的第二数量;在所述分配数量与所述第一数量之和小于或等于所述第二数量的情况下,从所述至少一个物理地址中确定所述第一数量个第三物理地址。
在一些实施例中,分配模块1320具体用于:基于所述至少一个物理地址对应的分配标识,从所述至少一个物理地址中确定未分配的至少一个第四物理地址;从所述至少一个第四物理地址中,确定所述第一数量个第三物理地址。
在一些实施例中,分配模块1320具体用于:按照偏移确定方法,确定所述第一数量个第三物理地址的逻辑偏移;所述逻辑偏移具有连续性;基于所述第一对象的标识,建立所述逻辑偏移和所述第一数量个第三物理地址之间的关联关系;以所述关联关系中的所述第一对象的标识和所述逻辑偏移,表示所述连续的第一数量个逻辑地址。
在一些实施例中,分配模块1320具体用于:基于映射条目的标识,确定地址映射表中未存储数据的第一数量个第一映射条目;基于所述第一对象的标识,将所述逻辑偏移和所述第一数量个第三物理地址对应存储至所述第一数量个第一映射条目。
在一些实施例中,分配模块1320具体用于:将所述第一数量个第一映射条目的标识从第一标识值更新为第二标识值;所述第一标识值表征对应的映射条目未被占用;所述第二标识值表征对应的映射条目已被占用。
在一些实施例中,分配模块1320具体用于:在所述第一数量个第一存储地址为所述第一数量个第一物理地址的情况下,确定所述第一数量个第一物理地址的基地址;基于所述基地址和所述段式分配策略,确定针对所述存储空间获取请求的第一回执消息;将所述第一回执消息发送给所述第一对象。
在一些实施例中,分配模块1320具体用于:在所述第一数量个第一存储地址为所述第一数量个逻辑地址的情况下,基于所述页式分配策略,确定针对所述存储空间获取请求的第二回执消息;将所述第二回执消息发送给所述第一对象。
在一些实施例中,分配模块1320具体用于:将所述第一数量个第一存储地址对应的物理地址的分配标识从第三标识值更新为第四标识值;所述第三标识值表征对应的物理地址未分配,所述第四标识值表征对应的物理地址已分配;在所述总存储空间中已被分配的存储地址的分配数量上添加所述第一数量。
在一些实施例中,分配模块1320具体用于:接收针对第二存储地址的释放请求;基于所述第二存储地址的分配策略,对所述第二存储地址进行释放操作。
在一些实施例中,分配模块1320具体用于:基于所述第二存储地址的第二分配策略,将所述第二存储地址对应的物理地址的分配标识更新为第三标识值;所述第三标识值表征对应的物理地址未分配;在所述总存储空间中已被分配的存储地址的分配数量上减去所述第二存储地址的数量。
在一些实施例中,分配模块1320具体用于:在所述第二分类策略为段式分配策略的情况下,确定所述第二存储地址对应的连续的至少一个第五物理地址;将所述至少一个第五物理地址的分配标识更新为所述第三标识值。
在一些实施例中,分配模块1320具体用于:在所述第二分配策略为页式分配策略的情况下,从地址映射表中确定所述第二存储地址对应的至少一个第二映射条目;从所述至少一个第二映射条目中,确定所述第二存储地址对应的至少一个第六物理地址;将所述至少一个第六物理地址的分配标识更新为所述第三标识值;清除所述至少一个第二映射条目中的数据,并将所述至少一个第二映射条目的标识更新为第一标识值;所述第一标识值表征对应的映射条目未被占用。
在一些实施例中,分配模块1320具体用于:接收针对目标数据的操作请求;所述操作请求中包括所述目标数据对应的第三存储地址的第三分配策略;基于所述目标数据和所述第三分配策略,处理所述操作请求。
在一些实施例中,分配模块1320具体用于:基于所述第三分配策略,确定所述第三存储地址对应的目标物理地址;在所述操作请求为读操作的情况下,将所述目标数据写入所述目标物理地址;在所述操作请求为写操作的情况下,从所述目标物理地址中读取所述目标数据。
在一些实施例中,分配模块1320具体用于:在所述第三分配策略为段式分配策略的情况下,从所述操作请求中确定所述第三存储地址对应的基地址和所述第三存储地址的第三数量;所述基地址表征所述第三存储地址对应的初始物理地址;基于所述基地址和所述第三数量,确定所述目标物理地址。
在一些实施例中,分配模块1320具体用于:在所述第三分配策略为页式分配策略的情况下,从所述操作请求中确定所述第三存储地址的第四数量和所述第三存储地址对应的对象的标识;基于所述第三存储地址对应的对象的标识和所述第四数量,从地址映射表中确定所述第三存储地址对应的所述第四数量个第三映射条目;将所述第四数量个第三映射条目中的物理地址作为所述目标物理地址。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。在一些实施例中,本申请实施例提供的装置具有的功能或包含的模块可以用于执行上述方法实施例描述的方法,对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的数据处理方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read OnlyMemory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件、软件或固件,或者硬件、软件、固件三者之间的任意结合。
本申请实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的部分或全部步骤。
本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的部分或全部步骤。所述计算机可读存储介质可以是瞬时性的,也可以是非瞬时性的。
本申请实施例提供一种计算机程序,包括计算机可读代码,在所述计算机可读代码在计算机设备中运行的情况下,所述计算机设备中的处理器执行用于实现上述方法中的部分或全部步骤。
本申请实施例提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序被计算机读取并执行时,实现上述方法中的部分或全部步骤。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一些实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一些实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
这里需要指出的是:上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考。以上设备、存储介质、计算机程序及计算机程序产品实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请设备、存储介质、计算机程序及计算机程序产品实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,图14为本申请实施例中计算机设备的一种硬件实体示意图,如图14所示,该计算机设备1400的硬件实体包括:处理器1401、通信接口1402和存储器1403,其中:
处理器1401通常控制计算机设备1400的总体操作。
通信接口1402可以使计算机设备通过网络与其他终端或服务器通信。
存储器1403配置为存储由处理器1401可执行的指令和应用,还可以缓存待处理器1401以及计算机设备1400中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random AccessMemory,RAM)实现。处理器1401、通信接口1402和存储器1403之间可以通过总线1404进行数据传输。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各步骤/过程的序号的大小并不意味着执行顺序的先后,各步骤/过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述存储空间分配方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。
Claims (30)
1.一种存储空间分配方法,其特征在于,所述存储空间分配方法包括:
在接收到第一对象发送的存储空间获取请求后,基于总存储空间的分配情况,确定针对所述存储空间获取请求的第一分配策略;所述第一分配策略为页式分配策略或段式分配策略;
基于所述第一分配策略,为所述第一对象分配存储空间。
2.根据权利要求1所述的存储空间分配方法,其特征在于,所述基于总存储空间的分配情况,确定针对所述存储空间获取请求的第一分配策略,包括:
确定所述总存储空间中已被分配的存储地址的分配数量;所述分配数量表征所述总存储空间的分配情况;
基于所述分配数量和预设的数量阈值,确定所述第一分配策略。
3.根据权利要求2所述的存储空间分配方法,其特征在于,所述基于所述分配数量和预设的数量阈值,确定所述第一分配策略,包括:
在所述分配数量小于所述数量阈值的情况下,将段式分配策略作为所述第一分配策略;
在所述分配数量大于或等于所述数量阈值的情况下,将页式分配策略作为所述第一分配策略。
4.根据权利要求1所述的存储空间分配方法,其特征在于,所述基于总存储空间的分配情况,确定针对所述存储空间获取请求的第一分配策略,包括:
确定所述总存储空间中已被分配的存储地址的分配数量、和所述总存储空间中未被分配的存储地址的未分配数量;
确定所述分配数量和所述未分配数量之间的比值,得到第一数值;所述第一数值表征所述总存储空间的分配情况;
基于所述第一数值和预设的占比阈值,确定所述第一分配策略。
5.根据权利要求4所述的存储空间分配方法,其特征在于,所述基于所述第一数值和预设的占比阈值,确定所述第一分配策略,包括:
在所述第一数值小于所述占比阈值的情况下,将段式分配策略作为所述第一分配策略;
在所述第一数值大于或等于所述占比阈值的情况下,将页式分配策略作为所述第一分配策略。
6.根据权利要求1至5中任一项所述的存储空间分配方法,其特征在于,所述存储空间获取请求中包括所述第一对象所需的存储地址的第一数量;
所述基于所述第一分配策略,为所述第一对象分配存储空间,包括:
基于所述第一分配策略,从所述总存储空间中确定第一数量个第一存储地址;
将所述第一数量个第一存储地址分配给所述第一对象。
7.根据权利要求6所述的存储空间分配方法,其特征在于,所述总存储空间中包括至少一个物理地址;
所述基于所述第一分配策略,从所述总存储空间中确定第一数量个第一存储地址,包括:
在所述第一分配策略为段式分配策略的情况下,从所述至少一个物理地址中确定连续的第一数量个第一物理地址;
将所述第一数量个第一物理地址作为所述第一数量个第一存储地址。
8.根据权利要求7所述的存储空间分配方法,其特征在于,所述从所述至少一个物理地址中确定连续的第一数量个第一物理地址,包括:
基于所述至少一个物理地址对应的分配标识,从所述至少一个物理地址中确定未分配的至少一个第二物理地址;
在所述至少一个第二物理地址中存在连续的第一数量个第二物理地址的情况下,将所述连续的第一数量个第二物理地址作为所述第一数量个第一物理地址。
9.根据权利要求8所述的存储空间分配方法,其特征在于,所述存储空间分配方法还包括:
在所述至少一个第二物理地址中不存在连续的第一数量个第二物理地址的情况下,检测针对存储地址的释放操作;
在检测到所述释放操作的情况下,重新执行所述从所述至少一个物理地址中确定连续的第一数量个第一物理地址的步骤。
10.根据权利要求6所述的存储空间分配方法,其特征在于,所述总存储空间包括至少一个物理地址;
所述基于所述第一分配策略,从所述总存储空间中确定第一数量个第一存储地址,包括:
在所述第一分配策略为页式分配策略的情况下,从所述至少一个物理地址中确定第一数量个第三物理地址;
对所述第一数量个第三物理地址进行地址转换,得到连续的第一数量个逻辑地址;
将所述第一数量个逻辑地址作为所述第一数量个第一存储地址。
11.根据权利要求10所述的存储空间分配方法,其特征在于,所述从所述至少一个物理地址中确定第一数量个第三物理地址,包括:
确定所述总存储空间中已被分配的存储地址的分配数量、和所述总存储空间中包括的存储地址的第二数量;
在所述分配数量与所述第一数量之和小于或等于所述第二数量的情况下,从所述至少一个物理地址中确定所述第一数量个第三物理地址。
12.根据权利要求11所述的存储空间分配方法,其特征在于,所述从所述至少一个物理地址中确定所述第一数量个第三物理地址,包括:
基于所述至少一个物理地址对应的分配标识,从所述至少一个物理地址中确定未分配的至少一个第四物理地址;
从所述至少一个第四物理地址中,确定所述第一数量个第三物理地址。
13.根据权利要求10所述的存储空间分配方法,其特征在于,所述对所述第一数量个第三物理地址进行地址转换,得到连续的第一数量个逻辑地址,包括:
按照偏移确定方法,确定所述第一数量个第三物理地址的逻辑偏移;所述逻辑偏移具有连续性;
基于所述第一对象的标识,建立所述逻辑偏移和所述第一数量个第三物理地址之间的关联关系;
以所述关联关系中的所述第一对象的标识和所述逻辑偏移,表示所述连续的第一数量个逻辑地址。
14.根据权利要求13所述的存储空间分配方法,其特征在于,所述基于所述第一对象的标识,建立所述逻辑偏移和所述第一数量个第三物理地址之间的关联关系,包括:
基于映射条目的标识,确定地址映射表中未存储数据的第一数量个第一映射条目;
基于所述第一对象的标识,将所述逻辑偏移和所述第一数量个第三物理地址对应存储至所述第一数量个第一映射条目。
15.根据权利要求14所述的存储空间分配方法,其特征在于,所述基于所述第一对象的标识,将所述逻辑偏移和所述第一数量个第三物理地址对应存储至所述第一数量个第一映射条目之后,所述存储空间分配方法还包括:
将所述第一数量个第一映射条目的标识从第一标识值更新为第二标识值;所述第一标识值表征对应的映射条目未被占用;所述第二标识值表征对应的映射条目已被占用。
16.根据权利要求7至9中任一项所述的存储空间分配方法,其特征在于,所述将所述第一数量个第一存储地址分配给所述第一对象,包括:
在所述第一数量个第一存储地址为所述第一数量个第一物理地址的情况下,确定所述第一数量个第一物理地址的基地址;
基于所述基地址和所述段式分配策略,确定针对所述存储空间获取请求的第一回执消息;
将所述第一回执消息发送给所述第一对象。
17.根据权利要求10至15中任一项所述的存储空间分配方法,其特征在于,所述将所述第一数量个第一存储地址分配给所述第一对象,包括:
在所述第一数量个第一存储地址为所述第一数量个逻辑地址的情况下,基于所述页式分配策略,确定针对所述存储空间获取请求的第二回执消息;
将所述第二回执消息发送给所述第一对象。
18.根据权利要求6所述的存储空间分配方法,其特征在于,所述将所述第一数量个第一存储地址分配给所述第一对象之后,所述存储空间分配方法还包括:
将所述第一数量个第一存储地址对应的物理地址的分配标识从第三标识值更新为第四标识值;所述第三标识值表征对应的物理地址未分配,所述第四标识值表征对应的物理地址已分配;
在所述总存储空间中已被分配的存储地址的分配数量上添加所述第一数量。
19.根据权利要求1所述的存储空间分配方法,其特征在于,所述存储空间分配方法还包括:
接收针对第二存储地址的释放请求;
基于所述第二存储地址的分配策略,对所述第二存储地址进行释放操作。
20.根据权利要求19所述的存储空间分配方法,其特征在于,所述基于所述第二存储地址的分配策略,对所述第二存储地址进行释放操作,包括:
基于所述第二存储地址的第二分配策略,将所述第二存储地址对应的物理地址的分配标识更新为第三标识值;所述第三标识值表征对应的物理地址未分配;
在所述总存储空间中已被分配的存储地址的分配数量上减去所述第二存储地址的数量。
21.根据权利要求20所述的存储空间分配方法,其特征在于,所述基于所述第二存储地址的第二分配策略,将所述第二存储地址对应的物理地址的分配标识更新为第三标识值,包括:
在所述第二分类策略为段式分配策略的情况下,确定所述第二存储地址对应的连续的至少一个第五物理地址;
将所述至少一个第五物理地址的分配标识更新为所述第三标识值。
22.根据权利要求20所述的存储空间分配方法,其特征在于,所述基于所述第二存储地址的第二分配策略,将所述第二存储地址对应的物理地址的分配标识更新为第三标识值,包括:
在所述第二分配策略为页式分配策略的情况下,从地址映射表中确定所述第二存储地址对应的至少一个第二映射条目;
从所述至少一个第二映射条目中,确定所述第二存储地址对应的至少一个第六物理地址;
将所述至少一个第六物理地址的分配标识更新为所述第三标识值;
清除所述至少一个第二映射条目中的数据,并将所述至少一个第二映射条目的标识更新为第一标识值;所述第一标识值表征对应的映射条目未被占用。
23.根据权利要求1所述的存储空间分配方法,其特征在于,所述存储空间分配方法还包括:
接收针对目标数据的操作请求;所述操作请求中包括所述目标数据对应的第三存储地址的第三分配策略;
基于所述目标数据和所述第三分配策略,处理所述操作请求。
24.根据权利要求23所述的存储空间分配方法,其特征在于,所述基于所述目标数据和所述第三分配策略,处理所述操作请求,包括:
基于所述第三分配策略,确定所述第三存储地址对应的目标物理地址;
在所述操作请求为读操作的情况下,将所述目标数据写入所述目标物理地址;
在所述操作请求为写操作的情况下,从所述目标物理地址中读取所述目标数据。
25.根据权利要求24所述的存储空间分配方法,其特征在于,所述基于所述第三分配策略,确定所述第三存储地址对应的目标物理地址,包括:
在所述第三分配策略为段式分配策略的情况下,从所述操作请求中确定所述第三存储地址对应的基地址和所述第三存储地址的第三数量;所述基地址表征所述第三存储地址对应的初始物理地址;
基于所述基地址和所述第三数量,确定所述目标物理地址。
26.根据权利要求24所述的存储空间分配方法,其特征在于,所述基于所述第三分配策略,确定所述第三存储地址对应的目标物理地址,包括:
在所述第三分配策略为页式分配策略的情况下,从所述操作请求中确定所述第三存储地址的第四数量和所述第三存储地址对应的对象的标识;
基于所述第三存储地址对应的对象的标识和所述第四数量,从地址映射表中确定所述第三存储地址对应的所述第四数量个第三映射条目;
将所述第四数量个第三映射条目中的物理地址作为所述目标物理地址。
27.一种存储空间分配装置,其特征在于,所述存储空间分配装置包括:
确定模块,用于在接收到第一对象发送的存储空间获取请求后,基于总存储空间的分配情况,确定针对所述存储空间获取请求的第一分配策略;所述第一分配策略为页式分配策略或段式分配策略;
分配模块,用于基于所述第一分配策略,为所述第一对象分配存储空间。
28.一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至26任一项所述存储空间分配方法中的步骤。
29.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至26任一项所述存储空间分配方法中的步骤。
30.一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序被计算机读取并执行时,实现权利要求1至26中任一项所述存储空间分配方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311765318.4A CN117687933A (zh) | 2023-12-20 | 2023-12-20 | 存储空间分配方法、装置、设备、存储介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311765318.4A CN117687933A (zh) | 2023-12-20 | 2023-12-20 | 存储空间分配方法、装置、设备、存储介质及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117687933A true CN117687933A (zh) | 2024-03-12 |
Family
ID=90138784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311765318.4A Pending CN117687933A (zh) | 2023-12-20 | 2023-12-20 | 存储空间分配方法、装置、设备、存储介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117687933A (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5732402A (en) * | 1995-02-10 | 1998-03-24 | International Business Machines Corporation | System and method for data space management using buddy system space allocation |
CN101373445A (zh) * | 2008-09-09 | 2009-02-25 | 创新科存储技术(深圳)有限公司 | 一种内存调度方法及装置 |
CN111078410A (zh) * | 2019-12-11 | 2020-04-28 | Oppo(重庆)智能科技有限公司 | 内存分配方法、装置、存储介质及电子设备 |
CN113254365A (zh) * | 2021-06-09 | 2021-08-13 | 北京字节跳动网络技术有限公司 | 存储空间的管理方法、装置、设备、介质和程序产品 |
CN115269190A (zh) * | 2022-07-29 | 2022-11-01 | 北京字跳网络技术有限公司 | 内存分配方法、装置、电子设备、存储介质及产品 |
CN115658316A (zh) * | 2022-11-07 | 2023-01-31 | 天津津航计算技术研究所 | 一种小型cpu内存管理方法 |
CN115794417A (zh) * | 2023-02-02 | 2023-03-14 | 本原数据(北京)信息技术有限公司 | 内存管理方法及装置 |
CN116303123A (zh) * | 2023-03-16 | 2023-06-23 | 阿里云计算有限公司 | 一种缺页处理方法、设备及存储介质 |
CN117170872A (zh) * | 2023-09-11 | 2023-12-05 | 维沃移动通信有限公司 | 内存管理方法、装置、设备和存储介质 |
-
2023
- 2023-12-20 CN CN202311765318.4A patent/CN117687933A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5732402A (en) * | 1995-02-10 | 1998-03-24 | International Business Machines Corporation | System and method for data space management using buddy system space allocation |
CN101373445A (zh) * | 2008-09-09 | 2009-02-25 | 创新科存储技术(深圳)有限公司 | 一种内存调度方法及装置 |
CN111078410A (zh) * | 2019-12-11 | 2020-04-28 | Oppo(重庆)智能科技有限公司 | 内存分配方法、装置、存储介质及电子设备 |
CN113254365A (zh) * | 2021-06-09 | 2021-08-13 | 北京字节跳动网络技术有限公司 | 存储空间的管理方法、装置、设备、介质和程序产品 |
CN115269190A (zh) * | 2022-07-29 | 2022-11-01 | 北京字跳网络技术有限公司 | 内存分配方法、装置、电子设备、存储介质及产品 |
CN115658316A (zh) * | 2022-11-07 | 2023-01-31 | 天津津航计算技术研究所 | 一种小型cpu内存管理方法 |
CN115794417A (zh) * | 2023-02-02 | 2023-03-14 | 本原数据(北京)信息技术有限公司 | 内存管理方法及装置 |
CN116303123A (zh) * | 2023-03-16 | 2023-06-23 | 阿里云计算有限公司 | 一种缺页处理方法、设备及存储介质 |
CN117170872A (zh) * | 2023-09-11 | 2023-12-05 | 维沃移动通信有限公司 | 内存管理方法、装置、设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
张勋臣;袁刚;樊荣: "基于国产ARM虚拟化平台的动态内存调度设计", 《 信息通信》, 15 December 2020 (2020-12-15), pages 63 - 67 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11467955B2 (en) | Memory system and method for controlling nonvolatile memory | |
KR102013430B1 (ko) | 어레이 컨트롤러, 솔리드 스테이트 디스크, 및 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 방법 | |
WO2009098547A1 (en) | Memory management | |
US7418568B2 (en) | Memory management technique | |
CN107992430A (zh) | 闪存芯片的管理方法、装置及计算机可读存储介质 | |
CN108139966B (zh) | 管理转址旁路缓存的方法和多核处理器 | |
WO2022120522A1 (zh) | 内存空间的分配方法、装置及存储介质 | |
CN109960662B (zh) | 一种内存回收方法及设备 | |
CN110955488A (zh) | 一种持久性内存的虚拟化方法及系统 | |
US9772776B2 (en) | Per-memory group swap device | |
CN115712500A (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
US20150370794A1 (en) | Hash based read and write operations in a storage system | |
CN114546898A (zh) | 一种tlb管理方法、装置、设备及存储介质 | |
CN112199039B (zh) | 虚拟存储管理方法及处理器 | |
CN117687933A (zh) | 存储空间分配方法、装置、设备、存储介质及程序产品 | |
US20170364442A1 (en) | Method for accessing data visitor directory in multi-core system and device | |
CN115437579B (zh) | 一种元数据管理方法、装置、计算机设备及可读存储介质 | |
CN106021121B (zh) | 用以优化分组缓冲器空间的分组处理系统、方法和设备 | |
KR20090075324A (ko) | 시스템 온 칩에서 메모리 할당 방법 및 장치 | |
CN111367836B (zh) | 一种针对数据库的处理方法及装置 | |
CN115729963A (zh) | 标识分配方法、装置、设备及存储介质 | |
CN117119441A (zh) | Ip地址分配方法、装置、服务器及存储介质 | |
CN118113490A (zh) | 用于设备的内存管理方法、装置、设备、存储介质及车辆 | |
CN116821072A (zh) | 文件的动态缓存方法、装置、设备及存储介质 | |
CN118277330A (zh) | 数据处理方法、装置以及芯片、设备、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |