CN1670701A - 压缩数据存储方法 - Google Patents

压缩数据存储方法 Download PDF

Info

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
Application number
CN 200410008762
Other languages
English (en)
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.)
Primax Electronics Ltd
Original Assignee
Destiny Technology Corp
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 Destiny Technology Corp filed Critical Destiny Technology Corp
Priority to CN 200410008762 priority Critical patent/CN1670701A/zh
Publication of CN1670701A publication Critical patent/CN1670701A/zh
Pending legal-status Critical Current

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所述的压缩数据存储方法,其特征在于,若当前压缩数据中还有未存储的行,则从该调用但前的最大内存块的步骤起执行,直至完成所有压缩数据的存储。
CN 200410008762 2004-03-17 2004-03-17 压缩数据存储方法 Pending CN1670701A (zh)

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)

* Cited by examiner, † Cited by third party
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 捷鼎创新股份有限公司 数据压缩装置及其数据压缩方法

Cited By (9)

* Cited by examiner, † Cited by third party
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