CN1670701A - 压缩数据存储方法 - Google Patents
压缩数据存储方法 Download PDFInfo
- Publication number
- CN1670701A CN1670701A CN 200410008762 CN200410008762A CN1670701A CN 1670701 A CN1670701 A CN 1670701A CN 200410008762 CN200410008762 CN 200410008762 CN 200410008762 A CN200410008762 A CN 200410008762A CN 1670701 A CN1670701 A CN 1670701A
- Authority
- CN
- China
- Prior art keywords
- packed data
- data
- storage means
- row
- memory 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.)
- Pending
Links
Images
Landscapes
- Memory System (AREA)
Abstract
本发明涉及一种压缩数据存储方法,首先将源数据压缩,生成压缩数据,计算该压缩数据中各行的总体压缩长度,然后调用当前的最大内存块,根据该各行的总体压缩长度计算该最大内存块可存储的压缩数据行数,再向系统申请该行数的数据所需的内存块,最后接收系统分配的内存块,并将该行数的压缩数据存储至该内存块中,从而实现压缩数据的动态分行存储,有效的利用了系统内存中的碎片。
Description
技术领域
本发明涉及一种数据存储方法,特别涉及一种压缩数据存储方法。
背景技术
对于特别复杂的作业,都会占用大量的系统内存,因此作业数据通常都需要做压缩处理,以便节省内存。
公知的压缩方法是:为压缩功能模块分配一足够大的压缩工作内存ComWorkSpace,用于存储压缩后生成的压缩数据,当压缩功能模块压缩完毕,返回压缩数据长度,即CompressenLength,应用程序释放源数据占用的内存空间,然后根据总体长度向系统申请CompressenLength大小的内存NewBuffer,并将ComWorkSpace中的压缩后数据复制到申请到的内存NewBuffer中。但是对于复杂的作业,在某种情况下,由于系统内存在碎片或是没有足够大的内存空间,为存储源数据分配足够大的内存不成功,就无法继续进行作业数据处理,同时为了存储压缩后的数据向系统申请CompressenLength大小的内存不成功也无法进行数据处理,公知的解决方法是尝试使用另一种压缩比较高的压缩算法去重新压缩源数据,并重新向系统申请CompressenLength大小的NewBuffer,若此时还是不成功,则仍然无法继续进行作业数据处理。
发明内容
本发明主要的目的在于为解决上述问题而提出一种压缩数据存储方法,取消对系统大块连续内存的应用请求,在系统内存存在碎片时,申请大块存储内存不成功后,仍可以进行大块数据的压缩存储处理。
所以为达到上述目的,本发明提供一种压缩数据存储方法,可根据最大内存块的大小,将压缩数据动态分行存储,首先将源数据压缩,生成压缩数据,然后计算该压缩数据中各行的总体压缩长度,调用当前的最大内存块,根据该各行的总体压缩长度计算该最大内存块可存储的压缩数据行数,再根据该压缩数据行数向系统申请内存块,接收系统分配的内存块,并将该行数的压缩数据存储至该内存块中。
根据本发明所提出的压缩数据存储方法可将压缩数据按照可用最大内存块的大小,进行动态分行存储,直至将所有压缩数据行存储下来,有效的利用了系统内存中的碎片,特别对于嵌入式系统中比较复杂的作业,充分提高了系统内存的使用率。
有关本发明的详细内容及技术,配合附图说明如下。
附图说明
图1为本发明所提出的压缩数据存储方法的总体流程图;
图2为本发明实施例的流程图;及
图3为本发明压缩数据存储格式示意图。
步骤110将源数据压缩,生成压缩数据
步骤120计算该压缩数据中各行的总体压缩长度
步骤130调用当前的最大内存块
步骤140根据各行的总体压缩长度计算该最大内存块可存储的压缩数据行数
步骤150向系统申请该行数的数据所需的内存块
步骤160接收系统分配的内存块,并将该行数的压缩数据存储至该内存块中
步骤210系统初始化
步骤220将源数据压缩,生成相应格式的压缩数据
步骤230根据总体压缩长度向系统申请内存块
步骤241将压缩数据存储到申请到的内存块中
步骤242调用函数获得当前最大块内存
步骤250计算最大块内存可存储多少行压缩后的数据
步骤260向系统申请内存
步骤270将相应行的压缩数据复制到分配到的内存中,同时源数据高度减去已存储的行数
步骤280还有未存储的行?
具体实施方式
本发明为一种压缩数据存储方法,首先由图1中说明本发明的方法,首先将源数据压缩,生成压缩数据(步骤110),计算该压缩数据中各行的总体压缩长度(步骤120),调用当前的最大内存块(步骤130),根据该各行的总体压缩长度计算该最大内存块可存储的压缩数据行数(步骤140),向系统申请该行数的数据所需的内存块(步骤150),最后接收系统分配的内存块,并将该行数的压缩数据存储至该内存块中(步骤160)。
下面以嵌入式系统为例对本发明的压缩数据存储方法进行详细说明。请参见图2,该图为本发明实施例的流程图。
系统首先初始化(步骤210),为存储源数据预先分配一足够大的内存块即SrcStaticBuffer,为压缩功能模块预先分配一足够大的压缩工作内存块即ComWorkSpace。当存储源数据分配内存不成功时,则使用预先已分配的SrcStaticBuffer存储源数据,经压缩功能模块压缩后生成的压缩数据以该行长度+压缩数据存放(步骤220),例如,高为4的源数据经压缩后生成的压缩数据为第一行压缩长度加第一行压缩数据,第二行压缩长度加第二行压缩数据,第三行压缩长度加第三行压缩数据,第四行压缩长度加第四行压缩数据。具体压缩数据格式如图3所示。数据总体压缩长度即CompressedLength,为用于存放各行压缩长度数据加该行压缩数据的总体占用字节数。
应用程序根据总体压缩长度向系统申请CompressedLength大小的内存NewBuffer(步骤230),若成功分配内存,将压缩后的数据复制到NewBuffer(步骤241);若分配内存不成功,调用系统获取最大内存块大小API函数,获得MaxBlockSize(步骤242),根据压缩数据记录的各行压缩长度信息,经计算可得出该MaxBlockSize大小的内存可存储多少行压缩后的数据,累计这些行所需要的内存大小(步骤250),并向系统申请该大小的内存,则此时必定能够成功分配内存(步骤260),将计算所得的行数相应压缩数据复制到分配到的内存中,源数据高度减去已存储的行数(步骤270)。
若压缩数据中还有未存储的行(步骤280),再次获得内存MaxBlockSize,根据压缩数据记录的剩余各行压缩长度信息,经计算可得出该MaxBlockSize大小的内存可存储多少行压缩后的数据,累计这些行所需要的内存大小,并向系统申请该大小的内存,则此时必定能够成功分配内存,将计算所得的行数相应压缩数据复制到分配到的内存中,重复上述步骤,直到源数据的所有数据行被尺寸从大到小的不同的内存块存储下来。
虽然本发明以前述的较佳实施例公开如上,其并非用以限定本发明,故本领域的技术人员,在不脱离本发明的精神和范围内,当可作一些的变化和修改,因此本发明的保护范围以权利要求为准。
Claims (9)
1、一种压缩数据存储方法,可根据最大内存块的大小,将压缩数据动态分行存储,其特征在于,该方法包括如下步骤:
将源数据压缩,生成压缩数据;
计算该压缩数据中各行的总体压缩长度;
调用当前的最大内存块;
根据该各行的总体压缩长度计算该最大内存块可存储的压缩数据行数;
向系统申请该行数的数据所需的内存块;及
接收系统分配的内存块,并将该行数的压缩数据存储至该内存块中。
2、如权利要求1所述的压缩数据存储方法,其特征在于,系统初始化的步骤,还包括:
为源数据分配一内存块;及
为压缩功能分配一内存块。
3、如权利要求1所述的压缩数据存储方法,其特征在于,所述压缩数据格式为“该行长度+压缩数据”。
4、如权利要求1所述的压缩数据存储方法,其特征在于,所述总体压缩长度为各行压缩长度数据与该行压缩数据的总体占用字节数。
5、如权利要求1所述的压缩数据存储方法,其特征在于,所述调用当前的最大内存块的步骤通过API函数调用。
6、如权利要求1所述的压缩数据存储方法,其特征在于,向系统申请该行数的数据所需的内存块,为累计可存储的压缩数据行所需的内存大小,并向系统申请该大小的内存。
7、如权利要求1所述的压缩数据存储方法,其特征在于,还包括判断压缩数据是否还有未存储的行的步骤。
8、如权利要求1所述的压缩数据存储方法,其特征在于,所述判断过程为根据源数据高度减去已存储数据行数的方法进行判断。
9、如权利要求7所述的压缩数据存储方法,其特征在于,若当前压缩数据中还有未存储的行,则从该调用但前的最大内存块的步骤起执行,直至完成所有压缩数据的存储。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200410008762 CN1670701A (zh) | 2004-03-17 | 2004-03-17 | 压缩数据存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200410008762 CN1670701A (zh) | 2004-03-17 | 2004-03-17 | 压缩数据存储方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1670701A true CN1670701A (zh) | 2005-09-21 |
Family
ID=35041975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200410008762 Pending CN1670701A (zh) | 2004-03-17 | 2004-03-17 | 压缩数据存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1670701A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136109A (zh) * | 2013-02-07 | 2013-06-05 | 中国科学院苏州纳米技术与纳米仿生研究所 | 一种具有压缩功能的固态存储系统ftl写入及读取方法 |
CN103620563A (zh) * | 2011-04-26 | 2014-03-05 | Lsi公司 | 用于非易失性存储器的可变超量配置 |
US9389805B2 (en) | 2011-08-09 | 2016-07-12 | Seagate Technology Llc | I/O device and computing host interoperation |
US9395924B2 (en) | 2013-01-22 | 2016-07-19 | Seagate Technology Llc | Management of and region selection for writes to non-volatile memory |
CN107943714A (zh) * | 2017-12-05 | 2018-04-20 | 安徽科创智慧知识产权服务有限公司 | 一种节省内存的数据存储方法 |
CN108804021A (zh) * | 2017-05-05 | 2018-11-13 | 捷鼎创新股份有限公司 | 数据压缩装置及其数据压缩方法 |
-
2004
- 2004-03-17 CN CN 200410008762 patent/CN1670701A/zh active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103620563A (zh) * | 2011-04-26 | 2014-03-05 | Lsi公司 | 用于非易失性存储器的可变超量配置 |
CN103620563B (zh) * | 2011-04-26 | 2015-04-29 | Lsi公司 | 用于非易失性存储器的可变超量配置 |
US9389805B2 (en) | 2011-08-09 | 2016-07-12 | Seagate Technology Llc | I/O device and computing host interoperation |
US10514864B2 (en) | 2011-08-09 | 2019-12-24 | Seagate Technology Llc | I/O device and computing host interoperation |
US10936251B2 (en) | 2011-08-09 | 2021-03-02 | Seagate Technology, Llc | I/O device and computing host interoperation |
US9395924B2 (en) | 2013-01-22 | 2016-07-19 | Seagate Technology Llc | Management of and region selection for writes to non-volatile memory |
CN103136109A (zh) * | 2013-02-07 | 2013-06-05 | 中国科学院苏州纳米技术与纳米仿生研究所 | 一种具有压缩功能的固态存储系统ftl写入及读取方法 |
CN108804021A (zh) * | 2017-05-05 | 2018-11-13 | 捷鼎创新股份有限公司 | 数据压缩装置及其数据压缩方法 |
CN107943714A (zh) * | 2017-12-05 | 2018-04-20 | 安徽科创智慧知识产权服务有限公司 | 一种节省内存的数据存储方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8417901B2 (en) | Combining write commands to overlapping addresses or to a specific page | |
US6516397B2 (en) | Virtual memory system utilizing data compression implemented through a device | |
CN1991903A (zh) | 图形处理事件同步的方法及系统 | |
EP0703526A2 (en) | Storage management system for concurrent generation and fair allocation of disk space | |
CN1996258A (zh) | 一种动态内存池的实现方法 | |
CN1851671A (zh) | 一种节省全局变量内存空间的方法 | |
JP2007287085A (ja) | 画像処理装置及びプログラム | |
CN1670701A (zh) | 压缩数据存储方法 | |
CN1933575A (zh) | 一种照相手持设备的录像方法 | |
CN105808219A (zh) | 一种内存空间分配方法及装置 | |
CN109343943B (zh) | 一种基于多外存设备多队列的i/o管理方法 | |
CN101031898A (zh) | 使用分离事务处理来实现无缓冲器dma控制器 | |
CN1542623A (zh) | 一种实现内存管理的方法 | |
CN1609850A (zh) | 调整数据库大小的系统和方法 | |
CN101079734A (zh) | 一种机架式设备热插拔配置恢复的方法 | |
CN1851676A (zh) | 一种嵌入式系统缓冲式内存分配方法 | |
EP2577472B1 (en) | Asynchronous bad block management in nand flash memory | |
US20210295584A1 (en) | Graphics processing | |
CN1315048C (zh) | 一种节省存储空间的多台计算机系统共享备份方法 | |
US10444991B1 (en) | In-place resumable partial decompression | |
CN101059774A (zh) | 动态存储管理装置及方法 | |
CN1318166A (zh) | 软件改写方法及软件改写装置 | |
US7928988B1 (en) | Method and system for texture block swapping memory management | |
CN1311592A (zh) | 一种全双工异步串行通信方法及其通信系统 | |
CN1783031A (zh) | 双向数据储存方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: ZHISHEN SCIENCE & TECHNOLOGY CO. LTD. Free format text: FORMER OWNER: DEXIN SCIENCE + TECHNOLOGY CO., LTD. Effective date: 20061020 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20061020 Address after: Taipei city of Taiwan Province Applicant after: Zhishen Science and Technology Co., Ltd. Address before: Taipei city of Taiwan Province Applicant before: Destiny Technology Corporation |
|
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |