CN116627359B - 内存管理方法、装置、可读存储介质及电子设备 - Google Patents
内存管理方法、装置、可读存储介质及电子设备 Download PDFInfo
- Publication number
- CN116627359B CN116627359B CN202310906302.4A CN202310906302A CN116627359B CN 116627359 B CN116627359 B CN 116627359B CN 202310906302 A CN202310906302 A CN 202310906302A CN 116627359 B CN116627359 B CN 116627359B
- Authority
- CN
- China
- Prior art keywords
- memory
- granularity
- memory block
- application request
- type
- 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.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 519
- 238000007726 management method Methods 0.000 title claims abstract description 53
- 238000013507 mapping Methods 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 13
- 239000000872 buffer Substances 0.000 description 15
- 238000000034 method Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 6
- 230000009286 beneficial effect Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
本发明公开一种内存管理方法、装置、可读存储介质及电子设备,通过获取内存申请请求,确定用户申请内存的类型,从而在预设的内存空间中选择与其申请内存类型相匹配的目标内存块。每一目标内存块所对应的粒度单元不同,从而适用于不同类型的数据对内存的使用机制,使得内存空间的申请与使用更加具有针对性,进而实现高效利用产品中的内存空间,提高了内存空间利用率。同时,内存空间中的数据由于内存申请的类型不同,其存储于不同类型的目标内存块时实现数据的隐性分类,从而提高产品的数据安全和性能。
Description
技术领域
本发明涉及存储器技术领域,尤其涉及一种内存管理方法、装置、可读存储介质及电子设备。
背景技术
目前,主流的闪存类存储产品,例如eMMC(Embedded Multi Media Card,嵌入式存储)、UFS(UNIX文件***)等,受到产品体积、功耗以及成本等因素的限制,其内部一般是没有单独设置RAM(Random Access Memory,随机存储器)芯片,所以此类产品通常是使用主控芯片自带的SRAM(Static Random-Access Memory,静态随机存储器)空间,但是这一部分的内存空间往往比较小,其内存空间的大小一般为几百K字节到2M字节。因此,如何高效地利用SRAM空间内存就变得十分重要。在传统的设计方案中,通常是使用其内存的绝对地址,在代码层面将内存进行一个划分和使用。但是这种方案的空间利用率低,而且容易因为人为疏忽等原因造成其内存互踩,最终导致存储数据不安全的问题。
发明内容
本发明所要解决的技术问题是:提供一种内存管理方法、装置、可读存储介质及电子设备,提高内存空间的利用率以及数据存储的安全性。
为了解决上述技术问题,本发明采用的一种技术方案为:
一种内存管理方法,包括步骤:
获取内存申请请求;
根据所述内存申请请求的类型在预设的内存空间中确定对应类型的目标内存块,并返回所述目标内存块中未使用的粒度单元;
不同类型的所述目标内存块所对应的所述粒度单元不同。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种内存管理装置,包括:
接收模块,用于获取内存申请请求;
内存管理模块,用于根据所述内存申请请求的类型在预设的内存空间中确定对应类型的目标内存块,并返回所述目标内存块中未使用的粒度单元;
不同类型的所述目标内存块所对应的所述粒度单元不同。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述一种内存管理方法中的各个步骤。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述一种内存管理方法中的各个步骤。
本发明的有益效果在于:通过获取内存申请请求,确定用户申请内存的类型,从而在预设的内存空间中选择与其申请内存类型相匹配的目标内存块。由于用户申请内存空间时,受到内存大小、粒度以及占用的时间周期等因素的影响,内存空间的使用方式以及内存占用空间存在很大的差别;因此,每一目标内存块所对应的粒度单元不同,从而适用于用户其中一种内存类型的使用,使得内存空间的申请与使用更加具有针对性,进而实现高效利用产品中为数不多的内存空间,提高了内存空间利用率。同时,内存空间中的数据由于内存申请的类型不同,其存储于不同类型的目标内存块时实现数据的隐性分类,从而提高产品的数据安全和性能。
附图说明
图1为本发明实施例提供的一种内存管理方法的步骤流程图;
图2为本发明实施例提供的一种内存空间的划分示意图;
图3为本发明实施例提供的第一位图数据结构示意图;
图4为本发明实施例提供的第二位图数据结构示意图;
图5为本发明实施例提供的第三位图数据结构示意图;
图6为本发明实施例提供的一种内存管理装置的模块示意图;
图7为本发明实施例提供的一种电子设备的结构示意图;
标号说明:
300、一种内存管理装置;301、接收模块;302、内存管理模块;400、一种电子设备;401、存储器;402、处理器。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
请参照图1,本发明实施例提供了一种内存管理方法,包括步骤:
获取内存申请请求;
根据所述内存申请请求的类型在预设的内存空间中确定对应类型的目标内存块,并返回所述目标内存块中未使用的粒度单元;
不同类型的所述目标内存块所对应的所述粒度单元不同。
从上述描述可知,本发明的有益效果在于:通过获取内存申请请求,确定用户申请内存的类型,从而在预设的内存空间中选择与其申请内存类型相匹配的目标内存块。由于用户申请内存空间时,受到内存大小、粒度以及占用的时间周期等因素的影响,内存空间的使用方式以及内存占用空间存在很大的差别;因此,每一目标内存块所对应的粒度单元不同,从而适用于用户其中一种内存类型的使用,使得内存空间的申请与使用更加具有针对性,进而实现高效利用产品中为数不多的内存空间,提高了内存空间利用率。同时,内存空间中的数据由于内存申请的类型不同,其存储于不同类型的目标内存块时实现数据的隐性分类,从而提高产品的数据安全和性能。
进一步的,所述内存申请请求的类型包括读写缓存、映射缓存以及全局变量;
所述内存申请请求包括申请内存大小;
所述预设的内存空间包括数据内存块、指针内存块以及随机内存块;
所述根据所述内存申请请求的类型在预设的内存空间中确定对应类型的目标内存块包括:
若所述内存申请请求的类型为读写缓存,则确定所述目标内存块为数据内存块;
若所述内存申请请求的类型为映射缓存,则确定所述目标内存块为指针内存块;
若所述内存申请请求的类型为全局变量,则确定所述目标内存块为随机内存块。
由上述描述可知,内存申请请求的类型用于确定当前数据所需要申请的内存块的类型;内存申请请求中包括申请内存大小用于确定当前数据所需要的内存空间大小。同时,在预设的内存空间中已经划分了数据内存块、指针内存块以及随机内存块,用于针对读写缓存数据、映射缓存数据以及全局变量的使用。通过对内存申请类型进行管理,实现针对不同类型数据的内存占用特征选择特定的内存管理,从而充分利用产品中的内存空间,提高其利用率。在对预设的内存空间划分时,同样对存储于内存空间中的数据实现分类,从而避免内存空间中的数据互踩,提高数据安全性以及性能。
进一步的,所述返回所述目标内存块中未使用的粒度单元包括:
若所述内存申请请求的类型为读写缓存中的写缓存,则获取所述数据内存块中的第一粒度单元;
根据第一位图数据结构遍历查询所述第一粒度单元的位值,获取所述位值为0且与所述申请内存大小相匹配的连续的第一粒度单元,并返回所述第一粒度单元的地址;
同时将所述第一粒度单元的位值置为1。
由上述描述可知,在申请写缓存时以固定的第一粒度单元累积多个以满足用户所申请的内存大小。通过将内存块中的内存空间再次划分为更小的粒度单元,保证内存块中的每一个内存单元都有机会能够被申请和利用,以此来提高内存块中每一内存空间的使用率,从而提高内存空间的整体利用率。
进一步的,所述返回所述目标内存块中未使用的粒度单元包括:
若所述内存申请请求的类型为读写缓存中的读缓存,则获取所述数据内存块中的第二粒度单元;
判断预设的数据链表中是否挂载有可用的数据链节点,若否,则根据第一位图数据结构遍历查询所述第二粒度单元的位值,获取所述位值为0的第二粒度单元;
根据所述第二粒度单元的地址以及长度生成数据链节点;
将所述数据链节点挂载于所述数据链表中,并将所述数据链节点配置为多个字节单元;
根据第二位图数据结构遍历查询所述字节单元的位值,获取所述位值为0且与所述申请内存大小相匹配的连续的字节单元,并返回所述字节单元的地址;
同时将所述字节单元的位值置为1。
由上述描述可知,在申请读缓存时以固定的字节单元累计多个以满足用户所申请的内存大小。用户在申请写缓存与读缓存时,二者所占用的内存空间大小差异较大,故二者采用不同的粒度单元进行内存管理。由于,读缓存时存在先在数据内存块中获取了空间较大的第二粒度单元,但是该第二粒度单元并未一次性使用完的问题,而该第二粒度单元却不能用于下一次读缓存时使用,从而造成内存空间浪费。所以,在读缓存时,先获取可使用的第二粒度单元生成对应的数据链节点,再将其通过预设的数据链表进行管理。而在数据链表上的数据链节点被配置为空间更小的字节单元,用于记录和管理第二粒度单元中的内存使用情况,从而提高第二粒度单元中的内存空间利用率,进而提高整体内存空间利用率。且第二粒度单元与字节单元之间相互组合补充,可满足更多不同内存大小的申请需求,避免不必要的内存浪费。
进一步的,所述返回所述目标内存块中未使用的粒度单元包括:
若所述内存申请请求的类型为映射缓存,则获取所述指针内存块中的第三粒度单元;
根据第三位图数据结构遍历查询所述第三粒度单元的位值,获取所述位值为0且与所述申请内存大小相匹配的连续的第三粒度单元,并返回所述第三粒度单元的地址;
同时将所述第三粒度单元的位值置为1。
由上述描述可知,在申请映射缓存时以固定的第三粒度单元累计多个以满足用户所申请的内存大小。在目标内存块中,通过第三位图数据结构的方式来查询其第三粒度单元,可提高内存申请时的查询效率。同时,以位值的方式来标识粒度单元的可用状态,便于区分粒度单元的使用情况。用户在申请映射缓存和数据缓存时所占用的内存空间不同,且内存的占用周期也不同,故二者分别存储于不同类型的内存块中,避免映射缓存与数据缓存位于同一内存块中发生数据互踩,保证内存数据的安全性。
进一步的,所述返回所述目标内存块中未使用的粒度单元包括:
若所述内存申请请求的类型为全局变量,则从预设的内存管理信息中获取所述随机内存块中未使用的第四粒度单元的地址以及可用长度;
判断所述申请内存大小是否大于所述可用长度,若否,则根据所述第四粒度单元的地址以及所述申请内存大小生成随机链节点,并将所述随机链节点挂载于预设的随机链表上;
同时根据所述随机链节点更新所述未使用的第四粒度单元的地址以及可用长度。
由上述描述可知,在申请全局变量时以固定的第四粒度单元累计多个以满足用户所申请的内存大小。在随机内存块中,全局变量的内存申请空间大小具有不确定性,故此处通过链表的方式对随机内存块中的第四粒度单元进行管理。当用户内存申请类型为全局变量时,则以当前未使用的第四粒度单元为起始地址,以其所申请内存大小为长度生成随机链节点,并将随机链节点挂载于随机链表上,从而标记已使用的粒度单元,实现随机内存块中的内存管理。
进一步的,还包括:
获取内存释放请求;
根据所述内存释放请求的地址获取已使用的粒度单元,并将所述粒度单元的位值置为0。
由上述描述可知,在获取到内存释放请求后,只需要将对应的已使用的粒度单元进行释放,并将标识粒度单元可用性的位值置为0,从而便于下一次内存申请请求时对该粒度单元可用性的检索与查询。
一种内存管理装置,其特征在于,包括:
接收模块,用于获取内存申请请求;
内存管理模块,用于根据所述内存申请请求的类型在预设的内存空间中确定对应类型的目标内存块,并返回所述目标内存块中未使用的粒度单元;
不同类型的所述目标内存块所对应的所述粒度单元不同。
从上述描述可知,本发明的有益效果在于:通过获取内存申请请求,确定用户申请内存的类型,从而在预设的内存空间中选择与其申请内存类型相匹配的目标内存块。由于用户申请内存空间时,受到内存大小、粒度以及占用的时间周期等因素的影响,内存空间的使用方式以及内存占用空间存在很大的差别;因此,每一目标内存块所对应的粒度单元不同,从而适用于用户其中一种内存类型的使用,使得内存空间的申请与使用更加具有针对性,进而实现高效利用产品中为数不多的内存空间,提高了内存空间利用率。同时,内存空间中的数据由于内存申请的类型不同,其存储于不同类型的目标内存块时实现数据的隐性分类,从而提高产品的数据安全和性能。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的一种内存管理方法中的各个步骤。
一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的一种内存管理方法中的各个步骤。
从上述描述可知,本发明的有益效果在于:通过获取内存申请请求,确定用户申请内存的类型,从而在预设的内存空间中选择与其申请内存类型相匹配的目标内存块。由于用户申请内存空间时,受到内存大小、粒度以及占用的时间周期等因素的影响,内存空间的使用方式以及内存占用空间存在很大的差别;因此,每一目标内存块所对应的粒度单元不同,从而适用于用户其中一种内存类型的使用,使得内存空间的申请与使用更加具有针对性,进而实现高效利用产品中为数不多的内存空间,提高了内存空间利用率。同时,内存空间中的数据由于内存申请的类型不同,其存储于不同类型的目标内存块时实现数据的隐性分类,从而提高产品的数据安全和性能。
实施例一
请参照图1,本实施例的一种内存管理方法,包括步骤:
S1、获取内存申请请求;
S2、根据所述内存申请请求的类型在预设的内存空间中确定对应类型的目标内存块,并返回所述目标内存块中未使用的粒度单元;不同类型的所述目标内存块所对应的所述粒度单元不同。
其中,所述内存申请请求的类型包括读写缓存、映射缓存以及全局变量;所述内存申请请求包括申请内存大小;所述预设的内存空间包括数据内存块、指针内存块以及随机内存块;
具体的,所述S2包括:
S21、若所述内存申请请求的类型为读写缓存,则确定所述目标内存块为数据内存块;
在所述S21中,所述返回所述目标内存块中未使用的粒度单元包括:
S211、若所述内存申请请求的类型为读写缓存中的写缓存,则获取所述数据内存块中的第一粒度单元;具体的,
S2111、根据第一位图数据结构遍历查询所述第一粒度单元的位值,获取所述位值为0且与所述申请内存大小相匹配的连续的第一粒度单元,并返回所述第一粒度单元的地址;
在一种可选的实施方式中,第一粒度单元的粒度大小为32K字节,第一位图数据结构为32bit位图,32bit位图即每一第一粒度单元对应一个比特(bit)位,该比特(bit)位的位值为0或1。
S2112、同时将所述第一粒度单元的位值置为1。
S212、若所述内存申请请求的类型为读写缓存中的读缓存,则获取所述数据内存块中的第二粒度单元;具体的,
S2121、判断预设的数据链表中是否挂载有可用的数据链节点,若否,则根据第一位图数据结构遍历查询所述第二粒度单元的位值,获取所述位值为0的第二粒度单元;
S2122、根据所述第二粒度单元的地址以及长度生成数据链节点;
S2123、将所述数据链节点挂载于所述数据链表中,并将所述数据链节点配置为多个字节单元;
S2124根据第二位图数据结构遍历查询所述字节单元的位值,获取所述位值为0且与所述申请内存大小相匹配的连续的字节单元,并返回所述字节单元的地址;
在一种可选的实施方式中,第二粒度单元的粒度大小为32K字节,字节单元的粒度大小为4K,则每一数据链节点中包括8个字节单元;第二位图数据结构为8bit位图,8bit位图即每一字节单元对应一个比特(bit)位,该比特(bit)位的位值为0或1。
S2125、同时将所述字节单元的位值置为1。
所述S212还包括:
S2126、若预设的数据链表中挂载有可用的数据链节点(即数据链节点中存在部分未使用的字节单元),则执行步骤S2124至S2125。
S22、若所述内存申请请求的类型为映射缓存,则确定所述目标内存块为指针内存块;
在所述S22中,所述返回所述目标内存块中未使用的粒度单元包括:
S221、若所述内存申请请求的类型为映射缓存,则获取所述指针内存块中的第三粒度单元;具体的,
S2211、根据第三位图数据结构遍历查询所述第三粒度单元的位值,获取所述位值为0且与所述申请内存大小相匹配的连续的第三粒度单元,并返回所述第三粒度单元的地址;
在一种可选的实施方式中,第三粒度单元的粒度大小为4K字节,第三位图数据结构为bit位图,bit位图即每一第三粒度单元对应一个比特(bit)位,该比特(bit)位的位值为0或1。
S2212、同时将所述第三粒度单元的位值置为1。
S23、若所述内存申请请求的类型为全局变量,则确定所述目标内存块为随机内存块。
在所述S23中,所述返回所述目标内存块中未使用的粒度单元包括:
S231、若所述内存申请请求的类型为全局变量,则从预设的内存管理信息中获取所述随机内存块中未使用的第四粒度单元的地址以及可用长度;
在一种可选的实施方式中,第四粒度单元的粒度大小为1字节。
S2311、判断所述申请内存大小是否大于所述可用长度,若否,则根据所述第四粒度单元的地址以及所述申请内存大小生成随机链节点,并将所述随机链节点挂载于预设的随机链表上;
S2312、同时根据所述随机链节点更新所述未使用的第四粒度单元的地址以及可用长度。
所述S23还包括:
S2313、若所述申请内存大小大于所述可用长度,则返回提示信息,提示信息用于表示当前内存空间不足。
该方法还包括:
S3、获取内存释放请求;
S4、根据所述内存释放请求的地址获取已使用的粒度单元,并将所述粒度单元的位值置为0。
具体的,所述S4包括:
若已使用的粒度单元为字节单元,则将所述字节单元的位值置为0之后,根据所述第二位图数据结构遍历查询所述数据链节点上每一个字节单元的位值,获取所述字节单元的位值全为0的数据链节点,并将所述数据链节点从所述数据链表迁移至待使用链表。
由此可知,当数据链节点中的每一个字节单元的位值都为0时,则说明该数据链节点中并没有任何一个字节单元被使用,即该数据链节点处于未使用状态,故此时需要将该数据链节点从管理已使用内存的数据链表迁移至管理未使用内存的待使用链表中,从而区别二者的内存管理方法,避免同一内存被多次申请或是内存浪费。
所述S4之前还包括:判断所述内存释放请求的类型,若所述内存释放请求的类型为释放读写缓存或释放映射缓存,则执行步骤S4。
若所述内存释放请求的类型为释放全局变量,则根据所述内存释放请求的地址获取所述随机链表中对应地址的随机链节点,并将所述随机链节点从所述随机链表中删除;同时根据所述随机链表更新未使用的第四粒度单元的地址以及可用长度。
其中,由于随机内存块进行内存申请时是按照预设顺序获取并使用对应的粒度单元,所以在随机内存块进行内存释放时需要按照与预设顺序相反的顺序释放对应的粒度单元,且随机内存块中进行内存申请以及内存释放均是针对连续的多个第四粒度单元,随机内存块进行内存申请时是从低地址到高地址进行连续申请使用。例如:
随机内存块的地址范围为0x800000-0x8FFFFF,用户对随机内存块共进行了内存申请4次,则这4次内存申请按照顺序获取对应的粒度单元的地址分别为:第一次:0x800000-0x8000FF;第二次:0x800100-0x8002FF;第三次:0x800300-0x8003FF;第四次:0x800400-0x800FFF。那么用户对随机内存块进行内存释放时需要安装逆序释放对应的粒度单元的地址分别为:第四次:0x800400-0x800FFF;第三次:0x800300-0x8003FF;第二次:0x800100-0x8002FF;第一次:0x800000-0x8000FF。
需要说明的是,用户申请内存大小为粒度单元的整数倍。
实施例二
请参照图2至图5,本实施例的一种内存管理方法应用于实际场景中。
在本实施例中,一种内存管理方法应用于UFS芯片的内存空间,其内存空间总大小为2M字节,其内存空间的编制范围为0x800000~0x9FFFFF。
在获取内存申请请求之前还包括:
S101、对UFS芯片的内存空间进行划分,具体的:
S1011、统计UFS芯片中各个模块的内存使用特征。
在本实施例中,参照表1,UFS芯片中的模块包括:前端写缓存、前端读缓存、FTL(Flash Translation Layer,地址转换层)表项以及其他模块;内存使用特征包括该模块使用内存的总大小、粒度以及占用的时间周期等。
表1UFS芯片各个模块内存使用特征的统计结果
根据表1可知,一个UFS芯片内部所使用的内存空间很多,且使用方法差别很大。
S1012、根据步骤S1012中各个模块的内存使用特征划分所述UFS芯片的内存空间。
在本实施例中,参照表2和图2,将所述UFS芯片的内存空间(Whole Buffer)划分为三个内存块(SubBuffer)。
表2UFS芯片内存空间划分后的内存块(SubBuffer)
其中,数据内存块(DataBuffer)的编制范围为0x800000~0x900000;指针内存块(MapBuffer)的编制范围为0x900000~0x980000;随机内存块(OtherBuffer)的编制范围为0x980000~0x9FFFFF。
S102、配置UFS芯片中数据内存块(DataBuffer)、指针内存块(MapBuffer)以及随机内存块(OtherBuffer)的内存管理机制。
S1021、在数据内存块(DataBuffer)中,配置第一粒度单元为32K字节,第二粒度单元也为32K字节,字节单元为4K字节。其中,
D211、第一粒度单元与第二粒度单元设置第一位图数据结构(32bit位图)进行内存管理,参照图3所示的32bit位图,每一个第一粒度单元或第二粒度单元(32字节)对应一个bit。
D212、字节单元设置数据链表(g_Data4KbufferActiveHead)、待使用链表(g_Data4KbufferIdleHead)以及第二位图数据结构(8bit位图)进行内存管理,参照图4所示的数据链表以及8bit位图,每一个数据链节点对应一个第二粒度单元(32K),而每一个数据链节点中的字节单元(4K字节)对应一个bit。所述数据内存块(DataBuffer)的总内存大小为1M字节。此外,配置数据链表(g_Data4KbufferActiveHead)中的数据链节点以字节单元为最小粒度单元进行切分使用。
S1022、在指针内存块(MapBuffer)中,配置第三粒度单元为4K字节。其中,第三单元采用第三位图数据结构(bit位图)进行内存管理,参照图5所示的bit位图,每一个第三粒度单元(4K字节)对应一个bit。
S1023、在随机内存块(OtherBuffer)中,配置第四粒度单元为1字节。其中,第四粒度单元采用随机链表(g_OtherBufferinUseHead)进行内存管理,且配置内存管理信息的初始值:起始地址(u32BaseAdddr)为0x980000,可用长度(u32Length)为0x80000。
需要说明的是,上述步骤中的链表g_Data4KbufferActiveHead、g_Data4KbufferIdleHead以及g_OtherBufferinUseHead均为对应链表的表头,后续生成的链表节点均是挂载于对应链表的表头中。
S103、获取内存申请请求。
在本实施例中,内存申请请求的类型包括:
读写缓存,其对应的内存申请请求格式为DataBufferAlloc[申请内存大小];
映射缓存,其对应的内存申请请求格式为MapBufferAlloc[申请内存大小];
全局变量,其对应的内存申请请求格式为OtherBufferAlloc[申请内存大小]。
S104、根据所述内存申请请求的类型在预设的内存空间中确定对应类型的目标内存块,并返回所述目标内存块中未使用的粒度单元。
在本实施例中,所述S104具体为:
S1041、当用户需要申请一个32K字节的写缓存(WriteCach)时,获取到的内存申请请求为DataBufferAlloc[32K],则确定所述目标内存块为数据内存块(DataBuffer);
D411、获取数据内存块(DataBuffer)中的第一粒度单元(32K);
D412、在第一位图数据结构(32bit位图)中遍历查询位值为0的bit(此处的bit即为对应的第一粒度单元),并将查询到的第一个位值为0的目标bit所对应的地址返回给用户。例如,在图3中,查询到的第一个位值为0的bit为bit1,则将bit1所对应的地址(0x808000)返回给用户;
D413、同时将目标bit的位值置为1。
进一步的,若用户申请一个64K字节的写缓存,则返回位值为0且连续的2个bit所对应的地址。
S1042、当用户需要申请一个4K字节的读缓存(ReadCache)时,获取到的内存申请请求为DataBufferAlloc[4K],则确定所述目标内存块为数据内存块(DataBuffer);
D421、获取数据内存块(DataBuffer)中的第二粒度单元(32K);
D422、判断数据链表(g_Data4KbufferActiveHead)上是否挂载有可用的数据链节点,若否,则在第一位图数据结构(32bit位图)中遍历查询位值为0的bit(此处的bit即为对应的第二粒度单元),获取查询到的第一个位值为0的bit所对应的第二粒度单元(32K);
D423、以第二粒度单元的地址以及长度生成对应的数据链节点,即可得到申请后的第二粒度单元;
D424、先将该数据链节点挂载于待使用链表(g_Data4KbufferIdleHead)中,再将该数据链节点赋值为1,此时数据链节点的状态为已被申请但未使用的空闲内存;最后将该数据链节点挂载于数据链表(g_Data4KbufferActiveHead),并将该数据链节点配置为8个字节单元(4K);
D425、根据第二位图数据结构(8bit位图)遍历查询位值为0的bit(此处的bit即为对应的字节单元),获取查询到的第一个位值为0的目标bit所对应的地址返回给用户;
D426、同时将目标bit的位值置为1。
S1043、当用户需要申请一个4K字节整数倍的映射缓存(FTL表项),获取到的内存申请请求为MapBufferAlloc[16K],则确定所述目标内存块为指针内存块(MapBuffer);
D431、获取指针内存块(MapBuffer)中的第三粒度单元(4K);
D432、在第三位图数据结构(bit位图)中遍历查询位值为0的bit(此处的bit即为对应的第三粒度单元),查询到位值为0且连续的4个目标bit,将这4个目标bit所对应的地址返回给用户;
D433、同时将4个目标bit的位值置为1。
S1044、当用户需要申请一个100字节的全局变量缓存,获取到的内存申请请求为OtherBufferAlloc[0x100],则确定所述目标内存块为随机内存块(OtherBuffer);
D441、从预设的内存管理信息(u32BaseAdddr:0x980000以及u32Length:0x80000)中获取所述随机内存块(OtherBuffer)中未使用的第四粒度单元的地址以及可用长度;
D442、判断所述申请内存大小(0x100)是否大于所述可用长度(0x80000),若否,则根据所述第四粒度单元的地址(0x980000)以及所述申请内存大小(0x100)生成随机链节点,并将所述随机链节点挂载于预设的随机链表(g_OtherBufferinUseHead)上;
D443、同时根据所述随机链节点更新所述未使用的第四粒度单元的地址(u32BaseAdddr)以及可用长度(u32Length)。
S105、获取内存释放请求。
在本实施例中,内存释放请求的类型包括:
读写缓存释放,其对应的内存申请请求格式为DataBufferFree[地址];
映射缓存释放,其对应的内存申请请求格式为MapBufferFree[地址];
全局变量释放,其对应的内存申请请求格式为OtherBufferFree[地址]。
S106、判断内存释放请求的类型:
S1061、若内存释放请求为DataBufferFree[地址],则根据所述内存释放请求的地址获取已使用的第一粒度单元(32K)或字节单元(4K),并将对应的粒度单元的位值置为0。例如,调用DataBufferFree[0x808000]将上述步骤S1041中所使用的第一粒度单元(32K)进行释放。
D611、若根据所述内存释放请求的地址获取到已使用的字节单元(4K),则在第二位图数据结构(8bit位图)将该字节单元(4K)所对应的bit的位值置为0;
D612、在第二位图数据结构(8bit位图)遍历查询所述数据链节点上每一个字节单元(4K)的位值,获取所述字节单元(4K)的位值全为0的数据链节点;
D613、将该数据链节点赋值为0,用于表示该数据链节点未使用,并将所述数据链节点从所述数据链表迁移至待使用链表。例如,调用DataBufferFree[字节单元的地址]将上述步骤S1042中所使用的字节单元(4K)进行释放。
S1062、若内存释放请求为MapBufferFree[地址],则根据所述内存释放请求的地址获取已使用的第三粒度单元(4K),并将对应的粒度单元的位值置为0。
S1063、若内存释放请求为OtherBufferFree[地址],则根据所述内存释放请求的地址获取所述随机链表(g_OtherBufferinUseHead)中对应地址的随机链节点,并将所述随机链节点从所述随机链表(g_OtherBufferinUseHead)中删除;同时根据所述随机链表(g_OtherBufferinUseHead)更新未使用的第四粒度单元的地址(u32BaseAdddr)以及可用长度(u32Length)。例如,调用OtherBufferFree[0x980000]将上述步骤S1044中所使用的第四粒度单元进行释放。
实施例三
参照图6,本实施例的一种内存管理装置300,包括:
接收模块301,用于获取内存申请请求;
内存管理模块302,用于根据所述内存申请请求的类型在预设的内存空间中确定对应类型的目标内存块,并返回所述目标内存块中未使用的粒度单元;
不同类型的所述目标内存块所对应的所述粒度单元不同。
实施例四
本实施例的一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现实施例一以及实施例二中所述一种内存管理方法中的各个步骤。
实施例五
参照图7,本实施例的一种电子设备400,包括存储器401、处理器402及存储在存储器401上并可在处理器402上运行的计算机程序,所述处理器执行所述计算机程序时实现实施例一以及实施例二中所述一种内存管理方法中的各个步骤。
综上所述,本发明提供的一种内存管理方法、装置、可读存储介质及电子设备,获取内存申请类型以及申请内存大小,先通过确定用户内存申请的类型,从而在预设的内存空间中确定与其内存申请类型相适配的目标内存块;在通过目标内存块中对应的粒度单元累计的方式,获取与申请内存大小匹配的多个粒度单元,将原本较大的内存块划分为更小的粒度单元,避免内存块内部存在空闲内存但无法再次申请使用的情况,从而提高内存空间的利用率。此外,每一种类型的目标内存块所采用的内存管理方式均不相同。基于各个模块内存占用的大小、粒度以及时间周期,首先,在用户申请读写缓存时,选择对应的数据内存块,在数据内存块中通过位图数据结构与数据链表结合的方式,分别管理读缓存和写缓存,从而避免读缓存与写缓存占用内存空间差异较大,无法充分利用数据内存块中的内存,进而提高内存块的利用率;其次,在用户申请映射缓存时,选择对应的指针内存块,在指针内存块中通过位图数据结构的方式管理FTL表项,使得FTL表项与读写缓存分别存储于不同的内存空间中,避免二者交错存储,影响内存数据的安全性。最后,在用户申请全局变量时,选择对应的随机内存块,在随机内存块中能够申请任意长度的内存空间,以此满足全局变量申请内存大小时的随机性。每一目标内存块所对应的粒度单元以及内存管理方法均不同,从而适用于用户多种内存类型的使用需求,使得内存空间的申请与使用更加具有针对性,进而实现高效利用产品中为数不多的内存空间,提高了内存空间利用率。同时,内存空间中的数据由于内存申请的类型不同,其存储于不同类型的目标内存块时实现数据的隐性分类,从而提高产品的数据安全和性能。
在本申请所提供的上述实施例中,应该理解到,所揭露的方法、装置、计算机可读存储介质以及电子设备,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个组件或模块可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或组件或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的组件可以是或者也可以不是物理上分开的,作为组件显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部组件来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个组件单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (8)
1.一种内存管理方法,其特征在于,包括步骤:
获取内存申请请求;
根据所述内存申请请求的类型在预设的内存空间中确定对应类型的目标内存块,并返回所述目标内存块中未使用的粒度单元;
不同类型的所述目标内存块所对应的所述粒度单元不同;
所述内存申请请求的类型包括读写缓存、映射缓存以及全局变量;
所述内存申请请求包括申请内存大小;
所述预设的内存空间包括数据内存块、指针内存块以及随机内存块;
所述根据所述内存申请请求的类型在预设的内存空间中确定对应类型的目标内存块包括:
若所述内存申请请求的类型为读写缓存,则确定所述目标内存块为数据内存块;
若所述内存申请请求的类型为映射缓存,则确定所述目标内存块为指针内存块;
若所述内存申请请求的类型为全局变量,则确定所述目标内存块为随机内存块;
所述返回所述目标内存块中未使用的粒度单元包括:
若所述内存申请请求的类型为读写缓存中的写缓存,则获取所述数据内存块中的第一粒度单元;
根据第一位图数据结构遍历查询所述第一粒度单元的位值,获取所述位值为0且与所述申请内存大小相匹配的连续的第一粒度单元,并返回所述第一粒度单元的地址;
同时将所述第一粒度单元的位值置为1。
2.根据权利要求1所述的一种内存管理方法,其特征在于,所述返回所述目标内存块中未使用的粒度单元包括:
若所述内存申请请求的类型为读写缓存中的读缓存,则获取所述数据内存块中的第二粒度单元;
判断预设的数据链表中是否挂载有可用的数据链节点,若否,则根据第一位图数据结构遍历查询所述第二粒度单元的位值,获取所述位值为0的第二粒度单元;
根据所述第二粒度单元的地址以及长度生成数据链节点;
将所述数据链节点挂载于所述数据链表中,并将所述数据链节点配置为多个字节单元;
根据第二位图数据结构遍历查询所述字节单元的位值,获取所述位值为0且与所述申请内存大小相匹配的连续的字节单元,并返回所述字节单元的地址;
同时将所述字节单元的位值置为1。
3.根据权利要求1所述的一种内存管理方法,其特征在于,所述返回所述目标内存块中未使用的粒度单元包括:
若所述内存申请请求的类型为映射缓存,则获取所述指针内存块中的第三粒度单元;
根据第三位图数据结构遍历查询所述第三粒度单元的位值,获取所述位值为0且与所述申请内存大小相匹配的连续的第三粒度单元,并返回所述第三粒度单元的地址;
同时将所述第三粒度单元的位值置为1。
4.根据权利要求1所述的一种内存管理方法,其特征在于,所述返回所述目标内存块中未使用的粒度单元包括:
若所述内存申请请求的类型为全局变量,则从预设的内存管理信息中获取所述随机内存块中未使用的第四粒度单元的地址以及可用长度;
判断所述申请内存大小是否大于所述可用长度,若否,则根据所述第四粒度单元的地址以及所述申请内存大小生成随机链节点,并将所述随机链节点挂载于预设的随机链表上;
同时根据所述随机链节点更新所述未使用的第四粒度单元的地址以及可用长度。
5.根据权利要求1-3任意一项所述的一种内存管理方法,其特征在于,还包括:
获取内存释放请求;
根据所述内存释放请求的地址获取已使用的粒度单元,并将所述粒度单元的位值置为0。
6.一种内存管理装置,其特征在于,包括:
接收模块,用于获取内存申请请求;
内存管理模块,用于根据所述内存申请请求的类型在预设的内存空间中确定对应类型的目标内存块,并返回所述目标内存块中未使用的粒度单元;
不同类型的所述目标内存块所对应的所述粒度单元不同;
所述内存申请请求的类型包括读写缓存、映射缓存以及全局变量;
所述内存申请请求包括申请内存大小;
所述预设的内存空间包括数据内存块、指针内存块以及随机内存块;
所述根据所述内存申请请求的类型在预设的内存空间中确定对应类型的目标内存块包括:
若所述内存申请请求的类型为读写缓存,则确定所述目标内存块为数据内存块;
若所述内存申请请求的类型为映射缓存,则确定所述目标内存块为指针内存块;
若所述内存申请请求的类型为全局变量,则确定所述目标内存块为随机内存块;
所述返回所述目标内存块中未使用的粒度单元包括:
若所述内存申请请求的类型为读写缓存中的写缓存,则获取所述数据内存块中的第一粒度单元;
根据第一位图数据结构遍历查询所述第一粒度单元的位值,获取所述位值为0且与所述申请内存大小相匹配的连续的第一粒度单元,并返回所述第一粒度单元的地址;
同时将所述第一粒度单元的位值置为1。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-5任意一项所述的一种内存管理方法中的各个步骤。
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-5任意一项所述的一种内存管理方法中的各个步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310906302.4A CN116627359B (zh) | 2023-07-24 | 2023-07-24 | 内存管理方法、装置、可读存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310906302.4A CN116627359B (zh) | 2023-07-24 | 2023-07-24 | 内存管理方法、装置、可读存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116627359A CN116627359A (zh) | 2023-08-22 |
CN116627359B true CN116627359B (zh) | 2023-11-14 |
Family
ID=87636937
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310906302.4A Active CN116627359B (zh) | 2023-07-24 | 2023-07-24 | 内存管理方法、装置、可读存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116627359B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118377438A (zh) * | 2024-06-25 | 2024-07-23 | 山东云海国创云计算装备产业创新中心有限公司 | 读写命令操作空间需求确定方法、程序产品、设备及介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5251308A (en) * | 1987-12-22 | 1993-10-05 | Kendall Square Research Corporation | Shared memory multiprocessor with data hiding and post-store |
CN106991010A (zh) * | 2017-03-22 | 2017-07-28 | 武汉虹信通信技术有限责任公司 | 一种用于流媒体服务器的内存集中动态分配方法 |
CN108897630A (zh) * | 2018-06-06 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种基于OpenCL的全局内存缓存方法、***及装置 |
CN109144712A (zh) * | 2017-06-19 | 2019-01-04 | 北京信威通信技术股份有限公司 | 内存池构建、内存分配方法及装置 |
CN110462577A (zh) * | 2017-12-28 | 2019-11-15 | 华为技术有限公司 | 一种数据写入的方法及固态硬盘阵列 |
CN111143058A (zh) * | 2019-12-17 | 2020-05-12 | 长沙新弘软件有限公司 | 一种基于后备列表的内存管理方法 |
CN113010453A (zh) * | 2021-04-12 | 2021-06-22 | 杭州和利时自动化有限公司 | 一种内存管理的方法、***、设备及可读存储介质 |
CN113742056A (zh) * | 2020-11-19 | 2021-12-03 | 北京沃东天骏信息技术有限公司 | 一种数据存储方法、装置、设备及计算机可读存储介质 |
WO2022062833A1 (zh) * | 2020-09-22 | 2022-03-31 | 深圳云天励飞技术股份有限公司 | 内存分配方法及相关设备 |
CN115658561A (zh) * | 2022-11-16 | 2023-01-31 | 石家庄科林电气股份有限公司 | 配电终端内存管理方法、装置、电子设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3537687B1 (en) * | 2017-03-29 | 2021-09-22 | Huawei Technologies Co., Ltd. | Access method for distributed storage system, related device and related system |
-
2023
- 2023-07-24 CN CN202310906302.4A patent/CN116627359B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5251308A (en) * | 1987-12-22 | 1993-10-05 | Kendall Square Research Corporation | Shared memory multiprocessor with data hiding and post-store |
CN106991010A (zh) * | 2017-03-22 | 2017-07-28 | 武汉虹信通信技术有限责任公司 | 一种用于流媒体服务器的内存集中动态分配方法 |
CN109144712A (zh) * | 2017-06-19 | 2019-01-04 | 北京信威通信技术股份有限公司 | 内存池构建、内存分配方法及装置 |
CN110462577A (zh) * | 2017-12-28 | 2019-11-15 | 华为技术有限公司 | 一种数据写入的方法及固态硬盘阵列 |
CN108897630A (zh) * | 2018-06-06 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种基于OpenCL的全局内存缓存方法、***及装置 |
CN111143058A (zh) * | 2019-12-17 | 2020-05-12 | 长沙新弘软件有限公司 | 一种基于后备列表的内存管理方法 |
WO2022062833A1 (zh) * | 2020-09-22 | 2022-03-31 | 深圳云天励飞技术股份有限公司 | 内存分配方法及相关设备 |
CN113742056A (zh) * | 2020-11-19 | 2021-12-03 | 北京沃东天骏信息技术有限公司 | 一种数据存储方法、装置、设备及计算机可读存储介质 |
CN113010453A (zh) * | 2021-04-12 | 2021-06-22 | 杭州和利时自动化有限公司 | 一种内存管理的方法、***、设备及可读存储介质 |
CN115658561A (zh) * | 2022-11-16 | 2023-01-31 | 石家庄科林电气股份有限公司 | 配电终端内存管理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116627359A (zh) | 2023-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8751763B1 (en) | Low-overhead deduplication within a block-based data storage | |
Mathur et al. | Capsule: an energy-optimized object storage system for memory-constrained sensor devices | |
Tsiftes et al. | Enabling large-scale storage in sensor networks with the coffee file system | |
US9946657B1 (en) | Spilling small cache entries to a solid state device | |
US11586629B2 (en) | Method and device of storing data object | |
US9307024B2 (en) | Efficient storage of small random changes to data on disk | |
CN116627359B (zh) | 内存管理方法、装置、可读存储介质及电子设备 | |
Nath et al. | Online maintenance of very large random samples on flash storage | |
US20190391756A1 (en) | Data storage device and cache-diversion method thereof | |
CN111309258B (zh) | 一种b+树的存取方法、装置和计算机可读存储介质 | |
CN112596667A (zh) | 在固态驱动器中组织nand块并放置数据以便于随机写入的高吞吐量的方法和*** | |
Lee et al. | Design and implementation of a journaling file system for phase-change memory | |
Yim et al. | A fast start-up technique for flash memory based computing systems | |
Li et al. | Enabling efficient updates in KV storage via hashing: Design and performance evaluation | |
CN111241090A (zh) | 存储***中管理数据索引的方法和装置 | |
CN109947667B (zh) | 数据访问预测方法和装置 | |
Wongchaowart et al. | A content-aware block placement algorithm for reducing PRAM storage bit writes | |
CN109840048A (zh) | 存储命令处理方法及其存储设备 | |
Li et al. | Flash-optimized temporal indexing for time-series data storage on sensor platforms | |
Kang et al. | Muninn: A versioning flash key-value store using an object-based storage model | |
CN110096452B (zh) | 非易失随机访问存储器及其提供方法 | |
CN103885901A (zh) | 文件读取方法、存储设备和电子设备 | |
Li et al. | TL-Tree: flash-optimized storage for time-series sensing data on sensor platforms | |
CN108984432B (zh) | 一种处理io请求的方法及装置 | |
US11853577B2 (en) | Tree structure node compaction prioritization |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |