CN104281528A - 一种数据存储方法及装置 - Google Patents

一种数据存储方法及装置 Download PDF

Info

Publication number
CN104281528A
CN104281528A CN201310288111.2A CN201310288111A CN104281528A CN 104281528 A CN104281528 A CN 104281528A CN 201310288111 A CN201310288111 A CN 201310288111A CN 104281528 A CN104281528 A CN 104281528A
Authority
CN
China
Prior art keywords
page
exchange partition
physical memory
memory
exchange
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
Application number
CN201310288111.2A
Other languages
English (en)
Other versions
CN104281528B (zh
Inventor
盛剑国
张兴明
傅利泉
朱江明
吴军
吴坚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Dahua Technology Co Ltd
Original Assignee
Zhejiang Dahua Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang Dahua Technology Co Ltd filed Critical Zhejiang Dahua Technology Co Ltd
Priority to CN201310288111.2A priority Critical patent/CN104281528B/zh
Publication of CN104281528A publication Critical patent/CN104281528A/zh
Application granted granted Critical
Publication of CN104281528B publication Critical patent/CN104281528B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种数据存储方法及装置,用以提高物理内存的实际利用率。所述数据存储方法包括:当页面内存不足时,确定交换分区信息;当交换分区信息指示能够向交换分区存储数据时,将页面内存中的待换出页面进行压缩并将压缩后的数据包存储到交换分区中,其中,所述交换分区是预先从物理内存中划分出的用于存储对换出页面进行压缩后得到的数据包的物理内存,所述页面内存和所述交换分区构成整个物理内存。

Description

一种数据存储方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据存储方法及装置。 
背景技术
计算机系统的存储分为内部与外部存储,一般分别对应为内存与硬盘。内存访问速度快,但是单位容量价格贵;硬盘访问速度相对慢,但是单位容量价格相对便宜。因此,计算机系统从性价比考虑,一般以某种机制把暂时用不到的内存数据交换至硬盘,以后用到了再从硬盘读回。 
操作系统可用的物理内存是固定的,也可以说是有限的。操作系统要处理的数据量却不是固定的,因此当内存不够用的时候,我们肯定不希望整个系统挂住,也会觉得强迫我们关闭某些任务来做新的任务是一个不人性化的要求。 
因此内存不足时,操作系统会在后台把物理内存里的数据交换到硬盘上,当你另外的任务需要用到这部分实际上已经不在物理内存的数据时,又会悄悄的从硬盘中读取回来。这样操作系统可以做的事情就超越了物理内存规格的限制。 
硬盘上这块用于存放被交换出来的内存数据的分区就叫交换(swap)分区,交换分区就是操作系统的虚拟内存。 
除了上述之外,这里还有两点现实因素导致虚拟内存的出现。 
1、同样的存储容量,内存单价贵,硬盘便宜。 
2、内存访问速度远快于硬盘,如果我们要的数据直接来自于硬盘,那么操作系统的响应速度是不可忍受的,也就是说必须要在小而贵的内存里。 
嵌入式系统因为种种原因,没有硬盘或者没有办法利用硬盘作为交换分区,虚拟内存机制因此在这种情况下不适用。 
具体理由分为不能有硬盘和不能用硬盘作为交换分区。 
没有硬盘的理由: 
硬盘的功耗远大于内存,便携式系统不能接受这新增的功耗开支,电池续航能力是更重要的;一块硬盘的价格也是不菲的,有些嵌入式产品也许就几百块,这跟硬盘的价格差不多了。 
不能用硬盘作为交换分区的理由: 
比如硬盘录像机(Digital Video Recorder,DVR),系统里的确有许多硬盘,但是那是数据硬盘,需要存放/读取的视频数据量可以说是海量,频繁且高强度的访问,使得硬盘使用寿命较短,硬盘可以说一个不怎么安全的存储介质。一旦操作系统的数据交换到硬盘上,受到损坏的话风险很高,且重启后该交换分区还是不靠谱,对于DVR来说,视频数据的丢失有可能产生法律上的影响,因此这是不可取的。 
同样在DVR领域,即使使用单独硬盘作为交换分区,也是不划算的,目前市面上在售的硬盘最小大约数百GB,如果以数百GB的硬盘作为交换分区相对于嵌入式系统的中央处理器(Central Processing Unit,CPU)的处理能力,这就是浪费了。说到底一台非高端DVR可能售价一千元以下,数百GB的硬盘成本的增加显然没有竞争力。 
综上所述,现有技术中的嵌入式系统中内存不足时无法将暂时用不到的内存数据交换至硬盘,虚拟内存机制在这种情况下不适用。 
发明内容
本发明实施例提供了一种数据存储方法,用以提高物理内存的实际利用率。本发明还提供了一种数据存储装置。 
根据本发明一实施例,提供的一种数据存储方法,该方法包括: 
当页面内存不足时,确定交换分区信息; 
当交换分区信息指示能够向交换分区存储数据时,将页面内存中的待换出 页面进行压缩并将压缩后的数据包存储到交换分区中,其中,所述交换分区是预先从物理内存中划分出的用于存储对换出页面进行压缩后得到的数据包的物理内存,所述页面内存和所述交换分区构成整个物理内存。 
从上述方案中可以看出,由于本发明的实施例中当页面内存不足时,确定交换分区信息,当交换分区信息指示能够向交换分区存储数据时,将页面内存中的待换出页面进行压缩并将压缩后的数据包存储到交换分区中,而所述交换分区是预先从物理内存中划分出的用于存储对换出页面进行压缩后得到的数据包的物理内存,所述页面内存和所述交换分区构成整个物理内存,因此该方法提出使用特定区域物理内存来取代用作交换分区的硬盘,从而对嵌入式操作系统的内存管理功能做了一种扩增,修改了在没有硬盘作为虚拟内存存放介质的情况下的内存扩充的方法。 
较佳地,所述方法还包括:初始化阶段:确定交换分区的物理内存的起始地址与大小。 
这样,在初始化阶段中得到交换分区的物理内存的起始地址与大小,用于按照该地址与大小合理的配臵交换分区,使得交换分区的配臵快速准确。 
较佳地,所述将页面内存中的换出页面进行压缩并将压缩后的数据包存储到交换分区中,包括: 
将页面内存中的待换出页面进行压缩,得到压缩后的数据包; 
对所述数据包进行分段,得到多个子数据包; 
分别为每一子数据包分配交换分区中的物理内存块,并将每一子数据包存储至相应的物理内存块上,并记录该待换出页面在所述页面内存中的起始地址,以及为每一子数据包分配的交换分区中的物理内存块的标识。 
这样,由于上述方法中为每一子数据包分配交换分区中的物理内存块,并将每一子数据包存储至相应的物理内存块上,提高了交换分区的空间利用率。 
较佳地,所述方法还包括: 
当需要访问换出页面时,根据记录的换出页面在所述页面内存中的起始地 址,以及为该换出页面对应的每一子数据包分配的交换分区中的物理内存块的标识,从交换分区中读取相应的子数据,并进行解压缩,得到换出页面的数据。 
这样,由于上述方法中所述的技术特征,因此当访问者重新访问已换出页面时,能够快速准确的将已经不在物理内存中的页面数据重新换入物理内存中,极大的方便了访问者的访问。 
较佳地,所述得到换出页面的数据后,该方法还包括:更新交换分区信息,其中包括交换分区的容量信息。 
这样,由于得到换出页面的数据后会更新交换分区的信息,因此可以及时准确的记录交换分区的情况,方便以后进行内存不足处理与缺页处理。 
本发明的实施例还提供了一种数据存储装置,所述装置包括: 
确定交换分区信息单元,用于当页面内存不足时,确定交换分区信息; 
内存不足处理单元,用于当交换分区信息指示能够向交换分区存储数据时,将页面内存中的待换出页面进行压缩并将压缩后的数据包存储到交换分区中,其中,所述交换分区是预先从物理内存中划分出的用于存储对换出页面进行压缩后得到的数据包的物理内存,所述页面内存和所述交换分区构成整个物理内存。 
从上述方案中可以看出,由于本发明实施例中提供的数据存储装置中的确定交换分区信息单元和内存不足处理单元的共同作用可以实现在没有硬盘作为虚拟内存存放介质的情况下的内存扩充。 
较佳地,所述装置还包括:初始化模块,用于确定交换分区的物理内存的起始地址与大小。 
其中,初始化模块确定的交换分区的物理内存的起始地址与大小,用于按照该地址与大小合理的配臵交换分区,使得交换分区的配臵快速准确。 
较佳地,所述装置还包括:将页面内存中的换出页面进行压缩并将压缩后的数据包存储到交换分区单元,用于将页面内存中的待换出页面进行压缩,得到压缩后的数据包;对所述数据包进行分段,得到多个子数据包;分别为每一 子数据包分配交换分区中的物理内存块,并将每一子数据包存储至相应的物理内存块上,并记录该待换出页面在所述页面内存中的起始地址,以及为每一子数据包分配的交换分区中的物理内存块的标识。 
其中,由于上述装置中的将页面内存中的换出页面进行压缩并将压缩后的数据包存储到交换分区单元为每一子数据包分配交换分区中的物理内存块,并将每一子数据包存储至相应的物理内存块上,该装置提高了交换分区的空间利用率。 
较佳地,所述装置还包括:缺页处理单元,用于当需要访问换出页面时,根据记录的换出页面在所述页面内存中的起始地址,以及为该换出页面对应的每一子数据包分配的交换分区中的物理内存块的标识,从交换分区中读取相应的子数据,并进行解压缩,得到换出页面的数据。 
其中,所述缺页处理单元,能够快速准确的将已经不在物理内存中的页面数据重新换入物理内存中,极大的方便了访问者的访问。 
较佳地,所述装置还包括:信息更新单元,用于更新交换分区信息,其中包括交换分区的容量信息。 
其中,信息更新单元可以提高交换分区信息的准确性,保证整个数据存储装置的正常运行。 
附图说明
图1为现有技术中内存管理的方法流程图; 
图2为本发明实施例提供的一种数据存储方法的方法流程图; 
图3为本发明实施例提供的初始化过程的流程图; 
图4为本发明实施例提供的一种数据存储方法中的将页面内存中的换出页面进行压缩并将压缩后的数据包存储到交换分区中的方法流程图; 
图5为本发明实施例提供的一种数据存储装置示意图。 
具体实施方式
本发明实施例提供了一种数据存储方法及装置,用以提高物理内存的实际利用率。 
首先介绍本发明实施例的技术基础:无损压缩/解压算法: 
目前压缩/解压算法比较成熟,常见的算法有行程长度编码(Run-length encoding,RLE)、哈夫曼、Rice、Lz77等,Lz77这一算法是由Jacob Zir和Abraham Lempel于1977年提出的,故命名为Lz77。这些算法其实在大家常用的winrar、winzip、7zip等压缩软件里经常用到,这些软件的目的也就是这些算法的目的;使得数据在更小的存储空间里得以存放,而且用的时候可以不被损坏的还原回来。 
这块可以模拟黑盒方式理解,目前有大量成熟的技术,可以确保输入原始未压缩数据,经过压缩模块内部处理后输出压缩后数据;也可以实现压缩后数据到未压缩数据的还原。 
一份数据其压缩数据大小与未压缩数据大小的比值,称之为压缩比,压缩比越大,说明压缩效果越明显,节省的空间越多。 
高压缩比取决于压缩算法是否与数据排列特点相匹配,在数据确定之后,压缩处理深度越大,压缩比也会相应提高,但是所需的处理时间也会越长。 
接着介绍本发明实施例涉及的一些功能: 
如图1所示,内存管理基础描述,包括以下三个步骤: 
S101、内存申请与释放; 
S102、物理内存不足处理; 
S103、缺页处理。 
其中,每一步的具体描述如下所述: 
S101、内存申请与释放: 
现代操作系统对物理内存划分为基本的页,每个页比如4KB或者8KB大小。软件包括系统层和用户层需要使用的内存,首先必须经过申请,操作系统 的内存管理模块负责接受申请,内存管理模块维护着所有内存页表的状态,在收到内存申请时,管理模块从维护的空闲页表中,按照一定算法挑选出若干页面,并且在页表中修改该页面为忙状态;在内存的使用中该页面不会分配给其它任务,以此防止数据混乱;申请者提出释放内存的请求后,内存管理模块修改页面表中相应页面状态为空闲。 
S102、物理内存不足的处理方法: 
新的内存申请到达时,所申请的内存超过内存管理模块里剩余的可用内存时,叫做内存不足。在一般的个人计算机(personal computer,PC)操作系统中,内存不足触发后,内存管理模块会按照一定算法,把已分配出去的页面数据保存到硬盘中,并且在页表中标记这些页面为被交换状态。然后把腾出来的物理内存分配给新申请者。在已分配的页面中选取交换对象的算法,常见有以下几种:先进先出算法(first-in first-out,FIFO),最新申请的页面被交换出去;最少使用页面臵换算法(Least Recently Used,LRU):最近阶段内最长时间没有被访问的页面被交换出去;其它算法。至于哪种算法更合理不是本发明关心,在本发明中这些算法可以自由选用。 
S103、缺页发生的处理方法: 
当被交换硬盘的页面所有者重新访问该页面时,显然这个页面已经不在物理内存中,这种情况叫做缺页。此时内存管理模块根据页表中的记录判断是否可以重新直接把缺页调入物理内存中,如果可以,调入后更改页表中相应页面状态为正常,然后所有者可以正常访问;如果物理页面中没有空闲内存,那么先按物理内存不足的处理方法交换出相应数量的页面,然后再从交换分区交换回欲访问页面,之后其所有者可以正常访问。 
由于前面讲到的不能使用或者没有硬盘的情况存在,本发明提出使用特定区域物理内存来取代用于交换分区硬盘。当然如果没有压缩,那么交换结果是徒增复杂性,没有实际扩增物理内存容量。幸运的是存放于物理内存中的数据绝大多数都是具有高度可压缩性,据不完全统计,平均不低于5:1,也就是说 5MB的数据压缩后占用的空间大约1MB左右,这个比率尤其要看数据排列特点及压缩算法的优劣。例如:假如操作系统具有100MB可用的物理内存,现在分配出10MB作为压缩内存交换分区,压缩比按5:1计算,那么理论上可用的内存为100-10+10*5=140MB。 
接上述例子,由于现代操作系统对物理内存划分为基本的页,操作系统具有100MB可用的物理内存,如果分配出10MB作为压缩内存交换分区,则剩下的90MB就是页面内存,分配出的10MB内存为交换分区,按照上述压缩比,交换分区可用的内存为50MB,故理论上操作系统可用的物理内存为140MB,即在没有硬盘作为交换分区的情况下,扩大了物理内存的实际利用率。 
如图2所示,本发明实施例提供的一种数据存储方法,该方法包括: 
S201、当页面内存不足时,确定交换分区信息; 
S202、当交换分区信息指示能够向交换分区存储数据时,将页面内存中的待换出页面进行压缩并将压缩后的数据包存储到交换分区中,其中,所述交换分区是预先从物理内存中划分出的用于存储对换出页面进行压缩后得到的数据包的物理内存,所述页面内存和所述交换分区构成整个物理内存,该方法用于在没有硬盘作为虚拟内存存放介质的情况下来扩充内存。 
下面结合本发明具体实施例进行详细说明。 
较佳地,所述数据存储方法还包括:初始化阶段:确定交换分区的物理内存的起始地址与大小,用于按照指定的交换分区的物理内存的地址与大小合理的配臵交换分区。 
从本发明的使用者角度看:初始化阶段确定用作交换分区的物理内存(可以为DDR分区)的起始地址与大小,这些作为本发明的输入参数。指定的交换分区要求为非系统管理范畴内,也就是说映射后系统可以去读写,但是不对这块做管理,这块区域的管理由本发明的管理模块进行系列管理,具体可以从下述步骤看到管理内容。 
如图3所示,本发明自身需要的初始化过程包括: 
S301、映射指定的交换分区; 
S302、对映射后的交换分区建立伙伴系统; 
S303、利用操作系统提供的虚拟内存相关的应用程序编程接口及函数,按照指定的交换分区的物理内存的地址与大小配臵交换分区; 
S304、初始化压缩解压缩模块; 
S305、初始化管理模块。 
其中,上述每一步的具体描述如下所述: 
S301、映射指定的交换分区(可以为DDR区域),从而使得本发明涉及模块(以下统一称为本模块)可以对其进行读写;其中,交换分区对于现代操作系统来说,是指用来扩增系统内存的一个分区,一般为硬盘分区,或者一个文件,在本发明中交换分区对于操作系统来说还是原来的意思,不过对于本模块来说已经做了替换,也就是说体现了一种接口,实现了操作系统原有内存管理机制与本发明的无缝衔接; 
S302、对映射后的交换分区建立伙伴系统,建立伙伴系统便于分配与回收时不至于产生内存碎片,因为该区域的交换分区操作系统不做管理;其中,伙伴系统是一种内存管理算法,其特点为,所有分配的单元为2的幂个字节,这样2个相邻的单元被释放时可以合并成一个更大的单元,有效避免了内存碎片的产生; 
S303、利用操作系统提供的虚拟内存相关的应用程序编程接口(Application Programming Interface,API)及函数,按照指定的交换分区的物理内存的地址与大小配臵交换分区; 
S304、初始化压缩解压缩模块; 
S305、初始化管理模块。 
如图4所示,所述将页面内存中的换出页面进行压缩并将压缩后的数据包存储到交换分区中,包括: 
S401、将页面内存中的待换出页面进行压缩,得到压缩后的数据包; 
S402、对所述数据包进行分段,得到多个子数据包; 
S403、分别为每一子数据包分配交换分区中的物理内存块,并将每一子数据包存储至相应的物理内存块上,并记录该待换出页面在所述页面内存中的起始地址,以及为每一子数据包分配的交换分区中的物理内存块的标识,上述方法为每一子数据包分配交换分区中的物理内存块,提高了交换分区的空间利用率。其中,所述的物理内存块,即伙伴系统对交换分区划分的物理内存块,其大小是2的幂个字节。伙伴系统记录为每一物理内存块分配标识并记录其标识。 
具体地,内存不足时的处理过程如下所述: 
A、首先本发明维持了操作系统绝大部分内存管理机制,只是在内存不足时,而且配臵了交换分区的前提下,操作系统的内存管理模块会触发换出页面动作函数,而本发明修改该函数,使欲换出页面经过压缩后保存至指定的交换分区,按目前常见的4K字节为一个页,压缩后数据长度从4K到10几个字节不等,为了提高交换分区的空间利用率,对压缩后的数据包进行分段,得到多个子数据包,本发明具体实施例中压缩后的数据包分成3段进行匹配处理,用以提高对伙伴系统的匹配,比如一个3117字节的压缩包,分别分成2048+1024+45字节的3个子数据包,分别为每一子数据包分配交换分区中的物理内存块,即为2048字节的子数据包分配2048字节大小的物理内存块,为1024字节的子数据包分配1024字节大小的物理内存块,为45字节的子数据包分配64字节大小的物理内存块(为了避免内存碎片,浪费了19字节空间)。并将每一子数据包存储至相应的物理内存块上,这样压缩包比较合适的被存放,其中,为3个子数据包中的每一子数据包分配的交换分区中的物理内存块的标识分别对应3段伙伴系统地址,在交换分区有记录了该换出页面在页面内存中的起始地址与3段伙伴系统地址的对应关系的表,这个对应关系用来以后换入该页面。 
B、接上述例子,4096字节的页面最终以3117+19=3136字节存放,这样我们获得960字节的额外空间,本模块定期检视多余的额外空间总和,然后修 改操作系统里保存的交换分区信息,因为这里是增加交换分区,因此相对简单,修改交换分区大小即可。新增的交换分区地址空间,与额外新增空间总和相等,即:本模块先按最坏的情况打算,最坏的情况是某换出页面数据压缩比是1:1,比如jpeg数据的确接近这个比值;如果某换出页面数据压缩比大于1,那么还会获得新的额外空间,本模块在下一个检视周期继续新增交换分区即可。 
较佳地,所述将页面内存中的换出页面进行压缩并将压缩后的数据包存储到交换分区中的方法还包括: 
当需要访问换出页面时,根据记录的换出页面在所述页面内存中的起始地址,以及为该换出页面对应的每一子数据包分配的交换分区中的物理内存块的标识,从交换分区中读取相应的子数据,并进行解压缩,得到换出页面的数据,该方法用于将已经不在物理内存中的页面数据重新换入物理内存中,以便访问者进行访问。 
具体地,缺页处理过程如下所述: 
A、首先本发明的缺页处理机制同样维持了原内存管理的绝大多数机制,在配臵了交换分区的操作系统里,缺页情况会导致操作系统查找该页是否被换出,及其换出的地址,本发明修改了该缺页处理环节,即:根据换出页面动作函数的已知换出地址,从上述交换分区里的对应表,换算成3段伙伴系统地址,然后解压这些存放于3段伙伴系统里的压缩包,获得一个4096字节的数据,这4K数据就是被我们修改的缺页处理函数的输出,这4K数据就是换出页面的数据,即欲读回的页。 
B、结合内存不足时举的例子,4096字节压缩至3136字节保存,现在3136字节还原成4096字节被读走且删除了对应记录,而原先向操作系统登记的额外新增的960字节,现在也必须扣除,扣除操作也是周期性执行。 
C、扣除操作不像增加交换分区操作那么简单,在减少相应的地址前,必须把地址后部对应数据挪移到前面的空洞内,不过由于交换分区是伙伴系统管理,实际的数据不需要搬移,只需修改交换分区里的对应表,实现交换分区的 地址与伙伴系统3段地址映射即可。 
较佳地,得到换出页面的数据后,该方法还包括:更新交换分区信息,其中包括交换分区的容量信息,用于及时准确的记录交换分区的情况,方便以后进行内存不足处理与缺页处理。 
向操作系统登记交换分区的容量包括: 
向操作系统登记交换分区容量=交换分区里保存的压缩包大小*平均压缩比+交换分区剩余容量*最差压缩比,即:向操作系统登记交换分区容量=交换分区里保存的压缩包在未压缩时的大小+交换分区剩余容量*1,这个公式避免了压缩比不同的页面换进换出造成的漏洞(bug),交换分区登记容量大于压缩后实际可用容量;周期性的容量变化或者交换分区容量一定幅度的变化会触发操作系统重新登记,避免频繁操作,以及交换分区的容量增加与减少的合并。 
下面介绍一下压缩内存交换分区带来新的问题及目前相应的解决办法: 
1、压缩分区的内存碎片: 
这是需要重视的问题,所幸的是目前有足够成熟的算法用来避免内存碎片,比如伙伴系统。 
2、CPU响应速度与内存压缩效率的折中: 
频繁的交换会触发频繁的压缩/解压;想获取较高的压缩比也需要大量的CPU处理,因此如何在获取更多内存容量与降低CPU负荷,是一个现实的冲突。 
交换触发机制算法相对来说以及比较成熟,也就是说交换的频繁程度可以暂时不考虑。 
压缩比与CPU负荷目前的算法是实时关注CPU使用率情况,如果过高则适度降低压缩比预期,另外用户可以参与配臵,比如配臵CPU使用率范围触发压缩比的提高或降低。 
本发明通过调整目标压缩比来影响CPU负荷,比如判定CPU负荷过高,则通过调低目标压缩比来降低CPU负荷;应该说拿到一个特定数据包后,在 压缩算法选定前提下,其压缩比是固定的,但是可以间歇性对某些包不压缩,来影响平均压缩比,平均压缩比降低后,相应时间内的CPU负荷随之降低,本发明默认CPU高负荷区为CPU负荷的70%,用户可以根据实际情况修改这个区段的数值。 
综上所述,虽然压缩内存交换分区会带来一些新的问题,但是目前有足够成熟的算法和交换触发机制算法来解决相应的问题,也就是说压缩内存交换分区带来的一些新的问题可以暂时不考虑。 
本发明具体实施例中压缩内存交换分区的介质选择为DDR,在本发明中,DDR分区特指用来作为交换分区目的介质的DDR区域,它分为压缩包存放区与剩余空间。另外,也可以用NAND-Flash作为压缩内存交换分区的介质,但是考虑到成本,同样容量的NAND-Flash比DDR2/3贵数倍,按目前市面价格目前为8倍,因此这种方案不如直接加DDR芯片,其中,NAND-Flash的稳定性是一个问题,颗粒容易损坏,因此也不适合做此介质。 
如图5所示,本发明实施例提供的一种数据存储装置,该装置包括: 
确定交换分区信息单元501,用于当页面内存不足时,确定交换分区信息; 
内存不足处理单元502,用于当交换分区信息指示能够向交换分区存储数据时,将页面内存中的待换出页面进行压缩并将压缩后的数据包存储到交换分区中,其中,所述交换分区是预先从物理内存中划分出的用于存储对换出页面进行压缩后得到的数据包的物理内存,所述页面内存和所述交换分区构成整个物理内存。 
较佳地,该装置还包括:初始化模块,用于确定交换分区的物理内存的起始地址与大小。 
本发明具体实施例中的初始化过程由初始化模块完成,其中,具体的初始化过程如下: 
A、映射指定的交换分区,从而使得本模块可以对其进行读写; 
B、对映射后的交换分区建立伙伴系统,建立伙伴系统便于分配与回收时 不至于产生内存碎片,因为该区域的交换分区操作系统不做管理; 
C、利用操作系统提供的虚拟内存相关的API及函数,按照指定的交换分区的物理内存的地址与大小配臵交换分区; 
D、初始化压缩解压缩模块; 
E、初始化管理模块。 
较佳地,该装置还包括:将页面内存中的换出页面进行压缩并将压缩后的数据包存储到交换分区单元,用于将页面内存中的待换出页面进行压缩,得到压缩后的数据包;对所述数据包进行分段,得到多个子数据包;分别为每一子数据包分配交换分区中的物理内存块,并将每一子数据包存储至相应的物理内存块上,并记录该待换出页面在所述页面内存中的起始地址,以及为每一子数据包分配的交换分区中的物理内存块的标识。 
具体的,内存不足时的处理过程如下所述: 
首先当页面内存不足时,由确定交换分区信息单元确定交换分区信息,其中,交换分区信息为交换分区的物理内存的起始地址与大小,当交换分区信息指示能够向交换分区存储数据时,内存不足处理单元中的将页面内存中的换出页面进行压缩并将压缩后的数据包存储到交换分区单元将页面内存中的待换出页面进行压缩,为了提高交换分区的空间利用率,对压缩后的数据包进行分段,得到多个子数据包,本发明具体实施例中压缩后的数据包分成3段进行匹配处理,用以提高对伙伴系统的匹配,分别为每一子数据包分配交换分区中的物理内存块,并将每一子数据包存储至相应的物理内存块上,这样压缩包比较合适的被存放,其中,为3个子数据包中的每一子数据包分配的交换分区中的物理内存块的标识分别对应3段伙伴系统地址,在交换分区有记录了该换出页面在页面内存中的起始地址与3段伙伴系统地址的对应关系的表,这个对应关系用来以后换入该页面。 
较佳地,该装置还包括:缺页处理单元,用于当需要访问换出页面时,根据记录的换出页面在所述页面内存中的起始地址,以及为该换出页面对应的每 一子数据包分配的交换分区中的物理内存块的标识,从交换分区中读取相应的子数据,并进行解压缩,得到换出页面的数据。 
具体的,缺页处理过程如下所述: 
当需要访问换出页面时,缺页处理单元根据记录的换出页面在所述页面内存中的换出地址,从上述交换分区里的对应表,换算成3段伙伴系统地址,然后解压这些存放于3段伙伴系统里的压缩包,得到换出页面的数据。 
另外,缺页处理单元还执行扣除操作,当压缩包数据还原成原始数据被读走且删除了对应记录后,原先向操作系统登记的额外新增的数据也必须进行相应的扣除,扣除操作不像增加交换分区操作那么简单,在减少相应的地址前,必须把地址后部对应数据挪移到前面的空洞内,不过由于交换分区是伙伴系统管理,实际的数据不需要搬移,只需修改交换分区里的对应表,实现交换分区的地址与伙伴系统3段地址映射即可。 
较佳地,该装置还包括:信息更新单元,用于更新交换分区信息,其中包括交换分区的容量信息。 
综上所述,本发明实施例提供的技术方案中,其中所述数据存储方法包括:当页面内存不足时,确定交换分区信息;当交换分区信息指示能够向交换分区存储数据时,将页面内存中的待换出页面进行压缩并将压缩后的数据包存储到交换分区中,其中,所述交换分区是预先从物理内存中划分出的用于存储对换出页面进行压缩后得到的数据包的物理内存,所述页面内存和所述交换分区构成整个物理内存,该方法提出使用特定区域物理内存来取代用于交换分区硬盘,从而对嵌入式操作系统的内存管理功能做了一种扩增,修改了在没有硬盘作为虚拟内存存放介质的情况下的内存扩充的方法。 
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和 光学存储器等)上实施的计算机程序产品的形式。 
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。 
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。 
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。 
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。 

Claims (10)

1.一种数据存储方法,其特征在于,该方法包括:
当页面内存不足时,确定交换分区信息;
当交换分区信息指示能够向交换分区存储数据时,将页面内存中的待换出页面进行压缩并将压缩后的数据包存储到交换分区中,其中,所述交换分区是预先从物理内存中划分出的用于存储对换出页面进行压缩后得到的数据包的物理内存,所述页面内存和所述交换分区构成整个物理内存。
2.根据权利要求1所述的方法,其特征在于,该方法还包括:初始化阶段:确定交换分区的物理内存的起始地址与大小。
3.根据权利要求1所述的方法,其特征在于,所述将页面内存中的换出页面进行压缩并将压缩后的数据包存储到交换分区中,包括:
将页面内存中的待换出页面进行压缩,得到压缩后的数据包;
对所述数据包进行分段,得到多个子数据包;
分别为每一子数据包分配交换分区中的物理内存块,并将每一子数据包存储至相应的物理内存块上,并记录该待换出页面在所述页面内存中的起始地址,以及为每一子数据包分配的交换分区中的物理内存块的标识。
4.根据权利要求3所述的方法,其特征在于,该方法还包括:
当需要访问换出页面时,根据记录的换出页面在所述页面内存中的起始地址,以及为该换出页面对应的每一子数据包分配的交换分区中的物理内存块的标识,从交换分区中读取相应的子数据,并进行解压缩,得到换出页面的数据。
5.根据权利要求4所述的方法,其特征在于,得到换出页面的数据后,该方法还包括:
更新交换分区信息,其中包括交换分区的容量信息。
6.一种数据存储装置,其特征在于,该装置包括:
确定交换分区信息单元,用于当页面内存不足时,确定交换分区信息;
内存不足处理单元,用于当交换分区信息指示能够向交换分区存储数据时,将页面内存中的待换出页面进行压缩并将压缩后的数据包存储到交换分区中,其中,所述交换分区是预先从物理内存中划分出的用于存储对换出页面进行压缩后得到的数据包的物理内存,所述页面内存和所述交换分区构成整个物理内存。
7.根据权利要求6所述的装置,其特征在于,该装置还包括:初始化模块,用于确定交换分区的物理内存的起始地址与大小。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:将页面内存中的换出页面进行压缩并将压缩后的数据包存储到交换分区单元,用于将页面内存中的待换出页面进行压缩,得到压缩后的数据包;对所述数据包进行分段,得到多个子数据包;分别为每一子数据包分配交换分区中的物理内存块,并将每一子数据包存储至相应的物理内存块上,并记录该待换出页面在所述页面内存中的起始地址,以及为每一子数据包分配的交换分区中的物理内存块的标识。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:缺页处理单元,用于当需要访问换出页面时,根据记录的换出页面在所述页面内存中的起始地址,以及为该换出页面对应的每一子数据包分配的交换分区中的物理内存块的标识,从交换分区中读取相应的子数据,并进行解压缩,得到换出页面的数据。
10.根据权利要求9所述的装置,其特征在于,该装置还包括:信息更新单元,用于更新交换分区信息,其中包括交换分区的容量信息。
CN201310288111.2A 2013-07-09 2013-07-09 一种数据存储方法及装置 Active CN104281528B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310288111.2A CN104281528B (zh) 2013-07-09 2013-07-09 一种数据存储方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310288111.2A CN104281528B (zh) 2013-07-09 2013-07-09 一种数据存储方法及装置

Publications (2)

Publication Number Publication Date
CN104281528A true CN104281528A (zh) 2015-01-14
CN104281528B CN104281528B (zh) 2018-02-16

Family

ID=52256424

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310288111.2A Active CN104281528B (zh) 2013-07-09 2013-07-09 一种数据存储方法及装置

Country Status (1)

Country Link
CN (1) CN104281528B (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572485A (zh) * 2015-01-28 2015-04-29 宇龙计算机通信科技(深圳)有限公司 双系统共用内存的分配方法及装置
WO2016138785A1 (zh) * 2015-03-04 2016-09-09 华为技术有限公司 一种运行进程的方法及装置
CN106970826A (zh) * 2017-03-10 2017-07-21 浙江大学 一种基于大页的缺页异常解决方法
CN107506496A (zh) * 2017-09-28 2017-12-22 北京小米移动软件有限公司 碎片整理方法、装置及计算机可读存储介质
CN107766151A (zh) * 2017-09-28 2018-03-06 郑州云海信息技术有限公司 一种页面换出方法
CN110457235A (zh) * 2019-08-20 2019-11-15 Oppo广东移动通信有限公司 内存压缩方法、装置、终端及存储介质
CN110865884A (zh) * 2019-09-30 2020-03-06 华为技术有限公司 一种内存管理方法及装置
CN111414339A (zh) * 2020-03-13 2020-07-14 浙江大华技术股份有限公司 一种文件的处理方法、系统、装置、设备及介质
CN113138941A (zh) * 2020-01-20 2021-07-20 华为技术有限公司 内存交换的方法、装置
CN113300715A (zh) * 2021-05-20 2021-08-24 山东云海国创云计算装备产业创新中心有限公司 一种数据处理方法、装置、硬件压缩设备以及介质
CN113885787A (zh) * 2021-06-08 2022-01-04 荣耀终端有限公司 一种存储器管理方法及电子设备
CN116860183A (zh) * 2023-09-04 2023-10-10 北京安天网络安全技术有限公司 一种数据存储方法、电子设备及存储介质
US11822805B2 (en) 2016-09-29 2023-11-21 Huawei Technologies Co., Ltd. Method and terminal for reclaiming memory after freezing program
WO2024032194A1 (zh) * 2022-08-08 2024-02-15 中兴通讯股份有限公司 一种内存交换处理方法、装置、存储介质及电子装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101093455A (zh) * 2006-06-21 2007-12-26 中兴通讯股份有限公司 一种嵌入式操作系统的内存池分配方法
CN101866677A (zh) * 2009-04-20 2010-10-20 英业达股份有限公司 使用内存的方法
CN102156675A (zh) * 2010-02-12 2011-08-17 中兴通讯股份有限公司 一种内存分配方法及装置
WO2013135145A1 (en) * 2012-03-14 2013-09-19 Tencent Technology (Shenzhen) Company Limited Application program startup method and apparatus

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101093455A (zh) * 2006-06-21 2007-12-26 中兴通讯股份有限公司 一种嵌入式操作系统的内存池分配方法
CN101866677A (zh) * 2009-04-20 2010-10-20 英业达股份有限公司 使用内存的方法
CN102156675A (zh) * 2010-02-12 2011-08-17 中兴通讯股份有限公司 一种内存分配方法及装置
WO2013135145A1 (en) * 2012-03-14 2013-09-19 Tencent Technology (Shenzhen) Company Limited Application program startup method and apparatus

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572485B (zh) * 2015-01-28 2018-10-02 宇龙计算机通信科技(深圳)有限公司 双系统共用内存的分配方法及装置
CN104572485A (zh) * 2015-01-28 2015-04-29 宇龙计算机通信科技(深圳)有限公司 双系统共用内存的分配方法及装置
CN105988875B (zh) * 2015-03-04 2020-08-14 华为技术有限公司 一种运行进程的方法及装置
WO2016138785A1 (zh) * 2015-03-04 2016-09-09 华为技术有限公司 一种运行进程的方法及装置
CN105988875A (zh) * 2015-03-04 2016-10-05 华为技术有限公司 一种运行进程的方法及装置
US10261918B2 (en) 2015-03-04 2019-04-16 Huawei Technologies Co., Ltd. Process running method and apparatus
US11822805B2 (en) 2016-09-29 2023-11-21 Huawei Technologies Co., Ltd. Method and terminal for reclaiming memory after freezing program
CN106970826A (zh) * 2017-03-10 2017-07-21 浙江大学 一种基于大页的缺页异常解决方法
CN106970826B (zh) * 2017-03-10 2020-05-08 浙江大学 一种基于大页的缺页异常解决方法
CN107506496A (zh) * 2017-09-28 2017-12-22 北京小米移动软件有限公司 碎片整理方法、装置及计算机可读存储介质
CN107766151A (zh) * 2017-09-28 2018-03-06 郑州云海信息技术有限公司 一种页面换出方法
CN110457235A (zh) * 2019-08-20 2019-11-15 Oppo广东移动通信有限公司 内存压缩方法、装置、终端及存储介质
CN110457235B (zh) * 2019-08-20 2021-10-08 Oppo广东移动通信有限公司 内存压缩方法、装置、终端及存储介质
CN110865884A (zh) * 2019-09-30 2020-03-06 华为技术有限公司 一种内存管理方法及装置
US11928359B2 (en) 2020-01-20 2024-03-12 Huawei Technologies Co., Ltd. Memory swapping method and apparatus
CN113138941A (zh) * 2020-01-20 2021-07-20 华为技术有限公司 内存交换的方法、装置
CN111414339A (zh) * 2020-03-13 2020-07-14 浙江大华技术股份有限公司 一种文件的处理方法、系统、装置、设备及介质
CN111414339B (zh) * 2020-03-13 2023-04-25 浙江大华技术股份有限公司 一种文件的处理方法、系统、装置、设备及介质
CN113300715A (zh) * 2021-05-20 2021-08-24 山东云海国创云计算装备产业创新中心有限公司 一种数据处理方法、装置、硬件压缩设备以及介质
CN113300715B (zh) * 2021-05-20 2022-08-19 山东云海国创云计算装备产业创新中心有限公司 一种数据处理方法、装置、硬件压缩设备以及介质
CN113885787A (zh) * 2021-06-08 2022-01-04 荣耀终端有限公司 一种存储器管理方法及电子设备
WO2024032194A1 (zh) * 2022-08-08 2024-02-15 中兴通讯股份有限公司 一种内存交换处理方法、装置、存储介质及电子装置
CN116860183A (zh) * 2023-09-04 2023-10-10 北京安天网络安全技术有限公司 一种数据存储方法、电子设备及存储介质
CN116860183B (zh) * 2023-09-04 2023-12-01 北京安天网络安全技术有限公司 一种数据存储方法、电子设备及存储介质

Also Published As

Publication number Publication date
CN104281528B (zh) 2018-02-16

Similar Documents

Publication Publication Date Title
CN104281528A (zh) 一种数据存储方法及装置
KR101390134B1 (ko) 비휘발성 메모리를 갖는 시스템을 위한 동적 및 정적 데이터의 처리
CN106484331B (zh) 一种数据处理方法、装置及闪存设备
US9778881B2 (en) Techniques for automatically freeing space in a log-structured storage system based on segment fragmentation
US10102148B2 (en) Page-based compressed storage management
US20090327621A1 (en) Virtual memory compaction and compression using collaboration between a virtual memory manager and a memory manager
US7536500B2 (en) Header blocks for flash memory writes
CN105027093A (zh) 用于压缩和紧凑虚拟存储器的方法和装置
CN107111551A (zh) 用于高速缓存经压缩的数据背景的装置、系统和方法
JP2011530133A (ja) キャッシュコンテンツの記憶管理
US11907129B2 (en) Information processing device, access controller, information processing method, and computer program for issuing access requests from a processor to a sub-processor
WO2014188528A1 (ja) メモリ装置、計算機システム及びメモリ装置の制御方法
US10754785B2 (en) Checkpointing for DRAM-less SSD
EP3278229B1 (en) Compressed pages having data and compression metadata
CN102479549A (zh) 半导体存储装置
Ji et al. {Pattern-Guided} File Compression with {User-Experience} Enhancement for {Log-Structured} File System on Mobile Devices
CN103229150B (zh) 数据控制方法及系统
CN104239231A (zh) 一种加速二级缓存预热的方法及装置
CN109634528A (zh) 一种目标数据的落盘方法、装置、设备及存储介质
CN103823634A (zh) 一种支持无随机写模式的数据处理方法及系统
CN102736988A (zh) 存储器管理装置、存储器管理方法和控制程序
CN102792296B (zh) 移动终端中请求页面调度方法、控制器以及移动终端
KR20140065196A (ko) 메모리 시스템 및 그 구동 방법
JP6254986B2 (ja) 情報処理装置、アクセスコントローラ、および情報処理方法
US20210200679A1 (en) System and method for mixed tile-aware and tile-unaware traffic through a tile-based address aperture

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant