利用文件分配表进行磁盘数据簇链接及寻道的方法

文档序号:6608770阅读:432来源:国知局

专利名称::利用文件分配表进行磁盘数据簇链接及寻道的方法
技术领域
:本发明涉及计算机的磁盘管理技术,特别是涉及一种利用文件分配表进行磁盘数据簇链接及寻道的方法。
背景技术
:FAT(fileallocationtable,文件分配表)是微软定义的一种管理磁盘数据空间的文件系统,创建于70年代末80年代初,起初用于MS-DOS操作系统,当初设计FAT只把它定位为一种简单的文件系统,只适合于软盘管理,而当时的软盘也不过1M的存储范围而已。随着新技术的不断发展,磁盘存储空间不断变大,最初的FAT设计已不能满足,故而微软在原先的基础上扩展FAT,即我们现在常见到的FAT12、FAT16、FAT32,这三种文件系统已基本满足不同存储空间范围的空间管理了。一个空白的磁盘数据区,可以认为是一块连续的空白数据区,用户可以直接在数据区上读写数据。而FAT文件系统,就是在该空白磁盘空间上做了一些定义规划,方便对磁盘空间的使用。定义了FAT以后,所有对磁盘空间的直接读写对用户而言是禁止的,只对FAT开放,用户对磁盘的操作通过FAT定义的接口来实现,例如打开文件、读写文件、关闭文件等。从逻辑上看,FAT的逻辑结构包含如下4个层次1)参数区及一点保留区2)FAT表3)目录区(FAT12、FAT16有效,FAT32中没有)4)数据区四个层次的逻辑结构如图1所示,图中参数区主要记录整个FAT系统相关的参数设置,例如一个cluster(簇)有几个block(块),一个FAT表有多少个block构成,一个系统有多少个FAT表构成等等。记录参数部分通常放在一个block中,另外可能会会有几个保留block作为其它用途。其中,block是FAT规定的对磁盘读写操作的基本单位,为512个字节,在block的基础上FAT定义了簇的概念,一个簇会包含1个或多个block,至于具体包含几个会在参数区中告知,block是读写磁盘的最小单位。如图1所示,FAT表位于参数区的下一层。FAT文件系统是通过FAT表来管理整个磁盘空间的,FAT表中基本单位为12个bit(比特),16个bit或32个bit,所谓的FAT12、FAT16、FAT32即由此而来,这个基本单位对应一个簇,即FAT表中一个基本表项对应data(数据)区的一个簇,由此就不难明白FAT是怎样管理磁盘空间的了,简单说来,就是把磁盘划分为数据区和标记区,FAT表说白了就是一个做记号的地方,即标记区。那么这个记号如何应用呢?实际上FAT通过FAT表构造一个单向链表结构,就每一个FAT表项而言,它可以蕴含着两个信息,一是它是第几个表项,即FAT表项的索引值,这个简单就是从零开始数;二是表项里存储的数据,FAT系统将该数据的值定义为下一个FAT表项的索引值。这样就形成了一个单项链表,链表结束处FAT表项的值为零,图2为一个FAT表的示例图。由FAT标准可知,FAT表每一个表项中的内容为下一个FAT表项的索引值,因为表项的索引值代表的是该表项在数据区的对应簇的存放位置,因此FAT表每一个表项中的内容代表的是该表项在数据区的对应簇的下一个簇的存放位置,从而由FAT表的各项形成一个单项链表,用于标记文件或目录的存放位置。由于FAT文件系统的局限性(FAT表是个单项链表),FAT中的文件seek每次总是从文件头(FAT表的第一项)开始,按照单项链表逐个搜索直到找到seek的文件所对应的表项,这样光是定位FAT链表就耗时很长。而实际情况中,常常出现这种情况,就是多个簇连续出现,在存放位置上不曾有中断,此时原有的FAT表中就会对应多个表项来存储这段连续的簇位置;而实际上,这种情况下只有两个有效信息,即起始的表项位置和连续的簇个数。那么应该只存储这两个有效数据就够了,而FAT表要存储连续的FAT表项实则无用,因此按照现有FAT标准存储连续簇的话,不但造成FAT表存储空间的浪费,而且连续簇的seek需要连续读取FAT表项,也造成了时间和性能上的浪费。
发明内容本发明的目的是提供一种利用文件分配表进行磁盘数据簇链接及寻道的方法,解决现有FAT表在存储连续簇时所造成的存储空间浪费的技术问题。为了实现上述目的,本发明提供了一种利用文件分配表进行磁盘数据簇链接的方法,用于包括有第一文件分配表和第二文件分配表的系统架构,所述第一文件分配表的每个表项都链接一个磁盘数据区的数据簇,所述第一文件分配表的每个表项在所述第二文件分配表中都具有一个对应表项,其中,对于连续数据簇的起始簇所链接的第一文件分配表的表项,在该第一文件分配表表项的对应表项中存储所述连续数据簇的数据簇个数。上述的方法,其中,所述起始簇所链接的第一文件分配表的表项中存储的表项值为与所述起始簇连续的第二数据簇所链接表项的索引值,所述第二数据簇所链接表项中存储的表项值为结束标识。上述的方法,其中,所述第一文件分配表的每个表项通过以下方式链接数据簇所述第一文件分配表的每个表项的索引值代表的是该表项在磁盘数据区中链接的数据簇的存放位置。为了实现本发明的目的,本发明还提供了一种利用上述的文件分配表进行文件寻道的方法,其中,包括步骤一,从所述第一文件分配表读取起始簇在磁盘数据区的存放位置;步骤二,从所述第二文件分配表读取连续数据簇的个数;步骤三,根据所述起始簇的存放位置和所述连续数据簇的个数,从磁盘数据区连续寻道获得所述连续数据簇。上述的方法,其中,在所述步骤一之前,还包括判断要寻道的数据簇是否为连续数据簇,是则执行步骤一,否则按照常规寻道方式处理。上述的方法,其中,通过以下方式判断是否为连续数据簇如果所述第一文件分配表的表项在所述第二文件分配表的对应表项中存储有连续数据簇的个数,则为连续数据簇,并且所述第一文件分配表的表项为起始簇所对应链接的表项。上述的方法,其中,通过以下方式判断是否为连续数据簇如果所述第一文件分配表的表项中存储的表项值为与该表项相邻的邻接表项的索引值,并且所述邻接表项中存储的表项值为结束标识,则为连续数据簇。本发明的技术效果在于本发明改变了常规的两个FAT表的应用方法,对第二个FAT表做了重新定义,不再用作第一个FAT表的备份,而表示第一个FAT表对应的表项开始有多少个连续的cluster是连在一起的。因此,本发明简化了FAT表,相当于扩大了FAT表的空间,在文件seek时,还可以减少FAT表的读取次数,大大提高了效率。图1为FAT的四个层次的逻辑结构图;图2为FAT表的示例图;图3为现有FAT标准存放连续数据簇的情况下FAT表的示例图;图4为按照本发明方法存放连续数据簇时的FAT表的示例图。具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明进行详细描述。在传统FAT标准中,第二个FAT表与第一个FAT表的内容完全一样,定义两个FAT表的目的是为了作备份,之所以如此,是要确保FAT表的安全性,一旦第一个FAT表被损坏,可以用第二个FAT表修复。实际情况表明第二个FAT表通常情况下意义不大,FAT本身是没有断电保护机制的,所以一旦物理性的断电,即使保存两个FAT表,也无济于事。本发明就是要重新定义FAT表,用第二个FAT表标记连续簇的个数,以此简化FAT表,在文件seek时,还可以减少FAT表的读取次数,大大提高效率。本发明的方法是一种利用文件分配表进行磁盘数据簇链接的方法,用于包括有第一文件分配表和第二文件分配表的系统架构,第一文件分配表的每个表项都链接一个磁盘数据区的数据簇,第一文件分配表的每个表项在第二文件分配表中都具有一个对应表项,其中,对于连续数据簇的起始簇所链接的第一文件分配表的表项,在该第一文件分配表表项的对应表项中存储所述连续数据簇的数据簇个数。下面通过与存储连续簇的传统FAT技术相比较,来说明本发明方法。参考图3,为传统FAT标准存放连续数据簇的情况下FAT表的示例图,如图,如果有一个文件的数据区占用cluster2到cluster6,则在传统FAT表中对应占有表项102至表项106,表项102在数据区的对应链接的数据簇为cluster2,依次类推,表项106对应链接cluster6,其中,表项102中存储的表项值为“103”,也就是表项103的索引值,也就是每个表项中存储的表项值为下一个表项的索引值,在连续簇的最后,因为表项106没有下一个表项,所以表项106中存储的为结束标识,这样连续簇cluster2到cluster6至少占有5个表项,而seek过程也必须每次都从FAT表中找到表项,才能得到数据区的对应簇。参考图4,为按照本发明方法存放连续数据簇时的FAT表的示例图,如图,对于连续簇cluster2到cluster6,起始簇cluster2对应FAT表1中的表项202,而表项202在FAT表2中的对应表项为表项302,本发明在表项302中存储从表项202开始的连续簇的个数5,即代表从表项202开始的5个表项对应的数据簇都是连续的。而在FAT表1中,表项202存储的表项值为“203”,也就是与起始簇cluster2连续的第二数据簇cluster3所链接表项203的索引值,表项203中存储的表项值为结束标识。也就是在FAT表1中只需要两个表项,就可以表示任意长的连续簇,这样本发明方法大大减小了FAT表表项的使用数目。对应以上实施例,本发明还提供了一种利用上述的文件分配表进行文件寻道的方法,包括步骤a,从FAT表1的表项202读取起始簇cluster2在磁盘数据区的存放位置;步骤b,从FAT表2的表项302读取连续数据簇的个数5;步骤c,根据起始簇的存放位置和连续数据簇的个数,从磁盘数据区连续寻道获得所述连续数据簇cluster2至cluster6。其中,在所述步骤a之前,还包括判断要寻道的数据簇是否为连续数据簇,是则执行步骤a,否则按照常规寻道方式处理。其中判断是否为连续数据簇是通过以下方式实现如果表项202的对应表项302中存储有连续数据簇的个数,则为连续数据簇,并且所述表项202为起始簇cluster2所对应链接的表项。还可通过以下方式实现如果表项202中存储的表项值为与该表项相邻的邻接表项的索引值“203”,并且所述邻接表项203中存储的表项值为结束标识,则为连续数据簇。因此,本发明在seek连续簇的过程中,不用连续读取FAT表1的表项,只需要读取起始表项和其在FAT表2的对应表项就可以获得连续簇,因此大大减少了寻道时间,提高了效率。由上可知,本发明改变了常规的两个FAT表的应用方法,对第二个FAT表做了重新定义,不再用作第一个FAT表的备份,而表示第一个FAT表对应的表项开始有多少个连续的cluster是连在一起的。因此,本发明简化了FAT表,相当于扩大了FAT表的空间,在文件seek时,还可以减少FAT表的读取次数,大大提高了效率。以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。权利要求1.一种利用文件分配表进行磁盘数据簇链接的方法,用于包括有第一文件分配表和第二文件分配表的系统架构,所述第一文件分配表的每个表项都链接一个磁盘数据区的数据簇,所述第一文件分配表的每个表项在所述第二文件分配表中都具有一个对应表项,其特征在于,对于连续数据簇的起始簇所链接的第一文件分配表的表项,在该第一文件分配表表项的对应表项中存储所述连续数据簇的数据簇个数。2.根据权利要求1所述的方法,其特征在于,所述起始簇所链接的第一文件分配表的表项中存储的表项值为与所述起始簇连续的第二数据簇所链接表项的索引值,所述第二数据簇所链接表项中存储的表项值为结束标识。3.根据权利要求1或2所述的方法,其特征在于,所述第一文件分配表的每个表项通过以下方式链接数据簇所述第一文件分配表的每个表项的索引值代表的是该表项在磁盘数据区中链接的数据簇的存放位置。4.一种利用权利要求1所述的文件分配表进行文件寻道的方法,其特征在于,包括步骤一,从所述第一文件分配表读取起始簇在磁盘数据区的存放位置;步骤二,从所述第二文件分配表读取连续数据簇的个数;步骤三,根据所述起始簇的存放位置和所述连续数据簇的个数,从磁盘数据区连续寻道获得所述连续数据簇。5.根据权利要求4所述的方法,其特征在于,在所述步骤一之前,还包括判断要寻道的数据簇是否为连续数据簇,是则执行步骤一,否则按照常规寻道方式处理。6.根据权利要求5所述的方法,其特征在于,通过以下方式判断是否为连续数据簇如果所述第一文件分配表的表项在所述第二文件分配表的对应表项中存储有连续数据簇的个数,则为连续数据簇,并且所述第一文件分配表的表项为起始簇所对应链接的表项。7.根据权利要求5所述的方法,其特征在于,通过以下方式判断是否为连续数据簇如果所述第一文件分配表的表项中存储的表项值为与该表项相邻的邻接表项的索引值,并且所述邻接表项中存储的表项值为结束标识,则为连续数据簇。全文摘要本发明提供一种利用文件分配表进行磁盘数据簇链接及寻道的方法,用于包括有第一文件分配表和第二文件分配表的系统架构,所述第一文件分配表的每个表项都链接一个磁盘数据区的数据簇,所述第一文件分配表的每个表项在所述第二文件分配表中都具有一个对应表项,其特征在于,对于连续数据簇的起始簇所链接的第一文件分配表的表项,在该第一文件分配表表项的对应表项中存储所述连续数据簇的数据簇个数。本发明简化了FAT表,相当于扩大了FAT表的空间,在文件寻道时,还可以减少FAT表的读取次数,大大提高了效率。文档编号G06F17/30GK101051318SQ200710099119公开日2007年10月10日申请日期2007年5月11日优先权日2007年5月11日发明者孙丰强申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1