CN113535597A - 内存管理方法、内存管理单元和物联网设备 - Google Patents
内存管理方法、内存管理单元和物联网设备 Download PDFInfo
- Publication number
- CN113535597A CN113535597A CN202010291994.2A CN202010291994A CN113535597A CN 113535597 A CN113535597 A CN 113535597A CN 202010291994 A CN202010291994 A CN 202010291994A CN 113535597 A CN113535597 A CN 113535597A
- Authority
- CN
- China
- Prior art keywords
- memory
- memory block
- address
- size
- block
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 1549
- 238000007726 management method Methods 0.000 title claims abstract description 220
- 239000012634 fragment Substances 0.000 claims abstract description 230
- 238000006062 fragmentation reaction Methods 0.000 claims description 100
- 238000013467 fragmentation Methods 0.000 claims description 99
- 238000000034 method Methods 0.000 claims description 28
- 230000004044 response Effects 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 4
- 230000006855 networking Effects 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 16
- 238000005192 partition Methods 0.000 description 16
- 230000005540 biological transmission Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000012806 monitoring device Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0653—Configuration or reconfiguration with centralised address assignment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
本发明实施例提供了一种内存管理方法和内存管理单元。所述内存管理方法包括:响应内存分配指令,基于待分配内存大小,确定具有连续存储空间的至少一个空闲内存块分别对应的至少一个内存块地址;基于至少一个内存块地址当前分别对应的至少一个内存块分片的一个偏移地址,分配待分配内存大小的内存空间,得到经过内存分配的至少一个内存块分片的第二偏移地址;利用经过内存分配的至少一个内存块分片的第二偏移地址更新所述至少一个内存块分片的第一偏移地址。在本发明实施例的方案中,由于内存块分片具有比内存块更小的存储空间,因此基于内存块对应的内存块分片的偏移地址进行内存空间的管理,有效地解决了内存碎片的问题。
Description
技术领域
本发明实施例涉及通信技术领域,尤其涉及一种内存管理方法和内存管理单元。
背景技术
随着人工智能物联网的发展,物联网操作系统技术也在不断发展。随着而来的是使用到物联网操作系统的服务场景不断扩展。例如,从最初的只需要一个任务的传感信息采集应用,不断发展到需要同时运行几十个任务的智能音箱,带屏设备等应用。在操作系统领域,内存管理一直都是非常重要的技术组件。单一任务的传感信息采集应用中,内存使用情况较为简单,通常使用静态内存的方式,基本不会出现内存碎片的问题。但是在智能音箱,带屏设备等复杂应用中,经常遇到内存碎片的问题,需要有简单和高效的内存管理算法。
发明内容
有鉴于此,本发明实施例提供一种内存管理方法和内存管理单元,以解决或缓解上述问题。
根据本发明实施例的第一方面,提供了一种内存管理方法,包括:获取内存分配指令,所述内存分配指令包括待分配内存大小;响应所述内存分配指令,基于所述待分配内存大小,确定具有连续存储空间的至少一个空闲内存块分别对应的至少一个内存块地址;基于所述至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,分配符合所述待分配内存大小的内存空间,得到经过内存分配的至少一个内存块分片的第二偏移地址;利用所述经过内存分配的至少一个内存块分片的第二偏移地址更新所述至少一个内存块分片的第一偏移地址。
根据本发明实施例的第二方面,提供了一种内存管理方法,包括:内存块管理子单元获取第一内存分配指令,所述第一内存分配指令包括待分配内存大小;内存块管理子单元响应所述第一内存分配指令,基于所述待分配内存大小,确定具有连续存储空间的至少一个空闲内存块分别对应的至少一个内存块地址;内存块分片管理子单元响应所述内存块管理子单元发送的寻址指令,确定所述至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,内存块分片管理子单元响应所述内存块管理子单元发送的包括所述待分配内存大小的第二内存分配指令,分配符合所述待分配内存大小的内存空间,得到经过内存分配的至少一个内存块分片的第二偏移地址;内存块分片管理子单元响应所述内存块管理子单元发送的偏移地址更新指令,利用所述经过内存分配的至少一个内存块分片的第二偏移地址更新所述至少一个内存块分片的第一偏移地址。
根据本发明实施例的第三方面,提供了一种内存管理方法,包括:获取内存释放指令,所述内存释放指令包括待释放内存大小;响应内存释放指令,基于所述待释放内存大小,确定具有连续存储空间的至少一个占用内存块分别对应的至少一个内存块地址;基于所述至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,释放符合所述待释放内存大小的内存空间,得到经过内存释放的至少一个内存块分片的第二偏移地址;利用所述经过内存释放的至少一个内存块分片的第二偏移地址更新所述至少一个内存块分片的第一偏移地址。
根据本发明实施例的第四方面,提供了一种内存管理方法,包括:内存块管理子单元获取第一内存释放指令,所述第一内存释放指令包括待释放内存大小;内存块管理子单元响应所述第一内存释放指令,基于所述待释放内存大小,确定具有连续存储空间的至少一个占用内存块分别对应的至少一个内存块地址;内存块分片管理子单元响应所述内存块管理子单元发送的寻址指令,确定所述至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,内存块分片管理子单元响应所述内存块管理子单元发送的包括所述待释放内存大小的第二内存释放指令,释放符合所述待释放内存大小的内存空间,得到经过内存释放的至少一个内存块分片的第二偏移地址;内存块分片管理子单元响应所述内存块管理子单元发送的偏移地址更新指令,利用所述经过内存释放的至少一个内存块分片的第二偏移地址更新所述至少一个内存块分片的第一偏移地址。
根据本发明实施例的第五方面,提供了一种内存管理单元,包括:获取模块,获取内存分配指令,所述内存分配指令包括待分配内存大小;寻址模块,响应所述内存分配指令,基于所述待分配内存大小,确定具有连续存储空间的至少一个空闲内存块分别对应的至少一个内存块地址;内存分配模块,基于所述至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,分配符合所述待分配内存大小的内存空间,得到经过内存分配的至少一个内存块分片的第二偏移地址;地址更新模块,利用所述经过内存分配的至少一个内存块分片的第二偏移地址更新所述至少一个内存块分片的第一偏移地址。
根据本发明实施例的第六方面,提供了一种内存管理单元,包括:内存块管理子单元,被配置为:获取第一内存分配指令,所述第一内存分配指令包括待分配内存大小;响应所述第一内存分配指令,基于所述待分配内存大小,确定具有连续存储空间的至少一个空闲内存块分别对应的至少一个内存块地址;内存块分片管理子单元,被配置为:响应所述内存块管理子单元发送的寻址指令,确定所述至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,响应所述内存块管理子单元发送的包括所述待分配内存大小的第二内存分配指令,分配符合所述待分配内存大小的内存空间,得到经过内存分配的至少一个内存块分片的第二偏移地址;响应所述内存块管理子单元发送的偏移地址更新指令,利用所述经过内存分配的至少一个内存块分片的第二偏移地址更新所述至少一个内存块分片的第一偏移地址。
根据本发明实施例的第七方面,提供了一种内存管理单元,包括:获取模块,获取内存释放指令,所述内存释放指令包括待释放内存大小;寻址模块,响应内存释放指令,基于所述待释放内存大小,确定具有连续存储空间的至少一个占用内存块分别对应的至少一个内存块地址;内存释放模块,基于所述至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,释放符合所述待释放内存大小的内存空间,得到经过内存释放的至少一个内存块分片的第二偏移地址;地址更新模块,利用所述经过内存释放的至少一个内存块分片的第二偏移地址更新所述至少一个内存块分片的第一偏移地址。
根据本发明实施例的第八方面,提供了一种内存管理单元,包括:内存块管理子单元,被配置为:获取第一内存释放指令,所述第一内存释放指令包括待释放内存大小;响应所述第一内存释放指令,基于所述待释放内存大小,确定具有连续存储空间的至少一个占用内存块分别对应的至少一个内存块地址;内存块分片管理子单元,被配置为:响应所述内存块管理子单元发送的寻址指令,确定所述至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,响应所述内存块管理子单元发送的包括所述待释放内存大小的第二内存释放指令,释放符合所述待释放内存大小的内存空间,得到经过内存释放的至少一个内存块分片的第二偏移地址;响应所述内存块管理子单元发送的偏移地址更新指令,利用所述经过内存释放的至少一个内存块分片的第二偏移地址更新所述至少一个内存块分片的第一偏移地址。
根据本发明实施例的第九方面,提供了一种内存管理方法,应用于安装有实时操作系统的物联网设备,所述方法包括:获取所述实时操作系统的内存分配指令,所述内存分配指令包括待分配内存大小;响应所述内存分配指令,基于所述待分配内存大小,确定具有连续存储空间的至少一个空闲内存块分别对应的至少一个内存块地址;基于所述至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,分配符合所述待分配内存大小的内存空间,得到经过内存分配的至少一个内存块分片的第二偏移地址,并且利用所述经过内存分配的至少一个内存块分片的第二偏移地址,更新所述至少一个内存块分片的第一偏移地址,以便向所述实时操作系统返回内存空间分配结果。
根据本发明实施例的第十方面,提供了一种物联网设备,应用于安装有实时操作系统的物联网设备,包括:处理器,被配置为:读取所述实时操作系统的内存申请指令,生成内存分配指令;以及内存管理单元,被配置为:从所述处理器获取所述内存分配指令,所述内存分配指令包括待分配内存大小;响应所述内存分配指令,基于所述待分配内存大小,确定具有连续存储空间的至少一个空闲内存块分别对应的至少一个内存块地址;基于所述至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,分配符合所述待分配内存大小的内存空间,得到经过内存分配的至少一个内存块分片的第二偏移地址,并且利用所述经过内存分配的至少一个内存块分片的第二偏移地址,更新所述至少一个内存块分片的第一偏移地址,以便向所述处理器返回内存空间分配结果。
在本发明实施例的方案中,基于所述至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,分配符合所述待分配内存大小的内存空间,利用所述经过内存分配的至少一个内存块分片的第二偏移地址,更新所述至少一个内存块分片的第一偏移地址。由于内存块分片具有比内存块更小的存储空间,因此基于内存块对应的内存块分片的偏移地址进行内存空间的管理,有效地解决了内存碎片的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明的一个实施例的内存管理方法和内存管理单元所在硬件环境的一个示例的示意图;
图2A为本发明的一个实施例的内存管理方法的示意性流程图;
图2B-图8为本发明的另一实施例的内存管理方法的示意图;
图9A为本发明的另一实施例的内存管理方法的示意性流程图;
图9B为本发明的另一实施例的内存管理方法的示意图;
图10为本发明的另一实施例的内存管理方法的示意性流程图;
图11为本发明的另一实施例的内存管理方法的示意性流程图;
图12为本发明的另一实施例的内存管理单元的示意性框图;
图13为本发明的另一实施例的内存管理单元的示意性框图;
图14为本发明的另一实施例的内存管理单元的示意性框图;
图15为本发明的另一实施例的内存管理单元的示意性框图;
图16为本发明的另一实施例的内存管理方法的示意性流程图;
图17为本发明的另一实施例的物联网设备的示意性框图。
具体实施方式
为了使本领域的人员更好地理解本发明实施例中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明实施例一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明实施例保护的范围。
下面结合本发明实施例附图进一步说明本发明实施例具体实现。图1为本发明的一个实施例的内存管理方法和内存管理单元所在硬件环境的一个示例的示意图。应理解,图1的硬件环境仅仅为一个示例,本发明实施例的方案包括但不限于任何计算机系统。包括任何单片机或任何形式的操作系统,例如,诸如Linux操作系统的嵌入式操作系统,诸如RTThread(嵌入式实时多线程操作系统,Real Time Thread)的RTOS(实时操作系统)。本发明实施例的操作系统也包括服务器操作系统和桌面操作系统。例如,图1为内存控制器的硬件结构图。包括中央处理器(CPU)110,内存120,内存管理单元(以下称为“MMU”)130和一种主内存控制器140,主机接口(“主机I/F”)150和总线170。
中央处理器110可用于执行内存控制器的功能操作所需的某些逻辑和/或算术操作。在本发明实施例中,内存120可以用作各种类型的高速缓冲存储器存储要由CPU处理的数据110并且直接连接到CPU110以便有效地交换数据。因此,内存120被配置为允许CPU直接访问110通过“专用”接口。这种配置(通过专用接口直接访问)保证了内存的可靠性。120作为相对于CPU的有效低电平内存工作110。内存120可以包括易失性存储器和/或非易失性存储器。例如,内存120可以是安装在CPU内部或紧密围绕CPU的紧耦合存储器(TCM)110(例如,包括CPU的芯片1102)以快速存取大数据容量的主存储器。在本发明构思的某些实施例中,内存120可以包括高速同步随机存取存储器(SRAM)。内存管理单元260可用于向主存储器的所选存储体提供地址。所提供的地址可以在某些寻址方案中从包括在主存储器中的多个存储体中功能性地选择所选择的存储体。在此,主存储器可用于在内部将接收到的地址分配给多个存储体。因此,内存管理单元260接收并存储与多个存储体相关联的地址,所选择的存储体的标识还可以涉及由CPU指定110。因此,内存管理单元260将存储的地址传送到主内存控制器140其进一步控制主存储器的操作。在此,由内存管理单元260提供的地址可以被传送(或传输)到主内存控制器140通过总线170。
在本发明构思的某些实施例中,内存管理单元260提供用于选择存储体的扩展地址(“EA”)。扩展地址对应于包括在主存储器中的每个存储体的唯一地址。即,通过在多个存储体上分配每个唯一地址,可以有效地增加主存储器中存储体的数量可由内存控制器控制的。还可以增加存储装置的存储容量。像内存120,内存管理单元260是能够与CPU110快速交换数据的低等待时间,高带宽组件。
主内存控制器140可用于在内存控制器之间交换命令和数据100以及主存储器并且还可以用于控制主存储器的操作。主内存控制器140可以从CPU接收数据110以及来自MMU的地址260以将其提供给主存储器的存储体。
主机I/F150可以使用一个或多个常规理解的协议来操作,所述协议用于将数据,地址和/或命令信息中的至少一个(此后,单独地或共同地,“数据/地址/命令”)从主机传送到内存控制器。例如,主机I/F150可以被配置为与主机通信400通过通用串行总线(USB)协议中的至少一个,一种多媒体卡(MMC)协议,外围部件互连(PCI)协议,PCI-Express(PCI-E)协议,高级技术附件(ATA)协议,串行-ATA协议,并行-ATA协议,小型计算机小型接口(SCSI)协议,增强小型磁盘接口(ESDI)协议和集成驱动电子(IDE)协议。
总线170可用于在CPU之间进行各种通信(接收和/或发送)数据/地址/命令110,内存120,内存管理单元260,主内存控制器140和主机I/F150。例如,总线170可用于传送由CPU提供的数据/地址/命令110和/或内存管理单元260对主内存控制器140。在本发明构思的某些实施例中,总线170可以是在存储器系统的互连部件之间提供信号路径的多层部件(或部件集合)100在这点上,总线170可以按照常规用于在CPU之间交换数据/地址/命令的一个或多个协议操作110,内存120,内存管理单元260,主内存控制器140和/或主机I/F150。在本发明构思的某些实施例中,总线170可以使用SOC目标片上总线协议来访问一个或多个存储器系统组件。例如,总线170可以构成多层高级高性能总线(AHB)或多层高级可扩展接口(AXI)等。
图2A为本发明的另一实施例的内存管理方法的示意性流程图。图2A的内存管理方法,包括:
210:获取内存分配指令,内存分配指令包括待分配内存大小。
应理解,所述内存分配指令可以为堆内存分配指令,也可以为栈内存分配指令,也可以为静态存储区内存分配指令。例如,文中的内存分配指令也可以为上述不同类别的指令的组合。例如,本发明实施例的内存存储空间即包括堆内存存储空间,也包括栈内存存储空间。例如,所述内存分配指令可以为栈内存分配指令和堆内存分配指令,换言之,本发明实施例的存储空间可以为栈内存和堆内存共用的存储空间。例如,获取内存分配指令的部件为内存管理单元(MMU),如图2B所示。例如,内存管理单元260可以随机地获取到栈内存分配指令或堆内存分配指令。例如,内存管理单元260所管理的内存空间可以分为堆内存空间和栈内存空间。例如,当内存管理单元260接收到堆内存分配指令时,相应地,分配堆内存空间中的内存。例如,当内存管理单元260接收到栈内存分配指令时,相应地,从栈内存空间中分配内存,从而提高了索引的效率,换言之,将堆内存空间和栈内存空间进行相对独立的管理,提高了寻址的效率。例如,也可以为堆内存空间和栈内存空间配置同一块内存空间。例如,无论接收到堆内存分配指令还是栈内存分配指令,都在从该同一块内存空间进行内存分配,由于采用了同一块内存空间进行分配,因此充分利用了存储空间,从而提高了存储效率。
还应理解,所述待分配内存大小可以为待分配内存的字节数。所述待分配内存大小也可以为表示待分配内存的字节数(或比特数)的索引。例如,内存管理单元260可以直接获得待分配内存指令中的待分配内存的字节数。也可以,从内存空间大小索引单元获取内存分配指令。所述内存分配指令可以响应原内存分配指令,从内存空间大小索引单元获取。例如,所述内存管理单元260具有内存空间计算模块。例如,所述内存管理单元260具有寻址模块。例如,内存空间分为多个内存块202。例如,内存管理单元260可以管理多个内存块202。例如,内存管理单元260可以管理内存块202的大小。例如,内存管理单元260可以管理每个内存块202的首地址。例如,内管管理单元可以管理每个内存块202的结束地址。例如,内存管理单元260可以管理内存块202的参考地址。上述的参考地址可以为内存块202的首地址和结束地址以外的地址。例如,内存块202所在内存空间的中间部分位置。由于采用了除首地址和结束地址外的地址,因此,提高了对内存空间的表示的效率。
换言之,在同一内存块中,参考地址之前的部分可以用正值表示,而参考地址之后的部分可以采用负值表示。可选地,参考地址之前的部分可以用负值表示,而参考地址之后的部分可以采用正值表示。采用上述的方式,减小了存储地址表示的大小,节省了计算资源,从而可以提高计算效率。例如,不同的内存块可以具有不同的参考地址。例如,多个内存块包括第一内存块和第二内存块,第一内存块采用首地址作为该内存块的地址。第二内存块采用结束地址作为该内存块的地址。例如,第一内存块采用其他的参考地址(例如,中间位置,或三分之一处的位置)作为其地址。例如,多个内存具有不同的存储空间。根据其存储空间确定其地址。例如,第一内存块大于第二内存块,可以采用参考地址作为第一内存块的地址。例如,可以采用首地址作为第二内存块的地址。例如,第一内存块的存储空间小于第二内存块的存储空间。例如,可以将第一内存块的结束地址作为其存储地址。例如,第二内存块包括连续的第一部分和第二部分。第一部分的存储空间等于第一内存块的存储空间,可以将第一部分与第二部分的交界处的地址作为第二内存块的地址。
还应理解,内存管理单元260所管理的多个内存块可以为不同的内存块,从而对不同种类的内存空间进行统一管理,提高了分配或调度的效率。例如,不同的内存块可以具有不同的存储空间。例如,内存管理单元260可以包括内存块管理子单元,对所有的内存块进行管理。应理解,内存管理单元260所执行的操作可以全部或部分由内存块管理子单元进行执行。例如,内存管理单元260可以管理内存块的数量。例如,内存管理单元260可以管理每个内存块的剩余存储空间。例如,内存管理单元260可以包括至少一个指针。例如,至少一个指针包括第一指针和第二指针。所述第一指针用于对堆内存空间进行寻址。例如,第二指针用于对栈内存空间进行寻址。例如,内存管理单元260可以只存储空闲内存块的地址,应理解,该地址可以为上述的任意的地址表示方式所表示的地址,换言之,可以为首地址、结束地址或其他参考地址中的任一者。例如,对于同一堆栈内存管理空间,可以采用一个指针进行寻址,也可以采用第一指针或第二指针进行寻址。例如,对于不同的存储管理空间,即,对于堆内存管理空间和栈内存管理空间,可以采用同一指针进行寻址,也可以采用不同的指针进行寻址,即,可以采用第一指针和第二指针进行寻址。例如,空闲内存块可以为全部存储空间没有被占用的内存块,换言之,可以为空内存块。可选地,空闲内存块可以为部分存储空间没有被占用的内存块。
220:响应内存分配指令,基于待分配内存大小,确定具有连续存储空间的至少一个空闲内存块分别对应的至少一个内存块地址。
应理解,内存块中可以包括多个内存块分片203,如图2B所示。例如,内存块中包括多个内存块分片203,如图2B所示。例如,不同存储块中包括相同数目的内存块分片203。例如,不同存储块中包括不同数据的内存块分片203。例如,不同的存储块中的内存块分片203可以具有相同的存储空间。例如,内存块包括第一内存块和第二存储块。例如,第一存储块具有多个第一内存块分片203,第二内存块具有多个第二存储块分片。例如,多个第一内存块分片203与多个第二内存块分片203具有相同的数目。例如,多个第一内存块分片203与多个第二内存块分片203具有不同的存储空间。例如,每个第一内存块分片203与每个第二内存块分片203具有不同的存储空间。例如,基于目标寻址次序,每个第一内存块分片203具有对应于该第一内存块分片203的第二内存块分片203的存储空间的预定倍数,例如,N(N为大于1的正整数)倍,可选地,每个第二内存块分片203具有对应于该第二内存块分片203的第一内存块分片203的存储空间的预定倍数。例如,内存块中的多个内存块分片203基于目标寻址次序具有依次增大的存储空间。由于同一内存块中的多个内存块分片203的存储空间依次增大,使得当当前内存块分片203的存储空间不足以进行分配时,下一个内存块分片203具有更大概率满足待分配内存大小。从而提高了寻址效率,进而提高了内存管理效率。例如,内存块中的多个内存块分片203基于目标寻址次序具有依次减小的存储空间。由于同一内存块中的多个内存块分片203的存储空间依次减小,使得当当前内存块分片203的存储空间不足以进行分配时,能够直接跳过其他内存块分片203,而对下一内存块寻址。从而,提高了寻址效率。尤其在对传输时延要求较高的物联网场景,寻址效率进一步提高了计算效率,满足了低传输时延的要求。如图2C所示,内存块1、内存块3、内存块5和内存块6为空闲内存块。如图所示,内存块1中包括占用的内存块分片203以及未占用的内存块分片203。
还应理解,内存管理单元260还可以管理内存块分片。例如,内存管理单元260可以管理内存块分片的指针。例如,内存管理单元260可以管理内存块分片的大小。例如,内存管理单元260可以包括内存计算逻辑模块,可以将每个内存块分片的大小与其地址一一对应存储,换言之,将两者一一关联存储。
还应理解,内存管理单元260可以包括内存块分片管理子单元。例如,内存管理单元260所执行的全部或部分操作可以由内存块分片管理子单元执行。例如,内存块分片管理子单元管理至少一个内存块分片指针。所述至少一个内存块分片指针可以分别管理至少一个内存块分片区域。例如,在目标内存块中,内存块分片,交替布置多个内存块分片,换言之,第一内存块分片和第二内存块分片交替布置。例如,可以将多个第一内存块分片形成离散的存储空间视为第一区域。例如,可以将多个第二内存块分片形成的离散的存储空间视为第二区域。例如,可以利用第一内存块分片指针管理第一区域的存储空间。例如,可以利用第二内存块分片指针管理第二区域的存储空间。由此实现了快速的寻址。另外,采用上述的寻址方式,可以进一步减小内存碎片的产生。
作为另一个示例,目标内存块中可以布置有多个第一内存块分片和多个第二内存块分片,第一内存块分片具有第一存储空间,第二内存块分片具有第二存储空间。多个第一内存块分片形成第一区域。多个第二内存块分片形成第二区域。例如,可以利用第一内存块分片指针管理第一区域的存储空间。例如,可以利用第二内存块分片指针管理第二区域的存储空间。由于,不同的内存块分片指针管理不同的存储空间的内存块分片,因此实现了快速的寻址。例如,内存块分片包括8B和16B两种。第一内存块分片指针只管理8B的内存块分片。第二内存块分片指针只管理16B的内存块分片。因此,实现了快速的寻址。还应理解,在另一个示例中,尽管第一内存块分片与第二内存块分片具有不同的存储空间,但并不意味着,第一内存块分片和第二内存块分片之间的排布受到了限定。应理解,上述两种内存块分片之间的排布可以为连续的,也可以为离散的。换言之,上述两者内存块分片之间的排布可以为交替的,也可以为相邻的,本发明实施例对此不作限定。
230:基于至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,分配待分配内存大小的内存空间,得到经过内存分配的至少一个内存块分片的第二偏移地址。
例如,内存块分片指针可以管理偏移地址。偏移地址可以为指示内存块分片数目的索引地址。也可以为内存块分片的存储空间的地址。例如,在当前的内存块中,内存块分片指针所指的内存块分片为第二个内存块分片,则可以将内存块分片偏移地址标记为2。例如,基于寻址顺序,内存块分片指针指向下一个内存块分片,则偏移地址在先前的偏移地址基础上增加1,即,当前的偏移地址为3。例如,在当前内存块中,内存卡分片指针所示的内存块分片距离当前的内存块的首地址或结束地址(或其他参考地址)之间的存储空间为25B。则偏移地址可以为25。应理解,这仅仅作为一个示例,可以将距离参考地址的内存空间之间的范围与偏移地址进行关联或映射。例如,可以进行线性的映射,对于上的例子而言,可以存储其他的索引值来代替25。例如,可以将偏移地址与上述的存储空间进行非线性的映射,使得随着存储空间的增大,偏移地址的增大较不显著。例如,进行平方根映射,当上述的存储空间从4B变化到16B时,偏移地址可以从2变化到4。由于减小了存储的偏移地址的值的大小,从而实现了对偏移地址的存储效率。应理解,偏移地址可以指示存储空间已到达的地址。可替代地,偏移地址也可以指示存储空间已开始的位置。换言之,对于目标内存块的偏移地址可以指示:在目标内存块中,基于目标寻址次序,偏移地址之前的存储空间已经占用。也可以指示偏移地址之后的存储空间已经被占用。
240:利用经过内存分配的至少一个内存块分片的第二偏移地址更新至少一个内存块分片的第一偏移地址。
应理解,内存块分片管理子单元可以包括一下信息:内存块分片的指针、该内存块分片划分块的大小、内存块分片开始和结束的地址、已经分配的内存偏移地址、下一个相同划分的内存块分片的地址中的至少一者。例如,内存块管理子单元可以由数组表示。例如,该数组的大小可以由系统支持的内存块分片大小的种类决定。作为一个示例,可以支持8种不同内存块分片大小。该8种内存块分片的大小可以为4Bytes,8Bytes,16Bytes,32Bytes,64Bytes,128Bytes,256Bytes和512Bytes。例如,在同一内存块中存在上述多种内存块分片。例如,可以内存块的种类数标记为数值。例如,在上述例子中,数组大小就是8。应理解,上述的内存块的数值仅仅是示例性的。例如,内存块分片大小可以2的n次方,也可以为3的n次方,一般性地,可以为m的n次方,其中n是大于1的正整数。例如,内存块分片管理子单元的数量由可用于分配给使用者总内存大小决定。例如,每个内存块分片的大小也可以是固定的,比如设置为1024Bytes,或者其他数值。例如,对于目标内存块而言,最大的内存块分片可以为内存块的1/m。例如,可以基于这种方法通过地址换算出内存块管理子单元对应的索引编号。应理解,上述的配置方案仅仅为示例性的,根据具体的应用需求,可以配置的不同的参数。例如,上述参数包括内存块分片的大小、内存块分片的种类、及用于小内存分配的内存总大小。例如,可以针对每个内存块配置一个内存块分片管理子单元。也可以为多个内存块配置一个内存块分片管理子单元。例如,可以为一个内存块管理子单元配置一个内存块分片管理子单元。换言之,可以采用一个内存块分片管理子单元管理所有内存块的内存块分片。
还应理解,可以将当前的内存块分片的偏移地址与其所在内存块进行关联。例如,可以将目标内存块中的偏移地址与该内存块的首地址或结束地址或参考地址进行关联存储。由于内存管理单元260以目标寻址方式进行寻址时,会针对内存块进行寻址,由此在没有占用更多对寻址过程的存储资源的情况下获得了该内存块的偏移地址。换言之,可以提高了寻址过程的存储空间。
还应理解,可以将偏移地址存储在偏移地址队列中。例如,对于更新当前内存块分片偏移地址,可以更新该偏移地址队列。例如,在分配内存之后,可以清除队列中的之前的未分配的内存块分片。例如,可以清除上述的内存块分片的标识。例如,可以在清除上述内存块分片的标识的同时,保持其他内存块分片在该队列中的次序。例如,可以在清除上述内存块分片的标识的同时,改变其余内存块分片在该队列中的次序。例如,该队列中的内存块分片的次序不一定是基于寻址顺序,也可以基于内存块分片的大小顺序。例如,当若干内存块分片被清除之后,其大小顺序会发生变化,因此在更新队列时,仍然基于内存块分片的大小顺序,保证了每次进行内存分配时,可以寻到队列中最小的内存块或最大的内存块。例如,基于不同的排列顺序,可以基于相应的排列顺序更新上述的内存块分片队列,由此,可以在下次的内存分配时,寻得优选内存块分片。
在本发明实施例的方案中,由于内存块分片具有比内存块更小的存储空间,因此基于内存块对应的内存块分片的偏移地址进行内存空间的管理,有效地解决了内存碎片的问题。
在本发明的另一实现方式中,响应内存分配指令,基于待分配内存大小,确定具有连续存储空间的至少一个空闲内存块分别对应的至少一个内存块地址,包括:响应内存分配指令,确定当前空闲内存块队列;基于待分配内存大小,从空闲内存块队列中确定至少一个内存块地址,其中,所述方法还包括:根据经过内存分配的至少一个内存块分片的第二偏移地址,更新当前空闲内存块队列。
应理解,空闲内存块队列可以与上述的内存块分片队列相似,也可以不同。例如,可以将空内存块定义为空闲内存块。例如,可以将剩余存储空间大于预设阈值的内存块定义为空闲内存块。例如,可以将剩余存储空间的比例大于预设阈值的内存块定义为空闲内存块。例如,预设阈值可以基于待分配内存大小的数量级或平均值。例如,对于特定的计算任务,对内存的要求不同。例如,可以针对不同的计算任务来设定该阈值。换言之,存在剩余存储空间的内存块不一定被定义为空闲内存块。例如,剩余存储空间小于预定阈值时,如果将其定义为空闲内存块,将其加入空闲内存块队列,则被分配内存的概率会减小。因此,采用上述方式可以进一步提高存储效率。
在本发明的另一实现方式中,基于待分配内存大小,从空闲内存块队列中确定至少一个内存块地址,包括:将内存块指针指向空闲内存块队列中的当前空闲内存块的首地址;如果待分配内存大小不大于当前空闲内存块的空间大小,则将目标内存块的首地址确定为至少一个内存块地址。
例如,如图3所示,当内存块1中的区域不足以分配时,换言之,当待分配内存大小大于内存块1中的剩余区域时,将内存块指针移向空闲内存块队列中的下一个内存块。例如,每次寻找到空闲内存块时,计算其剩余空间的大小,然后判断空闲的空间与下一个内存块是否连续。如果确定该空间仅仅为离散的区域,并且存储空间小于待分配内存大小,则放弃该内存块,直接移向下一内存块。例如,如果判定该空间为有可能与下一个内存块连续,则移向下一内存块。例如,直至寻找到连续的满足待存储内存大小的内存空间,如图4所示。
另外,如图5所示,当确定内存块5中的剩余内存块分片的空间不足时,直接放弃之前记录的所有内存块,从新开始寻址。如果内存块分片的剩余空间刚好满足待分配内存大小,则进行内存分配。
可替代地,可以将空闲内存块与空内存块分别建立第一队列和第二队列。例如,直接采用作为空内存块队列的第二队列。由此,可以节省计算资源,换言之,提高了计算效率。
在本发明的另一实现方式中,如果待分配内存大小大于目标空闲内存块的空间大小,则记录当前空闲内存块的首地址,并且将内存块指针指向下一内存块的首地址,以便将记录的所有的空闲内存块的首地址确定为至少一个内存地址。
在本发明的另一实现方式中,基于至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,分配待分配内存大小的内存空间,得到经过内存分配的至少一个内存块分片的第二偏移地址,包括:通过移动用于管理所述至少一个内存块地址的内存块指针、以及管理所述至少一个内存块分片的内存块分片指针,基于所述至少一个内存块分片的第一偏移地址,分配符合所述待分配内存大小的内存空间,确定所述至少一个内存块分片的第二偏移地址,其中,如果当前空闲内存块未完成分配,则移动所述内存块分配指针;如果当前空闲内存块已完成分配,则保持所述内存块指针,并且移动相应的内存块分片指针。
例如,针对每个内存块地址,将内存块分片指针指向该内存块地址对应的当前内存块分片偏移地址;如果未完成分配待分配内存大小,则分配当前内存块分片偏移地址对应的内存空间大小,并且将内存块分片指针指向该内存块地址所对应的下一内存块分片偏移地址。
例如,针对连续的至少一个内存块地址中的首地址和末地址。另外,确定该首地址和末地址各自对应的内存块的内存块分片偏移地址。基于上述两个内存块分片偏移地址,生成内存分配返回指令。例如,可以基于上述首地址和末地址,将其余的内存块分片的第二偏移地址配置为最大偏移地址。由于直接基于首地址和末地址的偏移地址确定了分配的内存空间,从而提高了内存分配效率。
例如,针对连续的至少一个内存块地址中的首地址和末地址。另外,确定该首地址和末地址各自对应的内存块的内存块分片偏移地址。例如,当首地址(连续空闲的起始内存块的内存块地址)和末地址(连续内存块的结束内存块的内存块地址)相同(指示待分配内存的大小小于该内存块的大小)时,计算该内存块地址的内存块分片的偏移地址。当首地址和末地址不同的地址(指示待分配内存的大小大于该内存块的大小)时,直接将该首地址和末地址之间的内存空间进行分配,例如,返回首地址和末地址之间的内存空间。由于在待分配内存较小时,基于内存块分片的偏移地址分配,在待分配内存较大时,基于内存块地址进行分配,使得即提高了内存分配效率,又减少了内存碎片的产生。
在本发明的另一实现方式中,每个内存块中包括第一内存块分片和第二内存块分片,第一内存块分片和第二内存块分片具有不同的存储空间。
如图6所示,内存块5具有不同的内存块分片大小。例如,内存块1也具有不同的内存块分片大小。例如,内存块5和内存块1中的内存块分片可以全部不相同,也可以部分不相同。应理解,图6的示例仅仅是示例性的,本发明实施例对此不做限定。
在本发明的另一实现方式中,每个内存块包括连续的多个内存块分片,其中,基于第一寻址顺序,每个内存块分片的存储空间为其上一内存块分片的存储空间的N倍,或者,每个内存块分片的存储空间为其下一内存块分片的存储空间的N倍,其中,N为大于1的正整数。
如图7所示,内存块5中的内存块分片呈现出第一倍数关系。例如,内存块2中的内存块分片呈现成第二倍数关系。应理解,上述第一倍数和第二倍数可以相同,也可以不同。应理解,图7的例子仅仅为示例性的,本发明实施例对此不作限定。
在本发明的另一实现方式中,每个内存块包括连续的多个内存块分片,其中,基于第二寻址顺序,每个内存块分片的存储空间不小于其上一内存块分片的存储空间。
如图8所示,内存块3中的内存块分片可以基于寻址顺序呈现不同的大小排列顺序。例如,可以从大到小,也可以从小到大。例如,可以从大到小再到大。例如,可以从小到大再到小。本发明实施例对此不作限定。
图9A为本发明的另一实施例的内存管理方法的示意性流程图。图9A的内存管理方法,包括:
910:内存块管理子单元获取第一内存分配指令,第一内存分配指令包括待分配内存大小;
920:内存块管理子单元响应第一内存分配指令,基于待分配内存大小,确定具有连续存储空间的至少一个空闲内存块分别对应的至少一个内存块地址;
930:内存块分片管理子单元响应内存块管理子单元发送的寻址指令,确定至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,
940:内存块分片管理子单元响应内存块管理子单元发送的包括待分配内存大小的第二内存分配指令,分配待分配内存大小的内存空间,得到经过内存分配的至少一个内存块分片的第二偏移地址;
950:内存块分片管理子单元响应内存块管理子单元发送的偏移地址更新指令,利用经过内存分配的至少一个内存块分片的第二偏移地址更新至少一个内存块分片的第一偏移地址。
图9B为本发明的另一实施例的内存管理方法的示意图。如图9B所示,内存块管理子单元261与内存块分片管理子单元262进行协同的内存管理。应理解,当用户申请内存的时候,首先根据用户申请的内存大小换算得到内存块管理子单元。如果已经有释放后的内存块分片可以使用,则从内存块分片中分配内存空间,并更新空闲数据块数量。如果空闲内存块列表里面没有直接可以使用的,则从内存块分配新的内存块分片,并更新内存块分片的已经使用的偏移地址。如果对应大小的内存块分片不存在,则从堆空间分配出对应的内存空间放入连表中供使用。
在本发明实施例的方案中,由于内存块分片具有比内存块更小的存储空间,因此基于内存块对应的内存块分片的偏移地址进行内存空间的管理,有效地解决了内存碎片的问题。
换言之,在使用本发明的方法时,由于内存空间被布置多个内存块,并且每个内存块至少一个内存块分片。当需要申请某种内存大小空间时是从对应该内存大小的内存块或内存块分片中确定,而不是只以内存块的大小为单位分配,更不是在内存空间中随机确定,因此不会出现由于小内存的频繁申请和释放导致的内存碎片出现。
在本发明的另一实现方式中,内存管理单元可以根据服务类型、设备类型、操作系统类型等等信息动态调整该内存块或内存块分片的排布规则。例如,内存管理单元还可以包括内存块子单元和/或内存块分片划分子单元。另外,内存管理单元还可以具有上述内存块子单元和/或内存块分片划分子单元的功能。另外,本发明的内存块和/内存块分片可以具有内存空间划分模块的开发接口,例如,通过开发设备采用诸如汇编语言或C语言对内存空间进行配置。另外,上述的内存块子单元和/或内存块分片划分子单元与也可以采用开发设备进行配置,例如,上述的子单元可以实现诸如为ROM(read only memory,只读存储器)的非易失性存储器。另外,上述的内存空间划分模块也可以被配置为动态进行内存空间划分。
另外,基于对内存的目标寻址顺序,每个内存块分片的存储空间为其上一内存块分片的存储空间的N倍,或者,每个内存块分片的存储空间为其下一内存块分片的存储空间的N倍,其中,N为大于1的正整数。例如,上述的N值可以输入到上述的内存块子单元和/或内存块分片划分子单元中,或者上述的开发设备中,以便配置相应的内存块和/内存块分片的大小。例如,可以基于操作系统的类型来确定N的值。例如,可以基于操作系统的类型来确定内存块的大小。例如,上述的示例中的最小内存块的大小可以为X,其他的内存块的大小可以为2X、4X、8X等。例如,上述的内存管理单元可以接收操作系统的内存分配指令,例如,通过处理器的指令集接收内存分配指令。例如,上述的内存管理单元可以根据上述的指令集或操作系统获取操作系统的类型、版本信息等。可以根据操作系统的版本信息或操作系统的类型确定上述的X的值以及N的值。例如,还可以根据指令集的类型确定上述的X的值或N的值。应理解,上述的配置方式仅仅为示例性的,多个内存块和/或多个内存块分片的大小与可以不具有上述的倍数关系,换言之,多个内存块和/多个内存块分片的大小可以基于操作系统或指令集被配置。
另外,对于上述的不同操作系统类型,可以配置不同的内存块的大小。或者,可以针对不同的操作系统的类型,配置相同的内存块大小和不同的内存块分片的大小。或者,可以针对不同的操作系统的类型,配置不同的内存块大小,并且配置相同的内存块分片的大小。例如,相比于桌面操作系统和服务器操作系统,针对实时操作系统,可以配置更小的内存块分片,以便进一步减小内存碎片的产生。例如,相比于桌面操作系统和服务器操作系统,针对实时操作系统可以配置相同的内存块分片大小,以便有利于简化内存管理算法,减小内存块分片管理单元的逻辑计算开销。例如,可以配置不同的内存块的大小,从而在保证内存块分片管理单元的精简算法的同时减少大的内存碎片的产生。
另外,可以根据设备类型来确定内存块和/内存块分片的划分。例如,对于不同的物联网设备,可以配置不同的内存块的大小。或者,可以针对不同的物联网设备的类型,配置相同的内存块大小和不同的内存块分片的大小。或者,可以针对不同的操作系统的类型,配置不同的内存块大小,并且配置相同的内存块分片的大小。类似地,相比于桌面设备、移动设备而言,智能设备或监测设备的移动性要求较低,数量上的要求较高,可以为每个内存块配置较多的内存块分片和/或为多个内存块分片配置不同的大小,从而节省了设备的成本。
例如,针对监测设备,可以配置更小的内存块分片,以便充分利用该设备中配置的内存空间。例如,对于智能设备,可以配置不同大小的内存块分片,以便适用于该智能设备的不同场景的数据处理,同时采用本发明实施例的方式能够减小内存碎片。换言之,以更低的成本获得更大的内存空间。
另外,通过本发明实施例的内存管理算法通过数组索引、内存地址以及内存大小的映射,避免了在全管理空间检索带来的开销。最后该内存算法所需要的内存空间是在使用时才分配,并不会预分配很大内存,导致其他功能控件的内存紧张。
图10为本发明的另一实施例的内存管理方法的示意性流程图。图10的内存管理方法包括:
1010:获取内存释放指令,内存释放指令包括待释放内存大小。
1020:响应内存释放指令,基于待释放内存大小,确定具有连续存储空间的至少一个占用内存块分别对应的至少一个内存块地址。
1030:基于至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,释放待释放内存大小的内存空间,得到经过内存释放的至少一个内存块分片的第二偏移地址。
1040:利用经过内存释放的至少一个内存块分片的第二偏移地址更新至少一个内存块分片的第一偏移地址。
应理解,内存块中可以包括多个内存块分片。例如,不同存储块中包括相同数目的内存块分片。例如,不同存储块中包括不同数据的内存块分片。例如,不同的存储块中的内存块分片可以具有相同的存储空间。例如,内存块包括第一内存块和第二存储块。例如,第一存储块具有多个第一内存块分片,第二内存块具有多个第二存储块分片。例如,多个第一内存块分片与多个第二内存块分片具有相同的数目。例如,多个第一内存块分片与多个第二内存块分片具有不同的存储空间。例如,每个第一内存块分片与每个第二内存块分片具有不同的存储空间。例如,基于目标寻址次序,每个第一内存块分片具有对应于该第一内存块分片的第二内存块分片的存储空间的预定倍数,例如,N(N为大于1的正整数)倍,可选地,每个第二内存块分片具有对应于该第二内存块分片的第一内存块分片的存储空间的预定倍数。例如,内存块中的多个内存块分片基于目标寻址次序具有依次增大的存储空间。由于同一内存块中的多个内存块分片的存储空间依次增大,使得当当前内存块分片的存储空间不足以进行分配时,下一个内存块分片具有更大概率满足待分配内存大小。从而提高了寻址效率,进而提高了内存管理效率。例如,内存块中的多个内存块分片基于目标寻址次序具有依次减小的存储空间。由于同一内存块中的多个内存块分片的存储空间依次减小,使得当当前内存块分片的存储空间不足以进行分配时,能够直接跳过其他内存块分片,而对下一内存块寻址。从而,提高了寻址效率。尤其在对传输时延要求较高的物联网场景,寻址效率进一步提高了计算效率,满足了低传输时延的要求。
在本发明实施例的方案中,由于内存块分片具有比内存块更小的存储空间,因此基于内存块对应的内存块分片的偏移地址进行内存空间的管理,有效地解决了内存碎片的问题。
例如,当用户释放内存的时候,首先根据释放内存的地址计算出内存块分片管理子单元的索引,拿到索引后找到对应的内存块分片块,将该内存块分片块加入到空闲内存块队列中,并更新剩余空闲内存块数量。
图11为本发明的另一实施例的内存管理方法的示意性流程图。图11的内存管理方法包括:
1110:内存块管理子单元获取第一内存释放指令,第一内存释放指令包括待释放内存大小。
1120:内存块管理子单元响应第一内存释放指令,基于待释放内存大小,确定具有连续存储空间的至少一个占用内存块分别对应的至少一个内存块地址。
1130:内存块分片管理子单元响应内存块管理子单元发送的寻址指令,确定至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址。
1140:内存块分片管理子单元响应内存块管理子单元发送的包括待释放内存大小的第二内存释放指令,释放待释放内存大小的内存空间,得到经过内存释放的至少一个内存块分片的第二偏移地址。
1150:内存块分片管理子单元响应内存块管理子单元发送的偏移地址更新指令,利用经过内存释放的至少一个内存块分片的第二偏移地址更新至少一个内存块分片的第一偏移地址。
在本发明实施例的方案中,由于内存块分片具有比内存块更小的存储空间,因此基于内存块对应的内存块分片的偏移地址进行内存空间的管理,有效地解决了内存碎片的问题。
图12为本发明的另一实施例的内存管理单元的示意性框图。图12的内存管理单元包括:
获取模块1210,获取内存分配指令,内存分配指令包括待分配内存大小;
寻址模块1220,响应内存分配指令,基于待分配内存大小,确定具有连续存储空间的至少一个空闲内存块分别对应的至少一个内存块地址;
内存分配模块1230,基于至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,分配待分配内存大小的内存空间,得到经过内存分配的至少一个内存块分片的第二偏移地址;
地址更新模块1240,利用经过内存分配的至少一个内存块分片的第二偏移地址更新至少一个内存块分片的第一偏移地址。
应理解,内存块中可以包括多个内存块分片,如图2B所示。例如,内存块中包括多个内存块分片,如图2B所示。例如,不同存储块中包括相同数目的内存块分片。例如,不同存储块中包括不同数据的内存块分片。例如,不同的存储块中的内存块分片可以具有相同的存储空间。例如,内存块包括第一内存块和第二存储块。例如,第一存储块具有多个第一内存块分片,第二内存块具有多个第二存储块分片。例如,多个第一内存块分片与多个第二内存块分片具有相同的数目。例如,多个第一内存块分片与多个第二内存块分片具有不同的存储空间。例如,每个第一内存块分片与每个第二内存块分片具有不同的存储空间。例如,基于目标寻址次序,每个第一内存块分片具有对应于该第一内存块分片的第二内存块分片的存储空间的预定倍数,例如,N(N为大于1的正整数)倍,可选地,每个第二内存块分片具有对应于该第二内存块分片的第一内存块分片的存储空间的预定倍数。例如,内存块中的多个内存块分片基于目标寻址次序具有依次增大的存储空间。由于同一内存块中的多个内存块分片的存储空间依次增大,使得当当前内存块分片的存储空间不足以进行分配时,下一个内存块分片具有更大概率满足待分配内存大小。从而提高了寻址效率,进而提高了内存管理效率。例如,内存块中的多个内存块分片基于目标寻址次序具有依次减小的存储空间。由于同一内存块中的多个内存块分片的存储空间依次减小,使得当当前内存块分片的存储空间不足以进行分配时,能够直接跳过其他内存块分片,而对下一内存块寻址。从而,提高了寻址效率。尤其在对传输时延要求较高的物联网场景,寻址效率进一步提高了计算效率,满足了低传输时延的要求。如图2C所示,内存块1、内存块3、内存块5和内存块6为空闲内存块。如图所示,内存块1中包括占用的内存块分片以及未占用的内存块分片。
在本发明实施例的方案中,由于内存块分片具有比内存块更小的存储空间,因此基于内存块对应的内存块分片的偏移地址进行内存空间的管理,有效地解决了内存碎片的问题。
在本发明的另一实现方式中,寻址模块具体用于:响应内存分配指令,确定当前空闲内存块队列;基于待分配内存大小,从空闲内存块队列中确定至少一个内存块地址,其中,所述内存管理单元还包括队列更新模块:根据经过内存分配的至少一个内存块分片的第二偏移地址,更新当前空闲内存块队列。
在本发明的另一实现方式中,寻址模块具体用于:将内存块指针指向空闲内存块队列中的当前空闲内存块的首地址;如果待分配内存大小不大于当前空闲内存块的空间大小,则将目标内存块的首地址确定为至少一个内存块地址。
在本发明的另一实现方式中,如果待分配内存大小大于目标空闲内存块的空间大小,则记录当前空闲内存块的首地址,并且将内存块指针指向下一内存块的首地址,以便将记录的所有的空闲内存块的首地址确定为至少一个内存地址。
在本发明的另一实现方式中,内存分配模块具体用于:针对每个内存块地址,将内存块分片指针指向该内存块地址对应的当前内存块分片偏移地址;如果未完成分配待分配内存大小,则分配当前内存块分片偏移地址对应的内存空间大小,并且将内存块分片指针指向该内存块地址所对应的下一内存块分片偏移地址。
在本发明的另一实现方式中,每个内存块中包括第一内存块分片和第二内存块分片,第一内存块分片和第二内存块分片具有不同的存储空间。
在本发明的另一实现方式中,每个内存块包括连续的多个内存块分片,其中,基于第一寻址顺序,每个内存块分片的存储空间为其上一内存块分片的存储空间的N倍,或者,每个内存块分片的存储空间为其下一内存块分片的存储空间的N倍,其中,N为大于1的正整数。
在本发明的另一实现方式中,每个内存块包括连续的多个内存块分片,其中,基于第二寻址顺序,每个内存块分片的存储空间不小于其上一内存块分片的存储空间。
图13为本发明的另一实施例的内存管理单元的示意性框图。图13的内存管理单元包括:
内存块管理子单元1310,被配置为:获取第一内存分配指令,第一内存分配指令包括待分配内存大小;响应第一内存分配指令,基于待分配内存大小,确定具有连续存储空间的至少一个空闲内存块分别对应的至少一个内存块地址;
内存块分片管理子单元1320,被配置为:响应内存块管理子单元发送的寻址指令,确定至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,
响应内存块管理子单元发送的包括待分配内存大小的第二内存分配指令,分配待分配内存大小的内存空间,得到经过内存分配的至少一个内存块分片的第二偏移地址;
响应内存块管理子单元发送的偏移地址更新指令,利用经过内存分配的至少一个内存块分片的第二偏移地址更新至少一个内存块分片的第一偏移地址。
本实施例的装置用于实现前述多个方法实施例中相应的方法,并具有相应的方法实施例的有益效果,在此不再赘述。此外,本实施例的装置中的各个模块的功能实现均可参照前述方法实施例中的相应部分的描述,在此亦不再赘述。
图14为本发明的另一实施例的内存管理单元的示意性框图。图14的内存管理单元包括:
获取模块1410,获取内存释放指令,内存释放指令包括待释放内存大小;
寻址模块1420,响应内存释放指令,基于待释放内存大小,确定具有连续存储空间的至少一个占用内存块分别对应的至少一个内存块地址;
内存释放模块1430,基于至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,释放待释放内存大小的内存空间,得到经过内存释放的至少一个内存块分片的第二偏移地址;
地址更新模块1440,利用经过内存释放的至少一个内存块分片的第二偏移地址更新至少一个内存块分片的第一偏移地址。
本实施例的装置用于实现前述多个方法实施例中相应的方法,并具有相应的方法实施例的有益效果,在此不再赘述。此外,本实施例的装置中的各个模块的功能实现均可参照前述方法实施例中的相应部分的描述,在此亦不再赘述。
图15为本发明的另一实施例的内存管理单元的示意性框图。图15的内存管理单元包括:
内存块管理子单元1510,被配置为:获取第一内存释放指令,第一内存释放指令包括待释放内存大小;响应第一内存释放指令,基于待释放内存大小,确定具有连续存储空间的至少一个占用内存块分别对应的至少一个内存块地址;
内存块分片管理子单元1520,被配置为:响应内存块管理子单元发送的寻址指令,确定至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,
响应内存块管理子单元发送的包括待释放内存大小的第二内存释放指令,释放待释放内存大小的内存空间,得到经过内存释放的至少一个内存块分片的第二偏移地址;
响应内存块管理子单元发送的偏移地址更新指令,利用经过内存释放的至少一个内存块分片的第二偏移地址更新至少一个内存块分片的第一偏移地址。
本实施例的装置用于实现前述多个方法实施例中相应的方法,并具有相应的方法实施例的有益效果,在此不再赘述。此外,本实施例的装置中的各个模块的功能实现均可参照前述方法实施例中的相应部分的描述,在此亦不再赘述。
图16为本发明的另一实施例的内存管理方法的示意性流程图。图16的内存管理方法,应用于安装有实时操作系统的物联网设备,图16的方法包括:
1610:获取所述实时操作系统的内存分配指令,所述内存分配指令包括待分配内存大小。
1620:响应所述内存分配指令,基于所述待分配内存大小,确定具有连续存储空间的至少一个空闲内存块分别对应的至少一个内存块地址。
1630:基于所述至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,分配符合所述待分配内存大小的内存空间,得到经过内存分配的至少一个内存块分片的第二偏移地址,并且利用所述经过内存分配的至少一个内存块分片的第二偏移地址,更新所述至少一个内存块分片的第一偏移地址,以便向所述实时操作系统返回内存空间分配结果。
图17为本发明的另一实施例的物联网设备的示意性框图。图17的物联网设备,应用于安装有实时操作系统的物联网设备,包括:
处理器1710,被配置为:读取所述实时操作系统的内存申请指令,生成内存分配指令;以及
内存管理单元1720,被配置为:从所述处理器获取所述内存分配指令,所述内存分配指令包括待分配内存大小;
响应所述内存分配指令,基于所述待分配内存大小,确定具有连续存储空间的至少一个空闲内存块分别对应的至少一个内存块地址;
基于所述至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,分配符合所述待分配内存大小的内存空间,得到经过内存分配的至少一个内存块分片的第二偏移地址,并且利用所述经过内存分配的至少一个内存块分片的第二偏移地址,更新所述至少一个内存块分片的第一偏移地址,以便向所述处理器返回内存空间分配结果。
应理解,上述的处理器和内存管理单元可以通过内部总线或外部总线连接。物理网设备可以包括内存。内存包括所述至少一个空闲内存块。应理解,内存中可以加载有上述的实时操作系统。另外,所述内存可以包括第一内存和第二内存。第一内存包括所述至少一个空闲内存块。第二内存存储有上述的实时操作系统。
在本发明实施例中所使用的表述“第一”、“第二”、“所述第一”或“所述第二”可修饰各种部件而与顺序和/或重要性无关,但是这些表述不限制相应部件。以上表述仅配置为将元件与其它元件区分开的目的。例如,第一用户设备和第二用户设备表示不同的用户设备,虽然两者均是用户设备。例如,在不背离本公开的范围的前提下,第一元件可称作第二元件,类似地,第二元件可称作第一元件。
当一个元件(例如,第一元件)称为与另一元件(例如,第二元件)“(可操作地或可通信地)联接”或“(可操作地或可通信地)联接至”另一元件(例如,第二元件)或“连接至”另一元件(例如,第二元件)时,应理解为该一个元件直接连接至该另一元件或者该一个元件经由又一个元件(例如,第三元件)间接连接至该另一个元件。相反,可理解,当元件(例如,第一元件)称为“直接连接”或“直接联接”至另一元件(第二元件)时,则没有元件(例如,第三元件)插入在这两者之间。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (17)
1.一种内存管理方法,包括:
获取内存分配指令,所述内存分配指令包括待分配内存大小;
响应所述内存分配指令,基于所述待分配内存大小,确定具有连续存储空间的至少一个空闲内存块分别对应的至少一个内存块地址;
基于所述至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,分配符合所述待分配内存大小的内存空间,得到经过内存分配的至少一个内存块分片的第二偏移地址;
利用所述经过内存分配的至少一个内存块分片的第二偏移地址,更新所述至少一个内存块分片的第一偏移地址。
2.根据权利要求1所述的方法,其中,所述响应内存分配指令,基于所述待分配内存大小,确定具有连续存储空间的至少一个空闲内存块分别对应的至少一个内存块地址,包括:
响应内存分配指令,确定当前空闲内存块队列;
基于所述待分配内存大小,从所述空闲内存块队列中确定所述至少一个内存块地址,其中,所述方法还包括:
根据所述经过内存分配的至少一个内存块分片的第二偏移地址,更新所述当前空闲内存块队列。
3.根据权利要求2所述的方法,其中,基于所述待分配内存大小,从所述空闲内存块队列中确定所述至少一个内存块地址,包括:
将内存块指针指向所述空闲内存块队列中的当前空闲内存块的首地址;
如果所述待分配内存大小不大于所述当前空闲内存块的空间大小,则将所述目标内存块的首地址确定为所述至少一个内存块地址。
4.根据权利要求3所述的方法,其中,如果所述待分配内存大小大于所述目标空闲内存块的空间大小,则记录所述当前空闲内存块的首地址,并且将所述内存块指针指向下一内存块的首地址,以便将记录的所有的空闲内存块的首地址确定为所述至少一个内存地址。
5.根据权利要求1所述的方法,其中,所述基于所述至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,分配符合所述待分配内存大小的内存空间,得到经过内存分配的至少一个内存块分片的第二偏移地址,包括:
通过移动用于管理所述至少一个内存块地址的内存块指针、以及管理所述至少一个内存块分片的内存块分片指针,基于所述至少一个内存块分片的第一偏移地址,分配符合所述待分配内存大小的内存空间,确定所述至少一个内存块分片的第二偏移地址,
其中,如果当前空闲内存块未完成分配,则移动所述内存块分配指针;如果当前空闲内存块已完成分配,则保持所述内存块指针,并且移动相应的内存块分片指针。
6.根据权利要求1所述的方法,其中,每个内存块中包括第一内存块分片和第二内存块分片,所述第一内存块分片和所述第二内存块分片具有不同的存储空间。
7.根据权利要求1所述的方法,其中,每个内存块包括连续的多个内存块分片,其中,基于第一寻址顺序,每个内存块分片的存储空间为其上一内存块分片的存储空间的N倍,或者,每个内存块分片的存储空间为其下一内存块分片的存储空间的N倍,其中,N为大于1的正整数。
8.根据权利要求1所述的方法,其中,每个内存块包括连续的多个内存块分片,其中,基于第二寻址顺序,每个内存块分片的存储空间不小于其上一内存块分片的存储空间。
9.一种内存管理方法,包括:
内存块管理子单元获取第一内存分配指令,所述第一内存分配指令包括待分配内存大小;
所述内存块管理子单元响应所述第一内存分配指令,基于所述待分配内存大小,确定具有连续存储空间的至少一个空闲内存块分别对应的至少一个内存块地址;
内存块分片管理子单元响应所述内存块管理子单元发送的寻址指令,确定所述至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址;
所述内存块分片管理子单元响应所述内存块管理子单元发送的包括所述待分配内存大小的第二内存分配指令,分配符合所述待分配内存大小的内存空间,得到经过内存分配的至少一个内存块分片的第二偏移地址;
所述内存块分片管理子单元响应所述内存块管理子单元发送的偏移地址更新指令,利用所述经过内存分配的至少一个内存块分片的第二偏移地址更新所述至少一个内存块分片的第一偏移地址。
10.一种内存管理方法,包括:
获取内存释放指令,所述内存释放指令包括待释放内存大小;
响应内存释放指令,基于所述待释放内存大小,确定具有连续存储空间的至少一个占用内存块分别对应的至少一个内存块地址;
基于所述至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,释放符合所述待释放内存大小的内存空间,得到经过内存释放的至少一个内存块分片的第二偏移地址;
利用所述经过内存释放的至少一个内存块分片的第二偏移地址更新所述至少一个内存块分片的第一偏移地址。
11.一种内存管理方法,包括:
内存块管理子单元获取第一内存释放指令,所述第一内存释放指令包括待释放内存大小;
所述内存块管理子单元响应所述第一内存释放指令,基于所述待释放内存大小,确定具有连续存储空间的至少一个占用内存块分别对应的至少一个内存块地址;
内存块分片管理子单元响应所述内存块管理子单元发送的寻址指令,确定所述至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址;
所述内存块分片管理子单元响应所述内存块管理子单元发送的包括所述待释放内存大小的第二内存释放指令,释放符合所述待释放内存大小的内存空间,得到经过内存释放的至少一个内存块分片的第二偏移地址;
所述内存块分片管理子单元响应所述内存块管理子单元发送的偏移地址更新指令,利用所述经过内存释放的至少一个内存块分片的第二偏移地址更新所述至少一个内存块分片的第一偏移地址。
12.一种内存管理单元,包括:
获取模块,获取内存分配指令,所述内存分配指令包括待分配内存大小;
寻址模块,响应所述内存分配指令,基于所述待分配内存大小,确定具有连续存储空间的至少一个空闲内存块分别对应的至少一个内存块地址;
内存分配模块,基于所述至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,分配符合所述待分配内存大小的内存空间,得到经过内存分配的至少一个内存块分片的第二偏移地址;
地址更新模块,利用所述经过内存分配的至少一个内存块分片的第二偏移地址更新所述至少一个内存块分片的第一偏移地址。
13.一种内存管理单元,包括:
内存块管理子单元,被配置为:获取第一内存分配指令,所述第一内存分配指令包括待分配内存大小;响应所述第一内存分配指令,基于所述待分配内存大小,确定具有连续存储空间的至少一个空闲内存块分别对应的至少一个内存块地址;
内存块分片管理子单元,被配置为:响应所述内存块管理子单元发送的寻址指令,确定所述至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,
响应所述内存块管理子单元发送的包括所述待分配内存大小的第二内存分配指令,分配符合所述待分配内存大小的内存空间,得到经过内存分配的至少一个内存块分片的第二偏移地址;
响应所述内存块管理子单元发送的偏移地址更新指令,利用所述经过内存分配的至少一个内存块分片的第二偏移地址更新所述至少一个内存块分片的第一偏移地址。
14.一种内存管理单元,包括:
获取模块,获取内存释放指令,所述内存释放指令包括待释放内存大小;
寻址模块,响应内存释放指令,基于所述待释放内存大小,确定具有连续存储空间的至少一个占用内存块分别对应的至少一个内存块地址;
内存释放模块,基于所述至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,释放符合所述待释放内存大小的内存空间,得到经过内存释放的至少一个内存块分片的第二偏移地址;
地址更新模块,利用所述经过内存释放的至少一个内存块分片的第二偏移地址更新所述至少一个内存块分片的第一偏移地址。
15.一种内存管理单元,包括:
内存块管理子单元,被配置为:获取第一内存释放指令,所述第一内存释放指令包括待释放内存大小;响应所述第一内存释放指令,基于所述待释放内存大小,确定具有连续存储空间的至少一个占用内存块分别对应的至少一个内存块地址;
内存块分片管理子单元,被配置为:响应所述内存块管理子单元发送的寻址指令,确定所述至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址;
响应所述内存块管理子单元发送的包括所述待释放内存大小的第二内存释放指令,释放符合所述待释放内存大小的内存空间,得到经过内存释放的至少一个内存块分片的第二偏移地址;
响应所述内存块管理子单元发送的偏移地址更新指令,利用所述经过内存释放的至少一个内存块分片的第二偏移地址更新所述至少一个内存块分片的第一偏移地址。
16.一种内存管理方法,应用于安装有实时操作系统的物联网设备,所述方法包括:
获取所述实时操作系统的内存分配指令,所述内存分配指令包括待分配内存大小;
响应所述内存分配指令,基于所述待分配内存大小,确定具有连续存储空间的至少一个空闲内存块分别对应的至少一个内存块地址;
基于所述至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,分配符合所述待分配内存大小的内存空间,得到经过内存分配的至少一个内存块分片的第二偏移地址,并且利用所述经过内存分配的至少一个内存块分片的第二偏移地址,更新所述至少一个内存块分片的第一偏移地址,以便向所述实时操作系统返回内存空间分配结果。
17.一种物联网设备,应用于安装有实时操作系统的物联网设备,包括:
处理器,被配置为:读取所述实时操作系统的内存申请指令,生成内存分配指令;以及
内存管理单元,被配置为:从所述处理器获取所述内存分配指令,所述内存分配指令包括待分配内存大小;
响应所述内存分配指令,基于所述待分配内存大小,确定具有连续存储空间的至少一个空闲内存块分别对应的至少一个内存块地址;
基于所述至少一个内存块地址当前分别对应的至少一个内存块分片的第一偏移地址,分配符合所述待分配内存大小的内存空间,得到经过内存分配的至少一个内存块分片的第二偏移地址,并且利用所述经过内存分配的至少一个内存块分片的第二偏移地址,更新所述至少一个内存块分片的第一偏移地址,以便向所述处理器返回内存空间分配结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010291994.2A CN113535597B (zh) | 2020-04-14 | 2020-04-14 | 内存管理方法、内存管理单元和物联网设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010291994.2A CN113535597B (zh) | 2020-04-14 | 2020-04-14 | 内存管理方法、内存管理单元和物联网设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113535597A true CN113535597A (zh) | 2021-10-22 |
CN113535597B CN113535597B (zh) | 2024-05-03 |
Family
ID=78119981
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010291994.2A Active CN113535597B (zh) | 2020-04-14 | 2020-04-14 | 内存管理方法、内存管理单元和物联网设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113535597B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117573377A (zh) * | 2024-01-15 | 2024-02-20 | 摩尔线程智能科技(北京)有限责任公司 | 内存管理方法、装置、设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130185337A1 (en) * | 2012-01-18 | 2013-07-18 | Cloudera, Inc. | Memory allocation buffer for reduction of heap fragmentation |
US20130227236A1 (en) * | 2011-03-18 | 2013-08-29 | Fusion-Io, Inc. | Systems and methods for storage allocation |
CN103389945A (zh) * | 2013-07-05 | 2013-11-13 | 杭州华三通信技术有限公司 | 一种内存管理的方法及装置 |
CN103970680A (zh) * | 2014-04-28 | 2014-08-06 | 上海华为技术有限公司 | 内存管理方法、装置及嵌入式系统 |
US20140372726A1 (en) * | 2013-06-17 | 2014-12-18 | Samsung Electronics Co., Ltd. | Memory management method and apparatus |
CN105469173A (zh) * | 2014-08-19 | 2016-04-06 | 西安慧泽知识产权运营管理有限公司 | 一种静态内存进行优化管理的方法 |
CN107665146A (zh) * | 2016-07-29 | 2018-02-06 | 华为技术有限公司 | 内存管理装置和方法 |
-
2020
- 2020-04-14 CN CN202010291994.2A patent/CN113535597B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130227236A1 (en) * | 2011-03-18 | 2013-08-29 | Fusion-Io, Inc. | Systems and methods for storage allocation |
US20130185337A1 (en) * | 2012-01-18 | 2013-07-18 | Cloudera, Inc. | Memory allocation buffer for reduction of heap fragmentation |
US20140372726A1 (en) * | 2013-06-17 | 2014-12-18 | Samsung Electronics Co., Ltd. | Memory management method and apparatus |
CN103389945A (zh) * | 2013-07-05 | 2013-11-13 | 杭州华三通信技术有限公司 | 一种内存管理的方法及装置 |
CN103970680A (zh) * | 2014-04-28 | 2014-08-06 | 上海华为技术有限公司 | 内存管理方法、装置及嵌入式系统 |
CN105469173A (zh) * | 2014-08-19 | 2016-04-06 | 西安慧泽知识产权运营管理有限公司 | 一种静态内存进行优化管理的方法 |
CN107665146A (zh) * | 2016-07-29 | 2018-02-06 | 华为技术有限公司 | 内存管理装置和方法 |
Non-Patent Citations (2)
Title |
---|
左右;刘光明;董文睿;: "基于NBD机制的高性能计算机系统内存优化方案", 计算机研究与发展, no. 2 * |
时亚南;束文杰;于国欣;: "倒排文件页式存储方法", 计算机系统应用, no. 05 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117573377A (zh) * | 2024-01-15 | 2024-02-20 | 摩尔线程智能科技(北京)有限责任公司 | 内存管理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113535597B (zh) | 2024-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11669444B2 (en) | Computing system and method for controlling storage device | |
CN111344683B (zh) | 非易失性存储器装置中的命名空间分配 | |
US11467955B2 (en) | Memory system and method for controlling nonvolatile memory | |
US10528464B2 (en) | Memory system and control method | |
US11435900B2 (en) | Namespace size adjustment in non-volatile memory devices | |
CN114115747B (zh) | 存储器系统及控制方法 | |
CN109154917B (zh) | 存储系统和固态硬盘 | |
US10303618B2 (en) | Power savings via dynamic page type selection | |
EP3036642B1 (en) | Hardware managed compressed cache | |
US20180165014A1 (en) | Array controller, solid state disk, and method for controlling solid state disk to write data | |
CN109983449A (zh) | 数据处理的方法和存储系统 | |
JP7467593B2 (ja) | リソース割振り方法、記憶デバイス、および記憶システム | |
JP2019057151A (ja) | メモリシステムおよび制御方法 | |
CN110892387B (zh) | 存储器节点控制器 | |
KR101579941B1 (ko) | 가상머신 i/o 관리 방법 및 장치 | |
WO2018040590A1 (zh) | 一种文件系统的空间分配方法及装置 | |
US9569381B2 (en) | Scheduler for memory | |
JP6584529B2 (ja) | ファイルにアクセスするための方法および装置、ならびに記憶システム | |
CN113535597B (zh) | 内存管理方法、内存管理单元和物联网设备 | |
JP2024087479A (ja) | メモリシステムおよび制御方法 | |
CN115437557A (zh) | 对非易失性存储器装置中的名称空间块边界对准的管理 | |
EP4521223A1 (en) | Operation method for memory system, memory system and storage medium | |
CN111367825B (zh) | 存储设备的虚拟校验数据缓存 | |
JP2025043580A (ja) | メモリシステム | |
CN117971726A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40060944 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |