CN100543748C - 一种利用文件分配表进行文件寻道的方法及系统 - Google Patents

一种利用文件分配表进行文件寻道的方法及系统 Download PDF

Info

Publication number
CN100543748C
CN100543748C CNB2007100987297A CN200710098729A CN100543748C CN 100543748 C CN100543748 C CN 100543748C CN B2007100987297 A CNB2007100987297 A CN B2007100987297A CN 200710098729 A CN200710098729 A CN 200710098729A CN 100543748 C CN100543748 C CN 100543748C
Authority
CN
China
Prior art keywords
file
list item
allocation table
file allocation
index value
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.)
Expired - Fee Related
Application number
CNB2007100987297A
Other languages
English (en)
Other versions
CN101034416A (zh
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.)
Vimicro Corp
Original Assignee
Vimicro 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 Vimicro Corp filed Critical Vimicro Corp
Priority to CNB2007100987297A priority Critical patent/CN100543748C/zh
Publication of CN101034416A publication Critical patent/CN101034416A/zh
Application granted granted Critical
Publication of CN100543748C publication Critical patent/CN100543748C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种利用文件分配表进行文件寻道的方法及系统架构,系统架构包括有第一文件分配表和第二文件分配表,将第二文件分配表的每个表项中存储的表项值设定为上一个表项的索引值,从而所述第二文件分配表与所述第一文件分配表形成双向链表,利用所述双向链表进行文件寻道。本发明在文件分配表中实现了双向链表结构,改变了传统的单项链表结构的局限,将文件寻道耗时降到最低,为保证多媒体的流畅播放奠定坚实基础。

Description

一种利用文件分配表进行文件寻道的方法及系统
技术领域
本发明涉及计算机的磁盘管理技术,特别是涉及一种利用文件分配表进行文件寻道的方法及系统架构。
背景技术
FAT(file allocation table,文件分配表)是微软定义的一种管理磁盘数据空间的文件系统,创建于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(簇)有几个b1ock(块),一个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的文件所对应的表项,如果seek的文件所对应的表项与FAT表的第一项距离过远,就会造成seek的偏移量过大,光是定位FAT链表就耗时很长的,所以现有的seek方法还是很不完善的。
而文件的seek又是非常常见的一个功能项,它的性能的高低直接影响文件读写的性能,例如音视频问件的播放过程中,就要频繁seek文件以便获取数据,如果seek效率地下,再加上系统处理器性能不搞,就容易导致播放的不流畅,所以需要提出一种高效率的seek方法,以解决现有FAT表因单项链表的局限性而带来的seek效率低下的问题。
发明内容
本发明的目的是提供一种利用文件分配表进行文件寻道的方法及系统架构,解决现有FAT表因仅为单项链表而具有的局限性,解决采用现有FAT表seek文件用时过长的技术问题。
为了实现上述目的,本发明提供了一种利用文件分配表进行文件寻道的方法,用于包括有第一文件分配表和第二文件分配表的系统,所述第一文件分配表和第二文件分配表的每个表项的索引值代表的是该表项在磁盘数据区的对应簇的存放位置,所述第一文件分配表的每个表项中存储的表项值为下一个表项的索引值,其中,包括:将所述第二文件分配表的每个表项中存储的表项值设定为上一个表项的索引值,从而所述第二文件分配表与所述第一文件分配表形成双向链表,利用所述双向链表进行文件寻道,利用高速缓冲存储器存储文件寻道结果的记录,使后续的文件寻道通过所述记录和所述双向链表进行查找定位。
上述的方法,其中,所述记录为文件寻道后得到的文件所对应表项的索引值。
上述的方法,其中,在寻道过程中,通过所述记录中与当前文件所对应表项的索引值最接近的索引值开始查找。
上述的方法,其中,如果所述最接近的索引值在当前文件所对应表项的索引值之前,则由所述最接近的索引值开始,通过所述第一文件分配表顺序索引找到当前文件所对应的表项;如果所述最接近的索引值在当前文件所对应表项的索引值之后,则由所述最接近的索引值开始,通过所述第二文件分配表的逆向索引找到当前文件所对应的表项。
上述的方法,其中,如果所述高速缓冲存储器为空,则由所述第一文件分配表的第一个表项开始,顺序索引找到当前文件所对应的表项,并在所述高速缓冲存储器记录本次文件寻道后得到的文件所对应表项的索引值。
上述的方法,其中,如果所述高速缓冲存储器已满,则利用当前寻道结果的记录替换一个已存储的记录。
上述的方法,其中,所述已存储的记录为与当前寻道结果的记录最近的记录。
为了实现本发明的目的,本发明还提供了一种用于磁盘管理的文件分配表的系统,包括存储有第一文件分配表的磁盘数据区和存储有第二文件分配表的磁盘数据区,所述第一文件分配表和第二文件分配表的每个表项的索引值代表的是该表项在磁盘数据区的对应簇的存放位置,所述第一文件分配表的每个表项中存储的表项值为下一个表项的索引值,其中,所述第二文件分配表的每个表项中存储的表项值为上一个表项的索引值,从而所述第二文件分配表与所述第一文件分配表形成用于文件寻道的双向链表,还包括高速缓冲存储器,用于存储文件寻道结果的记录,使后续的文件寻道能够通过所述记录和所述双向链表进行查找定位。
上述的系统,其中,所述记录为文件寻道后得到的文件所对应表项的索引值。
本发明的技术效果在于:
本发明定义FAT表2表项值表示所指向的上一个cluster的位置,这样通过修改FAT表2的定义,本发明在FAT表中实现了双向链表结构,改变了传统的单项链表结构的局限。
本发明增加cache模块,记录下有限次数的seek位置,即一次seek可以从cache中寻找离自己最近的一次历史纪录,基于该历史记录再从FAT表中定位本次seek位置,这样,相对于传统的seek方法,有质的改进。
本发明所提的方案将文件seek耗时降到最低,为保证多媒体的流畅播放奠定坚实基础。
附图说明
图1为FAT的四个层次的逻辑结构图;
图2为FAT表的示例图;
图3为本发明提供的方法的步骤流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明进行详细描述。
现有方案是两个FAT表相同,seek必须从文件起始开始,本发明就是要改进seek,以实现快速高效的文件seek。
FAT标准中,定义两个相同的FAT表的目的是为了作备份以保证安全。之所以如此,是要确保FAT表的安全性,一旦第一个FAT表被损坏,可以用第二个FAT表修复。实际情况表明第二个FAT表通常情况下意义不大,FAT本身是没有断电保护机制的,所以一旦物理性的断电,即使保存两个FAT表,也无济于事。因此本发明重新定义第二个FAT表,实现了双向链表,可以从任意位置seek,并且加入了缓冲队列,加速seek。
本发明所提供的利用文件分配表进行文件寻道的方法,是用于包括有第一文件分配表和第二文件分配表的系统架构,所述第一文件分配表和第二文件分配表的每个表项的索引值代表的是该表项在磁盘数据区的对应簇的存放位置,所述第一文件分配表的每个表项中存储的表项值为下一个表项的索引值,之后,本发明方法进行了以下两点主要改进:
主要改进点一:将第二文件分配表的每个表项中存储的表项值设定为上一个表项的索引值,从而所述第二文件分配表与所述第一文件分配表形成双向链表,利用所述双向链表进行文件寻道。
主要改进点二:利用高速缓冲存储器存储文件寻道结果的记录,使后续的文件寻道通过所述记录和所述双向链表进行查找定位。
图3为本发明提供的方法的步骤流程图,如图,本发明方法的详细步骤如下:
步骤301,定义FAT表2(第二文件分配表),实现FAT表的双向链表结构;
步骤302,定义cache(高速缓冲存储器),用于存储seek的历史记录;
步骤303,开始一次新的seek;
步骤304,判断cache是否为空,是则执行步骤305,否则执行步骤306;
步骤305,cache为空,则只能从文件头开始全新的seek,seek完毕执行步骤311;
步骤306,cache不空,则总能从历史纪录点中找到一个最近点;
步骤307,判断最近点是否在本次seek之前?是则执行步骤308,否则执行步骤309;
步骤308,该历史纪录点在本次seek之前,则通过FAT表1顺序索引完成本次seek,转步骤310;
步骤309,历史记录点在本次seek位置之后,通过FAT表2逆向索引完成本次seek;
步骤310,判断cache是否已满,是则执行步骤312,否则执行步骤311;
步骤311,seek完毕将本次seek结果存入cache,本次seek结束。
步骤312,cache已满,采用一定算法替换cache中某一个seek记录,例如替换与本次seek位置最近的记录值(具体算法可由用户抉择)。
由上可知,本发明通过“重新定义第二个FAT表”和“增加cache”的方法实现seek优化,与现有技术比较,本发明具有如下优势:
1)由于现有技术FAT文件系统的局限性(FAT表是个单项链表),FAT中的文件seek每次总是从文件头开始,如果seek的偏移量过大,光是定位FAT链表就耗时很长的,即为了读一“数据区“的block,要先读取n个“FAT表”中的block用于定位,所以现有的seek方法会很耗时。
2)众所周知,FAT文件系统中通常有两个FAT表,而实际情况表明第二个FAT表意义并不明显。FAT表1中表项值表示所指向的下一个cluster的位置,本发明定义FAT表2表项值表示所指向的上一个cluster的位置,这样通过修改FAT表2的定义,本发明在FAT表中实现了双向链表结构,改变了传统的单项链表结构的局限。
3)增加cache模块,在实际的应用过程中,对文件的seek是有规律的,往往一次seek的位置总是在上一次seek位置的周边,当然也有例外,所以记录下有限次数的seek位置,对于定位下一次seek的位置是很有必要的。并且本发明重新定义了FAT表2的意义,实现了双向链表,即一次seek可以从cache中寻找离自己最近的一次历史纪录,基于该历史记录再从FAT表中定位本次seek位置,这样,相对于传统的seek方法,有质的改进。
4)在嵌入式芯片中多媒体的播放中,经常会seek音视频文件,本发明所提的方案将文件seek耗时降到最低,为保证多媒体的流畅播放奠定坚实基础。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (9)

1.一种利用文件分配表进行文件寻道的方法,用于包括有第一文件分配表和第二文件分配表的系统,所述第一文件分配表和第二文件分配表的每个表项的索引值代表的是该表项在磁盘数据区的对应簇的存放位置,所述第一文件分配表的每个表项中存储的表项值为下一个表项的索引值,其特征在于,包括:
将所述第二文件分配表的每个表项中存储的表项值设定为上一个表项的索引值,从而所述第二文件分配表与所述第一文件分配表形成双向链表,利用所述双向链表进行文件寻道,利用高速缓冲存储器存储文件寻道结果的记录,使后续的文件寻道通过所述记录和所述双向链表进行查找定位。
2.根据权利要求1所述的方法,其特征在于,所述记录为文件寻道后得到的文件所对应表项的索引值。
3.根据权利要求2所述的方法,其特征在于,在寻道过程中,通过所述记录中与当前文件所对应表项的索引值最接近的索引值开始查找。
4.根据权利要求3所述的方法,其特征在于,如果所述最接近的索引值在当前文件所对应表项的索引值之前,则由所述最接近的索引值开始,通过所述第一文件分配表顺序索引找到当前文件所对应的表项;如果所述最接近的索引值在当前文件所对应表项的索引值之后,则由所述最接近的索引值开始,通过所述第二文件分配表的逆向索引找到当前文件所对应的表项。
5.根据权利要求1所述的方法,其特征在于,如果所述高速缓冲存储器为空,则由所述第一文件分配表的第一个表项开始,顺序索引找到当前文件所对应的表项,并在所述高速缓冲存储器记录本次文件寻道后得到的文件所对应表项的索引值。
6.根据权利要求1所述的方法,其特征在于,如果所述高速缓冲存储器已满,则利用当前寻道结果的记录替换一个已存储的记录。
7.根据权利要求6所述的方法,其特征在于,所述已存储的记录为与当前寻道结果的记录最近的记录。
8.一种用于磁盘管理的文件分配表的系统,包括存储有第一文件分配表的磁盘数据区和存储有第二文件分配表的磁盘数据区,所述第一文件分配表和第二文件分配表的每个表项的索引值代表的是该表项在磁盘数据区的对应簇的存放位置,所述第一文件分配表的每个表项中存储的表项值为下一个表项的索引值,其特征在于,所述第二文件分配表的每个表项中存储的表项值为上一个表项的索引值,从而所述第二文件分配表与所述第一文件分配表形成用于文件寻道的双向链表,还包括高速缓冲存储器,用于存储文件寻道结果的记录,使后续的文件寻道能够通过所述记录和所述双向链表进行查找定位。
9.根据权利要求8所述的系统,其特征在于,所述记录为文件寻道后得到的文件所对应表项的索引值。
CNB2007100987297A 2007-04-25 2007-04-25 一种利用文件分配表进行文件寻道的方法及系统 Expired - Fee Related CN100543748C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2007100987297A CN100543748C (zh) 2007-04-25 2007-04-25 一种利用文件分配表进行文件寻道的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2007100987297A CN100543748C (zh) 2007-04-25 2007-04-25 一种利用文件分配表进行文件寻道的方法及系统

Publications (2)

Publication Number Publication Date
CN101034416A CN101034416A (zh) 2007-09-12
CN100543748C true CN100543748C (zh) 2009-09-23

Family

ID=38730969

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007100987297A Expired - Fee Related CN100543748C (zh) 2007-04-25 2007-04-25 一种利用文件分配表进行文件寻道的方法及系统

Country Status (1)

Country Link
CN (1) CN100543748C (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102024060B (zh) * 2010-12-31 2012-10-24 山西奥克斯电子系统工程中心 存储文件及恢复误删除文件的方法
CN102841894A (zh) * 2011-06-22 2012-12-26 比亚迪股份有限公司 一种文件分配表的数据存储方法
CN102929884B (zh) * 2011-08-10 2016-05-04 阿里巴巴集团控股有限公司 一种收缩虚拟磁盘镜像文件的方法及装置
CN102855327B (zh) * 2012-09-18 2015-12-02 中国石油天然气股份有限公司 一种小型嵌入式文件存储管理系统
CN104239564B (zh) * 2014-09-28 2018-02-09 深圳市锐明技术股份有限公司 一种文件索引组织及修复的方法及装置
CN108921488A (zh) * 2018-05-03 2018-11-30 北京水规院京华工程管理有限公司 水运工程管理平台

Also Published As

Publication number Publication date
CN101034416A (zh) 2007-09-12

Similar Documents

Publication Publication Date Title
CN100533443C (zh) 利用文件分配表进行磁盘数据簇链接及寻道的方法
CN100578470C (zh) 基于裸设备的音视频数据存取方法和装置
CN100583832C (zh) 数据管理方法及系统
US9996557B2 (en) Database storage system based on optical disk and method using the system
CN100543748C (zh) 一种利用文件分配表进行文件寻道的方法及系统
CN103838853B (zh) 一种基于不同存储介质的混合文件系统
CN104346357A (zh) 一种嵌入式终端的文件存取方法及系统
CN103631536B (zh) 一种利用ssd的无效数据优化raid5/6写性能的方法
CN101916290B (zh) 内存数据库的管理方法和装置
CN104239438A (zh) 基于分离存储的文件信息存储方法和文件信息读写方法
CN101464901A (zh) 一种对象存储设备中的对象查找方法
CN108763531A (zh) 一种mdvr文件存储系统及其运行方法
CN102902709A (zh) 一种固定空间分配的文件存储系统及实现方法
CN103473298A (zh) 数据归档方法和装置以及存储系统
CN102253985B (zh) 一种文件系统数据的管理方法及系统
CN101441596B (zh) 提高闪存介质读写速度的方法
CN101303667B (zh) 建立磁盘空簇表及查找磁盘空簇的方法和装置
CN102385610A (zh) 数字硬盘录像机录像文件保存与数据恢复的方法及其系统
CN108595589A (zh) 一种海量科学数据图片高效存取方法
CN102981975A (zh) 闪存数据的管理方法和系统
CN100359592C (zh) 摄录设备硬盘的数据存储方法
CN100585597C (zh) 一种文件组织方法
CN103257928B (zh) 闪存设备数据管理方法和系统
CN104133970A (zh) 一种数据空间管理方法及装置
US20020133683A1 (en) Method and system for reducing fragmentation

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: 20090923

Termination date: 20120425