CN1425986A - 自动压缩/解压缩文件系统及其压缩算法 - Google Patents
自动压缩/解压缩文件系统及其压缩算法 Download PDFInfo
- Publication number
- CN1425986A CN1425986A CN03100603A CN03100603A CN1425986A CN 1425986 A CN1425986 A CN 1425986A CN 03100603 A CN03100603 A CN 03100603A CN 03100603 A CN03100603 A CN 03100603A CN 1425986 A CN1425986 A CN 1425986A
- Authority
- CN
- China
- Prior art keywords
- compression
- data
- block
- data block
- file system
- 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
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
自动压缩/解压缩文件系统及其压缩算法属于具有自动压缩/解压缩功能的文件系统领域,其特征是:在普通文件系统和用于存储经过压缩的数据的物理存储器之间加入了一个整合到物理存储器的硬件中的磁盘存储块抽象层,它是一个把普通文件系统与压缩过的磁盘数据隔开,并通过修改磁盘存储块抽象层而支持多种文件系统的模块,它依次含有:虚拟磁盘逻辑数据块存储空间(虚块空间)、日志结构物理存储数据块映射层和数据压缩/解压缩层。本发明还提出了基于该系统的数据压缩算法,它是:每个新字符由字典中的两个已有的字符创建。本发明尤其适用于嵌入式系统,能够大幅度提高嵌入式设备资源,特别是存储资源的利用率,极大的改善其性能。
Description
技术领域:
自动压缩/解压缩文件系统及其压缩算法属于具有自动压缩/解压缩功能的文件系统领域,尤其涉及嵌入式操作系统使用的文件系统领域。
背景技术:
随着微电子技术的快速发展,特别是微处理器的发展,过去许多由纯硬件实现的一些产品、系统等逐步转向由软、硬件共同来实现。这样不仅提高了系统的灵活性,而且可以方便地引入人工智能、自适应等当前比较先进的技术。因此“软硬兼施”的产品、系统等将是未来发展的主要方向。作为软件系统的基础——操作系统,无疑在这样的系统中占有十分重要的地位。与此同时,在桌面系统中早已和操作系统内核紧密相连的文件系统的地位和作用也日益突出。
过去,由于受硬件等条件的限制,很多软硬件系统中(如基于单片机等的控制系统)都没有操作系统,或者仅有一个操作系统的内核,而根本没有文件系统。然而,随着微处理器的性能不断提高,存储器的价格不断下降,使得类pc的掌上型嵌入式设备迅猛发展起来,并且已经出现了向膝上型和桌面系统看齐的趋势。这种趋势对嵌入式操作系统提出了更高的要求,同时也使得文件系统的加入的要求日益迫切。但是,嵌入式系统一般体积较小,系统程序、应用程序通常装在FLASH或ROM中,无存储量大的硬盘等设备。而FLASH或ROM等存储介质的价格相对于在桌面系统中广泛使用的硬盘、光盘等来说是非常昂贵的。因此,简单的将桌面系统中的大型文件系统照搬入嵌入式设备中使用是不可行的。而针对嵌入式系统的特点,应当研发一种新型的文件系统或对桌面文件系统进行改造和裁减,以便适合嵌入式设备的使用。在这两种做法当中,“数据压缩”技术都将起着举足轻重的作用。它能够大幅度提高嵌入式设备资源,特别是存储资源的利用率,从而极大的改善其性能。这不仅具有理论意义,而且具有非常大的应用价值并且能带来可观的经济效益,从而能够推动嵌入式设备的进一步发展。
发明内容:
本发明的目的在于提供一种具有自动压缩/解压缩功能的文件系统及其对应的数据压缩算法,与现有技术不同之处在于,它提出了用于文件系统的抽象层——磁盘存储块抽象层的概念,磁盘存储块抽象层是在普通文件系统和物理存储器之间加入的一个新的模块利用磁盘存储块抽象层,改抽象曾将文件系统与压缩过的磁盘数据隔离开。通过修改磁盘存储块抽象层,系统可以支持多种文件系统。同时压缩算法在LZW字典压缩算法基础上重新建构了新的字典构造方法,改善了原算法的性能。它尤其适用于嵌入式系统。
本发明所提出的自动压缩/解压缩文件系统,其特征在于:
它是在普通文件系统和用于存储经过压缩的数据的物理存储器之间加入了一个整合到物理存储器的硬件当中的磁盘存储块抽象层,所述磁盘存储块抽象层是一个把普通文件系统与压缩过的磁盘数据相隔开,并通过修改该磁盘存储块抽象层去支持多种文件系统的模块,它依次含有:
1)虚拟磁盘逻辑数据块存储空间,即虚块空间:它是为磁盘存储块抽象层向上层文件系统提供接口的一段连续的逻辑数据块存储区域,即下标为虚拟逻辑块号的一个数组,其内容是一个指向物理存储地点的指针;
2)日志结构物理存储数据块映射层:它是日志结构的算法负责上述虚块空间向磁盘物理数据块映射,即供上层文件系统把数据从虚块空间通过该映射层写入或从磁盘读出;
3)数据压缩/解压缩层:它用于存放经过LZW算法压缩的数据。
上述虚块空间带一个含有逻辑数据块号的32位的指针,当该指针指向物理存储地点的同时,上述虚块空间就替磁盘存储块抽象层向上层文件系统提供以下接口:
1)申请保留快:它是一种为上层文件系统保留一段虚块空间以便今后使用的函数;
2)申请释放块:它是一种为上层文件系统释放一段虚块空间以便今后提供给其他文件系统使用的函数;
3)读取块:它是一种把上层文件系统需要访问的数据块的内容写入指定缓冲区的函数;
4)写入块:它是一种把上层文件系统需要提供的由上述缓冲区指定的数据块的内容写入指定虚拟块的函数;
5)删除块:在上层文件系统确认虚拟块中的数据失效而要求执行删除文件操作时,调用它来通知磁盘存储块抽象层。
上述日志结构物理存储数据块映射层是一个内容为连续的压缩数据块存储区域的逻辑回收段;所述压缩数据块是对上述逻辑数据块以一定的压缩比进行压缩处理理后形成的一个数据单元,所述逻辑回收段再以一定的压缩比进行压缩处理后形成物理磁盘上存储已压缩数据的物理回收段;上述逻辑数据块的块号和压缩数据块的块号、逻辑回收段的地址依次构成了虚块空间的32位空间指针的数据结构。
上述数据压缩/解压缩层是对上述日志结构物理存储数据块映射层传来的数据进行压缩存储的物理磁盘,它依次由空间管理块和连续的物理回收块存储区域组成,其中,所述物理回收块和上述逻辑回收块的对应关系由上述32位空间指针决定;所述空间管理块含有:
1)空闲压缩数据块映射表:表内每一个比特的二进制码对应一个压缩数据块的空闲情况,并以空闲压缩数据块数是否大于设定的阀值来确定是否回收该段;
2)空闲逻辑数据块映射表:一个逻辑回收段内的每一个压缩数据块对应一个2字节数组,一个2字节数组内的每个比特用二进制码对应一个压缩数据块内的一个逻辑数据块的空闲情况,以一个压缩数据块内的逻辑数据块的空闲数是否大于设定的阀值来确定是否应在空闲压缩数据块映射表中进行标记;
3)压缩数据块地址索引表:它由数量上和逻辑回收段内的压缩数据块数相同的数组组成,每一个数组对应一个压缩数据块;为了优化数据的读写,每一个压缩后的压缩数据块起始地址是包含在每个压缩数据中的逻辑数据块数的n/2倍,n为大于1的整数,从而使得前后两个压缩数据块起始地址之差等于该压缩数据块的长度。
根据上述自动压缩/解压缩文件系统所设计的压缩算法,其特征在于:它是一种动态字典压缩算法,每个新字符由字典中的两个已有的字符创建;在做压缩算法时,上述两个已有的字符都是依次输入的字符中属于最长匹配的字符串,如果由它们两个组建的新字符不在字典中,则把新字符加入字典,否则就再次判断是否有第二个最长匹配字符出现,如有,重复以上判断过程,一直到不再有字符输入为止;在做解压缩算法时,如果得到的新字符不在字典中,就输出新字符,否则,就再次判断两个已有的字符输入,重复以上过程。
试验证明,采用本发明所提出的自动压缩/解压缩文件系统及其压缩算法达到了预期的目的。
附图说明:
图1:本发明提出的文件系统结构图;
图2:虚拟磁盘逻辑数据块存储空间示意图;
图3:逻辑回收块及虚块空间的32位空间指针的数据结构图;
图4:逻辑回收块和物理回收块对应关系图;
图5:空间管理块的结构示意图;
图6:压缩算法程序流程框图;
图7:解压缩算法程序流程框图;
图8:读写操作流程框图;
图9:创建自动压缩/解压缩磁盘分区操作流程图;
图10:删除自动压缩/解压缩磁盘分区操作流程图。
具体实施方式:
结合附图说明本发明的具体实施方式。
本发明的压缩文件系统是基于日志文件系统的。磁盘存储块抽象层是在本发明中提出的一个新的技术,也是本发明的重点部分。这一部分分为三层,参见图1:磁盘存储块抽象层(①)、日志结构物理存储数据块映射层(②)、数据压缩/解压缩层(③)。
磁盘存储块抽象层是在普通文件系统和物理存储器之间加入的一个新的模块,如图1所示。它为上层的普通文件系统提供一个虚拟磁盘逻辑数据块存储空间(虚块空间),如图2所示。一个逻辑数据块是上层文件系统的最小存储单元,一般是1kB、2kB、4kB或者更多,图2中以1kB为例。从图中可以看到,虚块空间是一段连续的逻辑数据块存储区域,这个区域根据上层文件系统的对逻辑块大小的要求进行划分,并给出编号。日志结构物理存储数据块映射层则负责逻辑块向磁盘物理数据块的映射。映射使用日志结构的算法。于是上层文件系统就可以将数据从虚块空间通过映射层写入磁盘,或者从磁盘读出。数据的写入或读出都还要经过压缩层的处理。真正存放在磁盘上的数据是经过压缩的数据。
由于上层的文件系统只是通过虚块空间接口进行物理磁盘数据访问,因此,磁盘存储块抽象层的使用,使上层文件系统和下层数据存储方式完全隔离。这使得设计重点可以放在使用日志结构并具有数据压缩存储功能的磁盘存储块抽象层,而上层的文件系统可以使用任何现有的文件系统,这样就可以得到一个自动压缩/解压缩的文件系统了。而且,多个文件系统的实例可以共存于一个磁盘存储块抽象层之上,于是,在无需修改任何代码的情况下就都可以获得日志结构和数据压缩存储所带来的益处。由于该层与上层文件系统的无关性使得我们可以更进一步,将这一层设计整合到物理存储器的硬件当中,从而大大提高系统性能。
下面以一台安装有Linux操作系统(文件系统为Ext2文件系统)的计算机为例,结合附图予以说明。
具体的物理存储硬件是指计算机上所安装的硬盘(或者软盘、USB闪盘、RAM盘等等)。
1.虚拟磁盘逻辑数据块存储空间的实现(①),其内部结构如图2所示:
我们采用一个数组来实现虚块空间。数组的下标就是虚拟逻辑块(①)号,其内容是一个32位的指针,指向物理存储地点(具体的指针数据结构详情见后)。同时,抽象层向上层文件系统提供以下接口:
1)申请保留块:int blk_reserve(int start_blk,int num_blk)
该函数可以为上层文件系统保留一段虚块空间以便以后使用。第一个参数start_blk为起始块号,第二个参数为块数。函数返回实际保留的块数。
2)申请释放块:int blk_free(int start_blk,int num_blk)
该函数可以为上层文件系统释放一段虚块空间以便其他文件系统使用。第一个参数start_blk为起始块号,第二个参数为块数。函数返回实际释放的块数。
3)读取块:int blk_read(int start_blk,int num_blk,char*buf)
该函数将上层文件需要访问的数据块的内容写入指定的缓冲区buf。函数返回实际读取的块数。
4)写入块:int blk_write(int start_blk,int num_blk,char*buf)
该函数将上层文件需要保存的数据块的内容(由buf指定)写入指定的虚拟块。函数返回实际写入的块数。
5)删除块:int blk_delete(int start_blk,int num_blk)
上层文件系统在确认虚拟块中的数据失效的时候,例如删除文件操作,应该调用该接口来通知抽象层,以便物理存储块的回收能够更高效的进行。
实现虚块空间的数组存储在.blockmap文件中。选择使用文件存储虚块空间映射表是为了贯彻日志的思想。由于这个索引表是系统在数据访问的时候要经常查询和修改的,因此,如果放在一个固定的物理扇区段内就会在系统访问数据时带来多余的磁头机械运动,这就违背了日志结构的设计初衷了。我们将这个表实现为一个文件,它的信息节点保存在抽象层的超级块中,而其内容则随数据一起写入日志,但是不进行压缩存储,以避免增加系统负荷。
2.日志结构物理存储数据块映射层的实现(②),参见图4:
日志结构存储是我们设计中一直贯彻的思想。
首先需要确定的是回收段的大小。综合考察回收的效率和磁盘数据块的使用灵活性,一个回收段的大小为512kB较为适宜。这里的回收段是物理磁盘上的,我们称之为物理回收段(①)。物理回收段是经过压缩处理之后的。我们根据这个大小确定映射层的对应段,称之为逻辑回收段(②)的大小为2MB。这是为了使得一个逻辑回收段经过压缩之后能够大于物理回收段的大小,否则就会由于段的结束而有一定的物理存储空间被浪费了。
为了得到较高的压缩比,我们以16kB为一个数据单元(压缩数据块(③))进行压缩处理。因此,一个逻辑回收段中包含128个压缩数据块。由于上层文件系统的逻辑数据块大小为1kB,所以每个压缩数据块中包含16个逻辑数据块。
于是,我们可以得到虚块空间的32位指针的数据结构,如图3所示。
3.数据压缩/解压缩层的实现(③),
这一层是真正的物理存储层,它将日志层传来的数据进行压缩存储。物理回收块与逻辑回收块的对应关系如图4所示。为了优化数据的读写,每一个压缩后的压缩数据块起始地址是8的整数倍。于是,只需要16位就可以表示压缩数据块的地址了。
其中空间管理块是记录各个压缩数据块的起始地址以及该回收段内空间使用的情况。它的结构如图5所示。除空间管理块以外的都是数据块(图中未标注)以下对各数据段进行详细的说明。
1)空闲压缩数据块映射表(①):表内的每一个比特对应一个压缩数据块的空闲情况。‘1’表示占用,‘0’表示空闲。空间回收进程依靠这个表所表示的信息来判断是否要进行回收。当空闲块数量大于一个阀值时,需要回收该段。
2)空闲逻辑数据块映射表(②):该表是由128个2字节数组组成。每一个数组元素对应一个段内的压缩数据块。每个数组元素由16比特组成,每个比特对应一个压缩数据块内的一个逻辑数据块的空闲情况。‘1’表示占用,‘0’表示空闲。当上层文件系统对某一个逻辑数据块进行了更新,或者调用了blk_delete删除了该块,都会在这里进行记录。当记录进程发现该压缩数据块内部的逻辑数据块的空闲数量大于某一个阀值的时候,就会在空闲压缩数据块映射表中进行标记。
3)压缩数据块地址索引表(③):这个表该表是由128个2字节数组组成。每一个数组元素对应一个段内的压缩数据块。数组元素的值与8相乘便得到了对应压缩数据块的起始地址偏移量。这个偏移量是相对于数据块的起始地址的偏移。前后两个压缩数据块起始地址之差就是数据块的长度。
4)下一空闲段指针(④):物理回收段在磁盘上是一个大的链表,这个数据段就是指向下一个空闲回收段的指针。它的长度是32比特。回收进程负责维护和更新这一个数据段。
4.压缩算法的实现
算法采用动态字典压缩,新字由字典中两个已有的字创建。具体描述如图6。由流程图可以看出,算法充分利用了字典中已有的编码。在常用字符串出现很少的情况下就可将其加入字典。解压缩算法如图7。
实际的文件系统中包括大量不同格式的文件,这些文件大小不一,相应的压缩算法无法对它们保持统一的压缩率。为了能够将压缩率控制在50%的水平,压缩算法在实现的时候向上层提供了可配置接口,即文件系统调用压缩算法时,可以指定编码位数。这样压缩比较大的文件的时候就可以采用较长的编码,从而避免了字典溢出的情况。同时由于编码位数不是8的倍数,即编码不可能存储于整数字节中,我们利用了两个buffer来做缓冲输入输出数据。我们以编码长度为12为例,具体的函数及其功能描述如下:
1)input_code(char*input)
input中存放着需要解压的数据块,数据块中的基本压缩编码长度为12位,所以函数需要将字节转化为12位有效数据输出。输入缓冲为一32位的存储单元,初始时,从input数据块中读入四个字节,然后将头部12位数据移入临时存储单元,返回此临时存储单元中的数据。以后每次调用此函数时,都要测试缓冲区中有效数据的位数,如果小于24,则需从input中读入新的数据,直至其有效数据长度大于24。这样就实现了输入的8位数据到12位数据的转化。
2)output_code(char*output,unsigned int code)
函数将压缩过后的编码输出到output数据块中。编码长度为12位,而output的基本单位为字节。所以此函数与input_code实现的功能相反,它将12位编码转换为8位字节数据输出。算法中同样采用了一32位的缓冲区,首先将此缓冲区填充使其有效数据长度大于20位。然后从缓冲区头开始输出8位数据,直至有效数据长度小于8为止。以后新的编码数据来的时候会先使有效数据长度达到20位以上后,再输出数据。最后的缓冲区中的数据需要额外的调用此函数,将其输出。
3)find_match(int hash_prefix,unsigned int hash_character)
输入为一编码字符和一普通字符(其值小于256)。函数主要是在哈希表中查找字符串hash_prefix+hash_character是否在字典中。哈希函数采用hash_prefix右移4位然后与hash_character与或。通过函数操作后得到的值在相应的哈希链表中顺序查找字符串是否在字典中。如果有则返回在表中的索引值,如果没有则返回表中最后一个节点索引值。此函数只能测试一个字典编码+一个普通字符所构成的新字是否在字典中。
4)longest_match(int hash_prefix,unsigned int hash_character)
函数将输出最长匹配字符串编码。首先利用find_match()函数查找到一个最长字符串A,然后再利用find_match()查找下一个最长匹配字符串B,测试A+B是否在字典中,如果是则将其值置入A中,重复上述过程,直至A+B不在字典中,返回A。由于新字的构成由两个新字构成,所以存在一个递规过程来查找最长匹配字符串。
5)add_dictionary_item(int prefix,int sufix,int index)
函数将prefix+sufix加入字典中。
6)char*decode_stnng(unsigned char*buffer,unsigned int code)
Code为解压缩块中的某个字符,函数将其对应的字符串解压到buffer中。函数采用堆栈存储解压缩字符。初始化时将code压入堆栈,然后循环做如下步骤:查找堆栈顶端字符的解码,如果它是一个字符则将其弹出,并压入buffer中,如果是一压缩编码,则在字典中查找其对应的两个字符,弹出堆栈顶端字符,将两个字符压入堆栈。重复上述过程,直至堆栈为空,此时buffer中存储的字符串即为code的解码。
7)compress(char*input,int*size,char*output)
输入为待压缩数据块和其大小(字节数),输出为压缩数据块,同时在size中返回压缩好的数据块的大小。函数利用longest_match()查找到最长匹配字符串,同时函数返回了一个未匹配字符串(也是字典中的字),调用函数output_code()输出压缩字符串,同时将longest_match()返回的两个字加入到新的字典中。函数最后输出编码最大值(4k-1)以标志压缩数据块的尾部。
8)expand(char*input,int*size,char*output)
输入为待解压数据块和大小,输出为解压数据块,同时在size中返回解压缩好的数据块的大小。首先调用input_code()得到压缩编码,然后调用decode_string()输出解码,同时将此压缩编码和前一个压缩编码压入字典中。
图8、图9和图10分别为读写操作流程框图、创建自动压缩/解压缩磁盘分区操作流程
图、删除自动压缩/解压缩磁盘分区操作流程图。图中已示出了明确的操作步骤,不再叙述。
本发明大幅度提高嵌入式设备资源,特别是存储资源的利用率,从而极大的改善其性能,不仅具有理论意义,而且具有非常大的应用价值并且能带来可观的经济效益。
Claims (5)
1、自动压缩/解压缩文件系统,其特征在于:在普通文件系统和用于存储经过压缩的数据的物理存储器之间加入了一个整合到物理存储器的硬件当中的磁盘存储块抽象层,所述磁盘存储块抽象层是一个把普通文件系统与压缩过的磁盘数据相隔开,并通过修改该磁盘存储块抽象层去支持多种文件系统的模块,它依次含有:
1)虚拟磁盘逻辑数据块存储空间,即虚块空间:它是为磁盘存储块抽象层向上层文件系统提供接口的一段连续的逻辑数据块存储区域,即下标为虚拟逻辑块号的一个数组,其内容是一个指向物理存储地点的指针;
2)日志结构物理存储数据块映射层:它是日志结构的算法,负责上述虚块空间向磁盘物理数据块映射,即供上层文件系统把数据从虚块空间通过该映射层写入或从磁盘读出;
3)数据压缩/解压缩层:它用于存放经过LZW算法压缩的数据。
2、如权利要求1所述的自动压缩/解压缩文件系统,其特征在于:所述虚块空间带一个含有逻辑数据块号的32位的指针,当该指针指向物理存储地点的同时,上述虚块空间就替磁盘存储块抽象层向上层文件系统提供以下接口:
1)申请保留快:它是一种为上层文件系统保留一段虚块空间以便今后使用的函数;
2)申请释放块:它是一种为上层文件系统释放一段虚块空间以便今后提供给其他文件系统使用的函数;
3)读取块:它是一种把上层文件系统需要访问的数据块的内容写入指定缓冲区的函数;
4)写入块:它是一种把上层文件系统需要提供的由上述缓冲区指定的数据块的内容写入指定虚拟块的函数;
5)删除块:在上层文件系统确认虚拟块中的数据失效而要求执行删除文件操作时,调用它来通知磁盘存储块抽象层。
3、如权利要求1所述的自动压缩/解压缩文件系统,其特征在于:所述的日志结构物理存储数据块映射层是一个内容为连续的压缩数据块存储区域的逻辑回收段;所述压缩数据块是对上述逻辑数据块以一定的压缩比进行压缩处理后形成的一个数据单元,所述逻辑回收段再以一定的压缩比进行压缩处理后形成物理磁盘上存储已压缩数据的物理回收段;上述逻辑数据块的块号和压缩数据块的块号、逻辑回收段的地址依次构成了虚块空间的32位空间指针的数据结构。
4、如权利要求1所述的自动压缩/解压缩文件系统,其特征在于:所述的数据压缩/解压缩层是对上述日志结构物理存储数据块映射层传来的数据进行压缩存储的物理磁盘,它依次由空间管理块和连续的物理回收块存储区域组成,其中,所述物理回收块和上述逻辑回收块的对应关系由上述32位空间指针决定;所述空间管理块则含有:
1)空闲压缩数据块映射表:表内每一个比特的二进制码对应一个压缩数据块的空闲情况,并以空闲压缩数据块数是否大于设定的阀值来确定是否回收该段;
2)空闲逻辑数据块映射表:一个逻辑回收段内的每一个压缩数据块对应一个2字节数组,一个2字节数组内的每个比特用二进制码对应一个压缩数据块内的一个逻辑数据块的空闲情况,以一个压缩数据块内的逻辑数据块的空闲数是否大于设定的阀值来确定是否应在空闲压缩数据块映射表中进行标记;
3)压缩数据块地址索引表:它由数量上和逻辑回收段内的压缩数据块数相同的数组组成,每一个数组对应一个压缩数据块;为了优化数据的读写,每一个压缩后的压缩数据块起始地址是包含在每个压缩数据中的逻辑数据块数的n/2倍,n为大于1的整数,从而使得前后两个压缩数据块起始地址之差等于该压缩数据块的长度。
5、根据权利要求1所述的自动压缩/解压缩文件系统所设计的压缩算法,其特征在于:它是一种动态字典压缩算法,每个新字符由字典中的两个已有的字符创建;在做压缩算法时,上述两个已有的字符都是依次输入的字符中属于最长匹配的字符串,如果由它们两个组建的新字符不在字典中,则把新字符加入字典,否则就再次判断是否有第二个最长匹配字符出现,如有,重复以上判断过程,一直到不再有字符输入为止;在做解压缩算法时,如果得到的新字符不在字典中,就输出新字符,否则,就再次判断两个已有的字符输入,重复以上过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031006035A CN1200354C (zh) | 2003-01-17 | 2003-01-17 | 自动压缩/解压缩文件系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031006035A CN1200354C (zh) | 2003-01-17 | 2003-01-17 | 自动压缩/解压缩文件系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1425986A true CN1425986A (zh) | 2003-06-25 |
CN1200354C CN1200354C (zh) | 2005-05-04 |
Family
ID=4789862
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031006035A Expired - Fee Related CN1200354C (zh) | 2003-01-17 | 2003-01-17 | 自动压缩/解压缩文件系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1200354C (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100504873C (zh) * | 2006-01-10 | 2009-06-24 | 国际商业机器公司 | 管理归档文件系统的方法和装置 |
CN101957836A (zh) * | 2010-09-03 | 2011-01-26 | 清华大学 | 一种文件系统中可配置的实时透明压缩方法 |
CN102158349A (zh) * | 2011-02-09 | 2011-08-17 | 中兴通讯股份有限公司 | 一种日志管理装置及方法 |
CN101373436B (zh) * | 2008-09-05 | 2012-12-05 | 四川和芯微电子股份有限公司 | U盘上数据自动压缩和解压缩的方法 |
CN105700992A (zh) * | 2016-02-26 | 2016-06-22 | 湖南国科微电子股份有限公司 | 一种嵌入式系统日志记录方法及日志记录系统 |
CN107250991A (zh) * | 2015-02-13 | 2017-10-13 | 谷歌公司 | 透明硬件辅助存储器解压缩 |
CN107436848A (zh) * | 2017-08-03 | 2017-12-05 | 郑州云海信息技术有限公司 | 一种实现用户数据和压缩数据间转换的方法及装置 |
CN108009098A (zh) * | 2016-10-27 | 2018-05-08 | 希捷科技有限公司 | 具有经压缩的正向映射的存储分层 |
CN111587428A (zh) * | 2017-11-13 | 2020-08-25 | 维卡艾欧有限公司 | 分布式存储系统中的元数据日志 |
WO2021000263A1 (en) * | 2019-07-02 | 2021-01-07 | Microsoft Technology Licensing, Llc | Hardware-based memory compression |
CN114666406A (zh) * | 2022-02-24 | 2022-06-24 | 国电南瑞科技股份有限公司 | 一种基于物模型的电力物联网数据压缩方法及装置 |
CN117312256A (zh) * | 2023-11-29 | 2023-12-29 | 苏州元脑智能科技有限公司 | 文件系统、操作系统和电子设备 |
-
2003
- 2003-01-17 CN CNB031006035A patent/CN1200354C/zh not_active Expired - Fee Related
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100504873C (zh) * | 2006-01-10 | 2009-06-24 | 国际商业机器公司 | 管理归档文件系统的方法和装置 |
CN101373436B (zh) * | 2008-09-05 | 2012-12-05 | 四川和芯微电子股份有限公司 | U盘上数据自动压缩和解压缩的方法 |
CN101957836A (zh) * | 2010-09-03 | 2011-01-26 | 清华大学 | 一种文件系统中可配置的实时透明压缩方法 |
CN101957836B (zh) * | 2010-09-03 | 2012-07-11 | 清华大学 | 一种文件系统中可配置的实时透明压缩方法 |
CN102158349A (zh) * | 2011-02-09 | 2011-08-17 | 中兴通讯股份有限公司 | 一种日志管理装置及方法 |
WO2012106969A1 (zh) * | 2011-02-09 | 2012-08-16 | 中兴通讯股份有限公司 | 一种日志管理装置及方法 |
CN102158349B (zh) * | 2011-02-09 | 2016-03-30 | 中兴通讯股份有限公司 | 一种日志管理装置及方法 |
CN107250991A (zh) * | 2015-02-13 | 2017-10-13 | 谷歌公司 | 透明硬件辅助存储器解压缩 |
CN107250991B (zh) * | 2015-02-13 | 2020-08-28 | 谷歌有限责任公司 | 透明硬件辅助存储器解压缩 |
CN105700992A (zh) * | 2016-02-26 | 2016-06-22 | 湖南国科微电子股份有限公司 | 一种嵌入式系统日志记录方法及日志记录系统 |
CN108009098A (zh) * | 2016-10-27 | 2018-05-08 | 希捷科技有限公司 | 具有经压缩的正向映射的存储分层 |
CN107436848A (zh) * | 2017-08-03 | 2017-12-05 | 郑州云海信息技术有限公司 | 一种实现用户数据和压缩数据间转换的方法及装置 |
CN107436848B (zh) * | 2017-08-03 | 2021-02-02 | 苏州浪潮智能科技有限公司 | 一种实现用户数据和压缩数据间转换的方法及装置 |
CN111587428A (zh) * | 2017-11-13 | 2020-08-25 | 维卡艾欧有限公司 | 分布式存储系统中的元数据日志 |
CN111587428B (zh) * | 2017-11-13 | 2023-12-19 | 维卡艾欧有限公司 | 分布式存储系统中的元数据日志 |
WO2021000263A1 (en) * | 2019-07-02 | 2021-01-07 | Microsoft Technology Licensing, Llc | Hardware-based memory compression |
CN114666406A (zh) * | 2022-02-24 | 2022-06-24 | 国电南瑞科技股份有限公司 | 一种基于物模型的电力物联网数据压缩方法及装置 |
CN114666406B (zh) * | 2022-02-24 | 2023-11-21 | 国电南瑞科技股份有限公司 | 一种基于物模型的电力物联网数据压缩方法及装置 |
CN117312256A (zh) * | 2023-11-29 | 2023-12-29 | 苏州元脑智能科技有限公司 | 文件系统、操作系统和电子设备 |
CN117312256B (zh) * | 2023-11-29 | 2024-02-27 | 苏州元脑智能科技有限公司 | 文件系统、操作系统和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN1200354C (zh) | 2005-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101453264B1 (ko) | 메모리 디바이스에 대한 저장 어드레스 리매핑을 위한 방법과 시스템 | |
CN101916228B (zh) | 带有数据压缩功能的闪存转换层及实现方法 | |
KR100922389B1 (ko) | 플래시 메모리를 위한 색인 스킴 | |
US8537613B2 (en) | Multi-layer memory system | |
KR101739213B1 (ko) | 압축되고 컴팩트화된 가상 메모리를 위한 방법 및 장치 | |
CN1200354C (zh) | 自动压缩/解压缩文件系统 | |
US20180089074A1 (en) | Techniques to Manage Key-Value Storage at a Memory or Storage Device | |
CN101320594B (zh) | 一种闪存芯片的物理操作方法 | |
JP2011519095A (ja) | マルチバンク記憶装置のためのストレージアドレス再マッピングのための方法およびシステム | |
US11791838B2 (en) | Near-storage acceleration of dictionary decoding | |
CN101030165A (zh) | 一种磁盘空间管理方法及系统 | |
US11200159B2 (en) | System and method for facilitating efficient utilization of NAND flash memory | |
KR101348255B1 (ko) | 고정된 크기의 저장 블록을 가진 메모리 시스템에서데이터의 변환된 유닛의 저장 | |
CN1492362A (zh) | 一种嵌入式数据库的数据备份和恢复方法 | |
CN101777061A (zh) | 一种java卡对象管理方法及java卡 | |
CN1447242A (zh) | 可适用于快闪存储卡的控制装置及其建构方法 | |
US11922012B2 (en) | Memory mapping device and method | |
KR20090108695A (ko) | 다이렉트 데이터 파일 메모리 시스템에서 lba 인터페이스를 관리하는 방법 | |
CN1828538A (zh) | 嵌入式系统中直接从文件系统运行程序的实现方法 | |
CN1908937A (zh) | 一种闪存中的flash文件的管理方法及系统 | |
WO2011002978A1 (en) | Method for reliable and efficient filesystem metadata conversion | |
CN1260546A (zh) | 在手持装置中存储和检索数据的方法及装置 | |
CN106406746B (zh) | 映射表存取方法、存储器控制电路单元及存储器存储装置 | |
CN1228716C (zh) | 非挥发性存储器存取系统及其存取方法 | |
CN1776687A (zh) | Fat文件系统中文件分割的方法及其装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20050504 Termination date: 20100219 |