基于簇的多重映射节约硬盘空间

时间:2022-07-15 11:12:50

摘要:该文介绍了计算机和其他存储器中另一种文件存储结构,提出了存储器结构中可能出现的簇重复性,达到节约存储空间,扩大硬盘容量的方法。

关键词:文件存储;簇;多重映射

中图分类号:TP311文献标识码:B文章编号:1009-3044(2008)35-2341-03

Multimap of the Cluster Which can Save the Space of Hard Disk

XIE Xiao-feng, Zhou Yi

(Shanghai Medical Workers'College, Shanghai 200237, China)

Abstract: This paper introduces a method of file store which can be used in computer and other storages. Multimap of the cluster whice can save the space of hard disk.

Key words: file store; cluster; multimap

计算机的功能是如此强大,似乎它无所不能,无所不会。我们现在使用的大部分计算机的设计思路是以匈牙利数学家冯?诺依曼的通用计算机方案为基础。也就是“冯・诺依曼计算机结构”。它定义了计算机是由存储器、运算器、控制器、输入设备和输出设备等五大部分组成[1]。这是任何学习计算机课程的学生在计算机教材综述中都可以读到的内容。其中计算机在使用存储器时往往遇到两个矛盾:①容量总是不够大②速度总是不够快。所谓容量不够大,其中的一方面是指存放信息资料(如数据库数据、声音和图像、视频、程序数据等等)的地方不够大。于是人们使用硬盘作为外部辅助处理器来存储资料,典型的是软磁盘存储器、硬磁盘存储器和光盘存储器。其中硬盘使用得最为广泛。可惜,硬盘不够大也一直成为用户应用计算机的一个瓶颈。

自计算机问世以来,硬盘的发展不可谓不快。有一句话形容“五十年容量大了八万倍”。1980年6月希捷推出的ST-506,容量只有5MB。而现在在个人计算机上选用的主流硬盘容量达到了250GB,相当于250,000MB容量,最大为400GB容量。硬盘的容量急剧扩大,可是硬盘内存储文件的需求也随之迅速增加,特别是在多媒体视频应用方面(见表1)。如何使得硬盘的大小能满足我们日益增长的各种需求,不断增加硬盘容量是一种办法,另一种办法就是笔者在本文中将要提出的:利用硬盘簇的多重映射来节约硬盘空间,从反方向上达到扩大硬盘容量的目的。

1 硬盘的数据结构

让我们先来看看现行的硬盘数据结构是如何划分的。初买来一块硬盘,我们是没有办法使用的,需要先对它进行分区、格式化。然后安装操作系统才可以使用。就拿我们一直沿用到现在的WIN9X/ME/2K/XP系列来说,一般要将硬盘分成主引导扇区、操作系统引导扇区、文件分配表、目录区以及数据区。这些工作一般在我们熟悉的FDISK命令中进行[2]。

主引导扇区位于整个硬盘的0磁道0柱面1扇区,作用是检查分区表是否正确以及确定哪个分区为引导分区。操作系统引导扇区通常位于硬盘的0磁道1柱面1扇区。对于多重引导方式启动的系统位于相应的主分区/扩展分区的第一个扇区。它的作用是读取本分区的引导文件,启动操作系统。

接下来是文件分配表FAT和目录区DIR。这是本文将要重点讨论的部分。文件分配表是硬盘文件寻址系统。一般有两个,第二个FAT为第一个FAT的备份。FAT区的大小由本分区的大小和文件分配单元的大小决定。FAT的格式我们熟悉的有FAT16、FAT32、NTFS等。其他的OS/2、UNIX/LINUX、NOVELL等都有自己的文件管理格式。

光有FAT还不能确定文件在硬盘中的位置。FAT必须和DIR配合才能准确定位文件的位置。DIR记录着每个文件(目录)的起始单元(这是最重要的)、文件的属性等等。定位文件时,操作系统根据DIR中的起始单元,结合FAT表可以知道文件在硬盘中的具置和大小了。

具体的文件读取原理是这样的:操作系统从目录区中读取文件信息,包括文件名、后缀名、文件大小等和文件在数据区保存的第一个簇的簇号。假定第一个簇号是0064,操作系统从0064簇读取相应的数据,然后再找到FAT的0064单元,如果0064单元的内容是结束标志(FF),则表示文件结束。否则0064单元保存的内容是文件下一个簇的簇号(如图1所示),0064单元中保存的是0065单元号,操作系统从0065簇中读取FL001.TXT文件的第二部分,然后再找到FAT的0065单元,里面保存的是文件下一个部分的簇号。这样重复下去,直到遇到文件结束标志(FF)为止,整个文件完整地作系统读取[3]。

由上述可知,数据在计算机硬盘上的排列是通过目录区DIR和文件分配表FAT在数据区DATA中定位文件的起始簇、长度和文件占据了哪一些簇。文件系统在硬盘数据区中的排列是一维的。即数据区中任何一个被占用的簇都只隶属于一个文件。

2 簇多重映射的假想

2.1 文件重复

对于一个计算机,安装了目前主流操作系统WINXP和基本的常用软件后,我们对整个操作系统分区中所有的动态链接库DLL文件进行测试查找(使用DLL文件将缩小搜索结果范围,同时在整个操作系统文件中具有代表性),在结果结果中按照文件名进行排列会发现出现许多重复文件,这些文件名称、大小、创建日期、修改日期等属性均完全相同。通过二进制文件比较软件UltraCompare进行比较,重复的文件在二进制编码中完全匹配。一些重复的文件和详细信息见表2。

我们列举的动态链接库DLL重复文件只是操作系统分区中许许多多重复文件中的非常小的一部分。可能在某些安装软件不同的计算机上略有差异,但总体上操作系统分区中系统文件重复是普遍存在的,尤其是如果在一台计算机上安装了同一公司出品的不同软件,比如说ADOBE公司出品的PHOTOSHOP软件和PREMIERE软件。或者是MICROMEDIA公司出品的DREAMWEAVER软件、FLASH软件和FIREWORKS软件。在各个软件安装后可能使用同一些动态链接文件,它们分布在各自的安装目录中。

如果计算机中安装了两种操作系统。那么整个硬盘中文件重复的情况将更加多一些。其他还包括在文档文件、下载文件中的重复保存等情况。

2.2 簇的重复

许多文件的重复使我们能够进行一种假想:如果能将这些重复的文件合而为一来使用的话,那么是不是能节约一些硬盘空间。不过想想光靠重复文件的节约对节约硬盘空间的意义还不够大。如表2所示:我们列举的这些重复文件最后节约出的硬盘空间只有26.5兆。这样即使将操作系统分区所有重复文件所占据的硬盘空间都节约出来,也可能只不过是多少多少百兆,与我们现在以千兆G计算的硬盘空间来说杯水车薪,起不了多少作用。

那么让我们进一步假想,由于硬盘上文件的存放是以簇为单位的,那么有没有可能在硬盘上会出现许多重复的簇。所谓重复的簇是指处于数据区中保存着文件二进制片断的簇,某几片内容相同却隶属于不同的文件。如果我们能将硬盘中重复的簇空间合而为一的话,节约出的硬盘空间将比仅仅将重复文件合而为一要有效果得多(因为两个重复文件所占用的簇肯定也是重复的)。

如果我们能改进文件分配表FAT和目录区DIR记录文件位置的原理,我们可以实现硬盘中同一个簇对应不同文件的不同部分。这样一来就可以实现利用簇的多重映射减少硬盘使用空间,增加可用容量。如图2、图3所示。

有一些情况可以使得这种设想成为现实,实现节约硬盘容量的目的。第一种是相似的位图文件。位图文件中的图像由数字阵列信息组成,阵列中数据描述的是按顺序排列的各像素点的颜色和强度。所以当两张相似图片中有相同的区域(如图4所示)时会产生一系列相同的二进制编码,那么存放这一系列二进制编码的簇就是相同的。

同样的情况还出现在影视制作文件中。影视文件的大小无疑是巨大的。但其同位图文件一样,MPEG文件和AVI等视频文件记录了影像中视频的点阵色彩信息和音频信息。在影视剪辑的情况下,剪辑前后重新生成的不同的视频文件与原先利用的某些素材有许多片断都是相同的,只是其中时间的前后次序不同。在这种前提下,应用硬盘簇的多重映射可以使得剪辑后输出的影视文件依然使用原影视文件中相同的簇。这样会极大地节约硬盘中的储存空间。

利用三段视频素材A、B、C利用会声会影软件将其剪辑成两段视频。第一段包括素材A和B,第二段包括素材A和C。然后通过二进制文件比较软件UltraCompare进行比较。结果如表3。

以上是簇的多重映射以节约硬盘空间、增加容量的典型样例。诚然,文件在计算机硬盘内以簇方式存放的情况也可以非常复杂。如相似的两个文件占用100个硬盘簇的情况下,只要其第一个簇中多了一个字节或者少了一个字节,就会影响后面99个簇的字节,两个文件进行对照相同性就不会达到100%。这是实际情况中会发生的。但本文提出簇的多重映射从硬盘文件存放的大维度上看是有起价值的,尤其是目前硬盘越来越大会造成簇多重映射的几率发生越来越高。

计算机在人类生活中的使用越来越广泛,各种存储器的使用更是无所不在,其实这个构想不光可以应用在计算机的硬盘储存中,其他的一些存储器都可以以此原理来节约容量。包括数码相机存储、手机存储、PDA等等。实现以上目的需要对整个磁盘的数据结构进行更改,特别是对文件反配表FAT和目录区DIR的文件映射原理进行改进。在资源有限的现代社会,我们不能只是一味地追求扩大硬盘容量,也可以从反方向来思考节约硬盘空间的方法,“开源”“节流”相辅相成,各得益彰。

参考文献:

[1] 项家祥.计算机应用基础[M].上海:华东师范大学出版社,2004:54-57.

[2] 宋群生.硬盘扇区读写技术[M].北京:机械工业出版社,2004.

[3] 硬盘分区及FAT32文件结构[J].通信与广播电视,2002,(4):27-36.

上一篇:基于Web的毕业论文管理系统的设计与实现 下一篇:数据挖掘分类算法研究与探讨