U盘上数据自动压缩和解压缩的方法

文档序号:6459858阅读:519来源:国知局
专利名称:U盘上数据自动压缩和解压缩的方法
技术领域
本发明涉及u盘上的数据处理方法,特别是实现u盘上数据自动压縮和解压 縮的方法。
目前能够实现对存贮在我公司所生产u盘上的数据自动进行压縮和解压缩, 在不改变u盘容量的前提下大大提升u盘的实际存贮能力,在对驱动程序稍加修 改后就可以实现对所有u盘数据的压缩和解压縮。
背景技术
近些年来,随着信息技术的飞速发展,信息的数据量也变得越来越庞大,虽
然u盘作为新一代的存储设备,具有容量大的特点,但与需要存储的信息量相比, 仍然显得其容量不足,这就经常会导致原来的u盘因为容量太小而不能使用。 为了解决这个问题,国内外大多数公司采用的办法就是不断扩大u盘的容量,
现在一般12个月会生产容量增加一倍的U盘,目前这种唯一的方法造成了很多不
必要的浪费。

发明内容
本发明针对以上的问题提出了 u盘上数据自动压縮和解压縮的方法,通过在u 盘上安装数据处理的程序来解决数据的压縮和解压縮,从而达到不用扩大u盘容
量也可以有更大的存储量的目的。
本发明技术方案如下
U盘上数据自动压縮和解压縮的方法,其特征在于U盘中存储有一个位于 Windows文,系统的输入输出子系统管理层(I/O Subsystem Manager)和文件系 统驱动层(File System Driver)之间的U盘压缩驱动程序(USBZip Driver), 所述U盘压縮驱动程序创建一个内核线程;当用户进程发出读写命令后,U盘压縮 驱动程序从输入输出子系统管理层拦截读写命令并判断该读写命令操作是否对指 定的U盘进行;当读写命令操作是对指定的U盘进行时,所述U盘压縮驱动程序 调用Windows的文件系统驱动层进行读写操作后,所述内核线程用于自动处理读 写数据的压縮和解压縮。 所述U盘压縮驱动程序在第一次使用时自动安装,以后在每次插入u盘时, Windows会自动加载己安装的U盘压縮驱动程序;当li盘被拔出时,U盘压縮驱动
程序也会被自动卸载。
桥述u盘压縮驱动程序自动加载后,打开u盘时,u盘压縮驱动程序创建内核
线程;关闭U盘时,U盘压縮驱动程序会终止该内核线程。
.所述内核线程一直处于睡眠状态,是通过U盘压縮驱动程序调用Windows的 文件系统驱动层进行读写操作之后,U盘压縮驱动程序为睡眠的内核线程准备好需 要压缩或解压縮的数据等参数信息的必要的数据后才唤醒内核线程,内核线程在 执行完压缩或者解压縮后会继续睡眠。也就是说在读操作时,U盘压縮驱动程序会 将内核线程返回的数据返回给用户进程,最后内核线程继续睡眠;在写操作的时, U盘压縮驱动程序会调用Windows的文件系统驱动层将返回的数据写入U盘,最后 内核线程继续睡眠。
所述U盘压縮驱动程序调用Windows的文件系统驱动层进行读写操作之前, 还进行了文件夹重定向,将读写命令操作重新定向到硬盘上的一个临时目录中。
当读写命令操作不是对指定的U盘进行时,输入输出子系统管理层就将读写 命令操作交给Windows的文件系统驱动层进行处理。
U盘上数据自动解压縮的方法,其具体步骤为当Windows文件系统的输入输 出子系统管理层层传递下来的操作为读操作时,U盘压縮驱动程序会首先判断读操 作是否是对指定U盘进行,如果不是,U盘压縮驱动程序直接调用Windows的文件 系统驱动进行正常的读操作处理;如果是,U盘压缩驱动程序首先进行文件重定向, 将读取文件路径上包含的文件夹依次重定向到硬盘上的一个临时目录中,然后U 盘压縮驱动程序会在所述临时目录中创建一个与读取文件同名的重定向文件,然 后调用Windows的文件系统驱动将压縮信息和压縮数据从U盘中读出并为内核线 程准备好相应的数据,唤醒内核线程执行解压縮并等待内核线程返回结果,当内 核线程完成数据段的解压縮并返回结果后,U盘压縮驱动程序会记录已解压的数据 段信息,并将需要的数据返回给Windows文件系统的输入输出子系统。如果下一 次Windows又发起了对该文件相同数据段的读操作,U盘压縮驱动程序则根据上一 次的解压縮记录,直接调用Windows的文件系统驱动从重定向文件中读出需要的 数据返回给Windows文件系统的输入输出子系统。
U盘上数据自动压縮的方法,其具体步骤为当Windows文件系统的输入输出
子系统管理层传递下来的操作为写操作时,U盘压縮驱动程序首先判断所述读操作 是否是对指定U盘进行,如果不是,U盘压縮驱动程序直接调用Windows文件系统 的文件系统驱动层进行正常的写操作处理;如果是,U盘压缩驱动程序首先进行文 件夹的重定向,将读取文件路径上包含的文件夹依次重定向到磁盘上的一个临时 目录中,接着调用Windows文件系统的文件系统驱动层将数据先写入磁盘的临时 目录中,然后U盘压缩驱动程序为内核线程准备好相应的数据,唤醒内核线程并 等待内核线程返回结果,当内核线程进行了数据的解压縮并返回结果后,U盘压縮 驱动程序最后调用Windows文件系统的文件系统驱动层将数据写入U盘。
所述压缩是当写文件到U盘时,首先将文件的数据按照指定的大小分段,然 后判断数据是否需要进行压縮,如果不需要,则直接将所有段的原始数据写入U 盘即可,如果需要,那么就进行数据压縮并将压縮后的数据写入U盘,最后还要 将压縮每段数据时产生的压縮信息组合起来构成整个文件的压縮信息写入U盘压 縮文件的末尾。这种分段的压縮方法区别于传统的压縮方式,传统的压縮方式是 采用流式压縮方法,即将需要压縮的数据做为一个整体进行压縮,这种方式在随 机读取解压縮文件的部分数据时效率是非常低的,分段压縮方式能够很好的解决 这个问题。
所述解压縮是当读文件时,首先判断文件是否为USBZip Driver压縮的文件, 如果不是,则从U盘中直接读取文件中相应位置的数据即可,如果是,则先从U 盘中读取压縮文件末尾处的压縮信息,解析压縮信息,得到需要读取的数据在压 縮文件中的相应位置和长度,从U盘中读取压縮文件的相应块,解压縮这些数据 块最后得到原始数据。
所述U盘压縮驱动程序在解压縮U盘上的文件数据到临时目录的重定向文件 时,舍记录已解压的数据段地址和长度到一个双向链表中,如果读操作所要访问 的数据段已经包含在这个双向链表时,链表保持不变,相反,链表向数据方向增 加,引起解压縮操作,这样就像一个可移动的窗口一样,因此我们称之为滑动窗 口的解压縮方式。
为了方便用户,使之觉得支持自动压縮和解压縮的U盘和普通U盘的用法完 全相同,这种U盘会在量产时由定制的量产工具划分出一个隐藏分区,U盘压縮驱 动程序(USBZip Driver)和它的安装程序会被下载到这个隐藏分区中,在用户第 一次使用这种U盘时,在隐藏分区中的安装程序会自动将U盘压縮驱动程序
(USBZip Driver)装入Windows操作系统。
本发明能使用户在没有察觉任何区别的情况下就能大大提高u盘的实际存贮 能力,从而达到不用扩大U盘容量也可以有更大的存储量,另外还具备如下优点
一、 驱动程序的自动安装装载驱动程序的可执行程序已经在U盘量产时下
载到了 u盘的隐藏分区中,这个可执行程序能够自动将u盘上的驱动程序的安装
到系统中,这样就避免了用户手动去安装驱动程序,减少了用户的麻烦,方便了
用户;
二、 驱动程序的自动装载与卸载实现了驱动程序在将U盘插入计算机时自
动装载到操作系统内核中,在拨出时自动将它卸载掉,这样就不会影响到用户的
一般操作,只有在需要对u盘进行操作时,才会调用驱动,最大限度的确保了系 统的安全性和可靠性;
三、 文件夹和文件的动态重定向技术只对兼容的压縮文件进行重定向,对 其它压縮格式文件采用直接访问,同时只对压縮文件进行重定向而并不对文件夹 进行重定向,这样就能在不需要执行任何解压縮的操作就能看到这个文件夹中的 内容,而不是进行了解压縮才能显示其内容,这样就避免了延时;动态重定向技 术还能实现缓存的作用,已经解压縮过的数据段被再次访问时,无需再次解压缩, 因此访问速度接近非压縮文件;
四、 内核线程以滑动窗口的方式处理压縮、解压縮和物理读写操作这样就 能以最快的速度从大文件中解压缩出需要的数据段,而不是完全解压縮出整个文 件,縮短读写操作程序执行的时间,提高系统的响应时间,提高了系统的效率, 不会导致程序长时间的无响应;
五、 先进的压縮算法驱动程序中的内核线程采用了先进的高效压縮算法, 使得文件具有很高的压縮比和很少的压縮时间,能够大大提高U盘的实际存lt能 力和响应时间;同时该算法能识别出数据是否已经采用了其它压缩算法,对于这 种数裙,它将使用直接存储,因此压縮U盘中实际共存多种压缩格式的数据文件。


图1为本发明驱动程序的架构示意图
图2为本发明U盘压縮驱动程序读操作的流程图 图3为本发明U盘压縮驱动程序写操作的流程图 图4为本发明内核线程的流程图
图5为本发明数据压縮的流程图 图6为本发明数据解压縮的流程图 图7为本发明量产过程的流程图
具体实施例方式
如图1-6所示,U盘上数据自动压縮和解压縮的方法,U盘中存储有一个位于 Windows文件系统的输入输出子系统管理层(I/O Subsystem Manager)和文件系 统驱动层(File System Driver)之间的U盘压缩驱动程序(USBZip Driver), 所述U盘压縮驱动程序创建一个内核线程;当用户进程发出读写命令后,U盘压縮 驱动程序从输入输出子系统管理层拦截读写命令并判断该读写命令操作是否对指 定的U盘进行;当读写命令操作是对指定的U盘进行时,所述U盘压縮驱动程序 调用Windows的文件系统驱动层进行读写操作后,所述内核线程用于自动处理读 写数据的压縮和解压縮。
所述U盘压缩驱动程序在第一次使用时自动安装,以后在每次插入U盘时, Windows会自动加载已安装的U盘压縮驱动程序;当U盘被拔出时,U盘压缩驱动 程序也会被自动卸载。
所述U盘压縮驱动程序自动加载后,打开U盘时,U盘压縮驱动程序创建内核 线程;'关闭U盘时,U盘压縮驱动程序会终止该内核线程。
所述内核线程一直处于睡眠状态,是通过U盘压縮驱动程序调用Windows的 文件系统驱动层进行读写操作之后,U盘压縮驱动程序为睡眠的内核线程准备好需 要压缩或解压缩的数据等参数信息的必要的数据后才唤醒内核线程,内核线程在 执行完压縮或者解压縮后会继续睡眠。也就是说在读操作时,U盘压縮驱动程序会 将内核线程返回的数据返回给用户进程,最后内核线程继续睡眠;在写操作的时, U盘压縮驱动程序会调用Windows的文件系统驱动层将返回的数据写入U盘,最后 内核线程继续睡眠。
所述U盘压縮驱动程序调用Windows的文件系统驱动层进行读写操作之前, 还进行了文件夹重定向,将读写命令操作重新定向到硬盘上的一个临时目录中。
当读写命令操作不是对指定的U盘进行时,输入输出子系统管理层就将读写 命令操作交给Windows的文件系统驱动层进行处理。
U盘上数据自动解压縮的方法,其具体步骤为当Windows文件系统的输入输 出子系统管理层层传递下来的操作为读操作时,U盘压縮驱动程序会首先判断读操
作是否是对指定U盘进行,如果不是,U盘压縮驱动程序直接调用Windows文件系 统的文件系统驱动层进行正常的读操作处理;如果是,U盘压缩驱动程序首先进行 文件夹的重定向,将读取文件路径上包含的文件夹依次重定向到硬盘上的一个临 时目录中,然后U盘压缩驱动程序会在所述临时目录中创建一个与读取文件同名 的重定向文件,然后调用Windows的文件系统驱动将压縮信息和压縮数据从U盘 中读出并为内核线程准备好相应的数据,唤醒内核线程执行解压縮并等待内核线 程返回结果,幸内核线程完成数据段的解压缩并返回结果后,U盘压縮驱动程序会 记录已解压的数据段信息,并将需要的数据返回给Windows文件系统的输入输出 子系统。如果下一次Windows又发起了对该文件相同数据段的读操作,U盘压縮驱 动程序则根据上一次的解压縮记录,直接调用Windows的文件系统驱动从重定向 文件中读出需要的数据返回给Windows文件系统的输入输出子系统。
U盘上数据自动压縮的方法,其具体步骤为当Windows文件系统的输入输出 子系统管理层传递下来的操作为写操作时,U盘压缩驱动程序首先判断所述读操作 是否是对指定U盘进行,如果不是,U盘压縮驱动程序直接调用Windows文件系统 的文件系统驱动层进行正常的写操作处理;如果是,U盘压縮驱动程序首先进行文 件夹的重定向,将读取文件路径上包含的文件夹依次重定向到磁盘上的一个临时 目录中,接着调用Windows文件系统的文件系统驱动层将数据先写入磁盘的临时 目录中,然后U盘压縮驱动程序为内核线程准备好相应的数据,唤醒内核线程并 等待内核线程返回结果,当内核线程进行了数据的解压缩并返回结果后,U盘压縮 驱动程序最后调用Windows文件系统的文件系统驱动层将数据写入U盘。
所述压縮是当写文件到U盘时,首先将文件的数据按照指定的大小分段,然 后判断数据是否需要进行压縮,如果不需要,则直接将所有段的原始数据写入U 盘即可,如果需要,那么就进行数据压縮并将压縮后的数据写入U盘,最后还要 将压縮每段数据时产生的压縮信息组合起来构成整个文件的压縮信息写入U盘压 缩文件的末尾。这种分段的压縮方法区别于传统的压缩方式,传统的压縮方式是 采用流式压縮方法,即将需要压縮的数据做为一个整体进行压縮,这种方式在随 机读取解压縮文件的部分数据时效率是非常低的,分段压縮方式能够很好的解决 这个问题。
所述解压縮是当读文件时,首先判断文件是否为USBZip Driver压縮的文件, 如果不是,则从U盘中直接读取文件中相应位置的数据即可,如果是,则先从U
盘中读取压縮文件末尾处的压縮信息,解析压縮信息,得到需要读取的数据在压 缩文件中的相应位置和长度,从U盘中读取压缩文件的相应块,解压縮这些数据 块最后得到原始数据。
所述U盘压缩驱动程序在解压縮U盘上的文件数据到临时目录的重定向文件 时,会记录己解压的数据段地址和长度到一个双向链表中,如果读操作所要访问 的数据段已经包含在这个双向链表时,链表保持不变,相反,链表向数据方向增 加,引起解压縮操作,这样就像一个可移动的窗口一样,因此我们称之为滑动窗 口的解压縮方式。
为了方便用户,使之觉得支持自动压縮和解压缩的U盘和普通U盘的用法完
全相同,这种u盘会在量产时由定制的量产工具划分出一个隐藏分区,u盘压縮驱
动程序(USBZip Driver)和它的安装程序会被下载到这个隐藏分区中,在用户第 一次使用这种U盘时,在隐藏分区中的安装程序会自动将U盘压縮驱动程序 (USBZip Driver)装入Windows操作系统。
如图7所示,所述量产过程需要定制的U盘量产工具的配合,这个量产工具 会首先收集需要生产的U盘信息,同时按照厂商的要求检测U盘,称为准备阶段;
其次是对U盘的物理层进行全面的检测;然后将相关的配置信息放入U盘中;最
后按照产品的出厂要求设置u盘的详细参数,划分出一个用户不能看到的隐藏分
区,并产生文件系统,将编译完成的驱动程序和它的安装程序下载到隐藏分区中, 做最后的检测,最后这部分功能是传统的量产工具不具备的。
权利要求
1.U盘上数据自动压缩和解压缩的方法,其特征在于U盘中存储有一个位于Window文件系统的输入输出子系统管理层和文件系统驱动层之间的U盘压缩驱动程序,所述U盘压缩驱动程序创建一个内核线程;当用户进程发出读写命令后,U盘压缩驱动程序从输入输出子系统管理层拦截读写命令并判断所述读写命令操作是否对指定的U盘进行;当读写命令操作是对指定的U盘进行时,所述U盘压缩驱动程序调用Windows的文件系统驱动层进行读写操作后,所述内核线程用于自动处理读写数据的压缩和解压缩。
2、 根据权利要求1所述的U盘上数据自动压縮和解压縮的方法,其特征在于所述U盘压縮驱动程序在第一次使用时自动安装,以后在每次插入U盘时,WINDOWS 会自动加载已安装的U盘压縮驱动程序;当U盘被拔出时,U盘压縮驱动程序也会 被自动卸载。
3、 根据权利要求2所述的U盘上数据自动压縮和解压缩的方法,其特征在于所述U盘压縮驱动程序自动加载后,打开U盘时,U盘压縮驱动程序创建内核线程;关闭U盘时,U盘压縮驱动程序会终止该内核线程。
4、 根据权利要求1所述的U盘上数据自动压縮和解压缩的方法,其特征在于 所述内核线程一直处于睡眠状态,是通过U盘压縮驱动程序调用Windows的文件 系统驱动层进行读写操作之后,U盘压缩驱动程序为睡眠的内核线程准备好必要的 数据才唤醒内核线程,内核线程在执行完压缩或者解压縮后会继续睡眠。
5、 根据权利要求1所述的U盘上数据自动压縮和解压縮的方法,其特征在于 所述U盘压縮驱动程序调用Windows的文件系统驱动层进行读写操作之前,还进 行了文件夹重定向,将读写命令操作重新定向到硬盘上的一个临时目录中。
6、 '根据权利要求1所述的U盘上数据自动压縮和解压缩的方法,其特征在于 当读与命令操作不是对指定的U盘进行时,输入输出子系统管理层就将读写命令 操作交给Windows的文件系统驱动层进行处理。
7、 根据权利要求1所述的U盘上数据自动压縮和解压縮的方法,其特征在于 U盘上数据自动解压縮的步骤为当Windows文件系统的输入输出子系统管理层层 传递下来的操作为读操作时,U盘压縮驱动程序会首先判断读操作是否是对指定U 盘进行,如果不是,U盘压縮驱动程序直接调用Windows文件系统的文件系统驱动 层进行正常的读操作处理;如果是,U盘压缩驱动程序首先进行文件的重定向,将 读取文件路径上包含的文件夹依次重定向到磁盘上的一个临时目录中,然后U盘 压縮驱动程序会在所述临时目录中创建一个与读取文件同名的重定向文件,然后 调用Windows的文件系统驱动将压縮信息和压縮数据从U盘中读出并为内核线程 准备好相应的数据,唤醒内核线程执行解压縮并等待内核线程返回结果,当内核 线程完成数据段的解压縮并返回结果后,U盘压縮驱动程序会记录已解压的数据段 信息,.弁将需要的数据返回给Windows文件系统的输入输出子系统;当下一次 Windows又发起了对该文件相同数据段的读操作,U盘压缩驱动程序则根据上一次 的解压縮记录,直接调用Windows的文件系统驱动从重定向文件中读出需要的数 据返回给Windows文件系统的输入输出子系统。
8、 根据权利要求1所述的U盘上数据自动压缩和解压縮的方法,其特征在于 U盘上数据自动压縮的步骤为当Windows文件系统的输入输出子系统管理层传递 下来的操作为写操作时,U盘压縮驱动程序首先判断所述读操作是否是对指定U盘 进行,如果不是,U盘压縮驱动程序直接调用Windows文件系统的文件系统驱动层 进行正常的写操作处理;如果是,U盘压缩驱动程序首先进行文件夹的重定向,将 读取文件路径上包含的文件夹依次重定向到磁盘上的一个临时目录中,接着调用 Windows文件系统的文件系统驱动层将数据先写入磁盘的临时目录中,然后U盘压 縮驱动程序为内核线程准备好相应的数据,唤醒内核线程并等待内核线程返回结 果,当内核线程进行了数据的解压縮并返回结果后,U盘压縮驱动程序最后调用 Windows文件系统的文件系统驱动层将数据写入U盘。
9、 根据权利要求1所述的l]盘上数据自动压缩和解压縮的方法,其特征在于 所述压縮是当写文件到U盘时,首先将文件的数据按照指定的大小分段,然后判 断数据是否需要进行压縮,如果不需要,则直接将所有段的原始数据写入U盘即 可,如果需要,,那么就进行数据压縮并将压縮后的数据写入U盘,最后还要将压 缩每段数据时产生的压缩信息组合起来构成整个文件的压縮信息写入U盘压縮文 件的末尾;所述解压縮是当读文件时,首先判断文件是否为USBZip Driver压縮 的文件,如果不是,则从U盘中直接读取文件中相应位置的数据即可,如果是, 则先从U盘中读取压縮文件末尾处的压縮信息,解析压縮信息,得到需要读取数 据在压縮文件中的相应位置和长度,从U盘中读取压縮文件的相应块,解压縮这 些数据块最后得到原始数据;所述U盘压縮驱动程序在解压縮U盘上的文件数据 到临时目录的重定向文件时,将已解压的数据段地址和长度记录到一个双向链表 中,当读操作所要访问的数据段已经包含在所述的双向链表时,链表保持不变, 当读操作所要访问的数据段不包含在所述的双向链表时,链表向数据方向增加, 引起解压縮操作。
10、根据权利要求1所述的U盘上数据自动压縮和解压缩的方法,其特征在 于所述U盘压縮驱动程序和它的安装程序被下载到U盘在量产时由定制的量产 工具划分出的一个隐藏分区中,在用户第一次使用这种U盘时,在隐藏分区中的 安装程序会自动将U盘压縮驱动程序装入Windows操作系统。
全文摘要
本发明公开了U盘上数据自动压缩和解压缩的方法,U盘中存储有一个位于Window文件系统的输入输出子系统管理层和文件系统驱动层之间的U盘压缩驱动程序,所述U盘压缩驱动程序创建一个内核线程;当用户进程发出读写命令后,U盘压缩驱动程序从输入输出子系统管理层拦截读写命令并判断所述读写命令操作是否对指定的U盘进行;当读写命令操作是对指定的U盘进行时,所述U盘压缩驱动程序调用Windows的文件系统驱动层进行读写操作后,所述内核线程用于自动处理读写数据的压缩和解压缩;本发明通过在U盘上安装数据处理的软件来解决数据的压缩和解压缩,从而不用扩大U盘容量就可以有更大的存储量,使用方便,安全性和可靠性高。
文档编号G06F9/445GK101373436SQ20081004599
公开日2009年2月25日 申请日期2008年9月5日 优先权日2008年9月5日
发明者姚立行, 张宁军 申请人:四川登巅微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1