文件的读取方法

文档序号:6437821阅读:261来源:国知局

专利名称::文件的读取方法
技术领域
:本发明涉及一种文件的读取方法,特别涉及一种能提高读取速率的文件的读取方法。
背景技术
:随着计算机的普及与网络技术的快速发展,硬盘的技术也随之发展。一般硬盘中具有至少一磁盘(disk)以储存大量的文件,硬盘并可通过以机械动作移动一读写臂(readwritearm)以及读写头(readwritehead)的方式读取遍布于磁盘上的数据。硬盘中常采用各种文件系统(filesystem)以管理硬盘中保存的大量文件。例如文件系统能够将磁盘的多个磁轨(track)分割为多个扇区(sector),并以扇区为单位进行数据的读写。读取文件时,需要依序确定文件的所有逻辑区块地址,并将逻辑区块地址映像成多个物理区块地址,才能确定欲读取的文件的每一物理区块所在的磁盘、磁轨以及扇区。读取文件时,最花费时间之处在于移动读写臂以将读写头固定在特定磁轨上的机械动作。硬盘厂商为了改进读写效率,主要靠提高硬盘的转速;转速越快,用户存取数据时间也就越短。但由此做法确会衍生出磨损加剧、温度升高或是噪声增大等负面问题。
发明内容本发明的目的在于提供一种文件的读取方法,减少读取时所需进行的移动读写臂的机械动作,而大幅提升读取速率。为了达到上述目的,本发明提供一种文件的读取方法,其用以读取一硬盘的至少一文件,其中文件对应硬盘中的多个物理区块(physicalblock)。文件的读取方法包括:检测硬盘的一文件系统类型;依据文件系统类型,读取文件的一地址信息;依据地址信息,得到与物理区块对应的多个物理区块地址;将物理区块地址排序得到一物理地址表,其中物理地址表中的物理区块地址以递增或递减的顺序排列;以及依照物理地址表,以一第一读取手段读取文件的物理区块。其中第一读取手段可包括:开启一暂存区(buffer);依照物理地址表,依序读取文件的物理区块,并依序将读取的每一个物理区块所对应的一逻辑区块填入暂存区;以及将填满的暂存区做为文件的一数据源(datasource)。第一读取手段还可包括:累计一读取计时器(timer);以及当读取计时器到达一读取时限时,将目前的暂存区做为文件的一数据源,并重置(reset)读取计时器。文件系统类型可以是分层文件系统(HierarchicalFileSystem,HFS)或分层文件系统加(HierarchicalFileSystemPlus,HFS+),且地址信息为延伸纪录(ExtRec)所指向的延伸数据纪录(extentdatarecord)。文件系统类型也可以是文件配置表32(FileAllocationTable32,FAT32),且地址信息为文件配置表。文件系统类型还可以是新技术文件系统(NewTechnologyFileSystem,NTFS),且地址信息为运转表(runlist)。此外,文件的读取方法还可包括:检测文件的一文件大小;以及当文件大小大于一读取上限时,以一第二读取手段读取文件的物理区块。综上所述,文件的读取方法能够减少读取时所需进行的移动读写臂的机械动作,而大幅提升读取速率。以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。图1为一实施范例的文件的读取方法的流程图;图2为一实施范例的逻辑区块与物理区块的方框示意图;图3为一实施范例的第一读取手段的流程图;图4A-图4D为一实施范例的暂存区的方框示意图;图5A-图为还一实施范例的暂存区的方框不意图;图6为还一实施范例的第一读取手段的流程图;图7为还一实施范例的文件的读取方法的流程图。其中,附图标记20文件201-205逻辑区块30硬盘3001-3030物理区块40暂存区(第一暂存区)401-405暂存区块41第二暂存区411-415暂存区块具体实施例方式以下在实施方式中详细叙述本发明的详细特征以及优点,其内容足以使任何本领域技术人员了解本发明的技术内容并据以实施,且根据本说明书所揭露的内容、权利要求范围及附图,任何本领域技术人员可轻易地理解本发明相关的目的及优点。本发明提供一种文件的读取方法,其用以读取一硬盘的至少一文件。其中文件包括多个逻辑区块(logicblock),这些逻辑区块与硬盘中的多个物理区块(physicalblock)一对一对应。且每一个物理区块都对应到一个硬盘中的物理区块地址。请先参照图1以及图2,其分别为一实施范例的文件的读取方法的流程图,以及逻辑区块与物理区块的方框示意图。其中硬盘30可据有一读写头(readwritehead)、连接读写头的一读写臂(readwritearm),以读取硬盘30内的至少一磁盘(disk);且硬盘30可能采用各种不同类型的文件系统(filesystem)。的于本实施范例中,假设文件20包括5个逻辑区块201-205,而硬盘30包括多个物理区块3001-3030。其中假设逻辑区块201、202、203,204以及205分别对应到物理区块3006、3030、3007、3024以及3013。由于不同的文件系统各自采用不同的方法在硬盘30中配置文件20,因此首先需要检测硬盘30的一文件系统类型(步骤S110)。文件系统类型例如可以是分层文件系统(HierarchicalFileSystem,HFS)、分层文件系统加(HierarchicalFileSystemPlus,HFS+)、文件配置表32(FileAllocationTable32,FAT32)或是新技术文件系统(NewTechnologyFileSystem,NTFS)。接下来为了提高读取效率,文件的读取方法先设法取得文件20所应的所有物理区块3006、3030、3007、3024以及3013的物理区块地址;并在考虑所有的物理区块地址之后才开始读取文件20的内容。文件的读取方法依据文件系统类型,读取文件20的一地址信息(步骤S120);再依据地址信息,得到与物理区块3006、3030、3007、3024以及3013对应的多个物理区块地址(步骤S130)。但是不同的文件系统使用的地址信息都不同;换言之,不同的文件系统存放每个文件20对应的物理区块地址的地方都不一样。例如当文件系统类型是HFS或HFS+时,其地址信息是为延伸纪录(ExtRec)所指向的延伸数据纪录(extentdatarecord)。更详细地说,为了得到文件20所对应的所有物理区块地址,先依据文件20的一文件识别码(fileID)查找出硬盘30中的一目录文件纪录(catalogfilerecord),再读取目录文件纪录中的ExRec的字段(field)。HFS/HFS+的文件系统可将多个物理区块视为一数据段(datasegment)进行处理。而ExRec中纪录文件20的最初三个数据段分别的起始物理区块地址和物理区块个数,其中各个起始物理区块位置就是上述的延伸数据纪录。读取ExRec,并以一个大幅度的机械动作移动读写臂之后,硬盘30的读写头便可依据延伸数据纪录连续读取得到文件20对应的所有物理区块地址。而当文件系统类别为FAT32时,其地址信息是为一文件配置表(fileallocationtable)。FAT32的文件系统为每个文件20分别维护一链接(link),并将所有的链接集中存放在文件配置表之中。其中链接上的每个节点(node)都代表一个物理区块,文件20的结尾则以一文件结束(endoffile,EOF)表示。因此在步骤S120以及S130之中,可先依据文件20的一正规描述技术(formaldescriptiontechnique,FDT)查找文件配置表,以得至IJ文件20的起始FAT节点,并沿着文件20的链接查找得到文件20对应的所有物理区块地址。由于所有的链接以及结节点都被存放在文件配置表中,因此硬盘30的读写臂不需进行大幅度的机械动作,便可得到所需的物理区块地址。类似地,NTFS的文件系统将所有的物理区块地址集中于一运转表(runlist)。因此可将运转表作为地址信息读取,并在不须进行大幅度机械动作的情况下读取到文件20所对应的所有物理区块地址。如上所述,当文件系统类型是HFS、HFS+、FAT32或是NTFS时,文件的读取方法能够在不用大幅移动读写臂的情况下得到文件20所对应的所有物理区块地址。得到所需的物理区块地址之后,文件的读取方法将物理区块地址排序得到一物理地址表,其中物理地址表中的物理区块地址以递增或递减的顺序排列(步骤S140)。其中物理地址表中可纪录物理区块3006、3030、3007、3024以及3013的物理区块位置、对应的逻辑区块的多个逻辑区块地址,以及每个物理区块的长度。接着依照物理地址表,以一第一读取手段读取文件20所对应的物理区块3006、3030,3007,3024以及3013(步骤S150)。由于物理地址表中的物理区块地址是以递增或递减的顺序排列,因此以第一手段读取物理区块3006、3030、3007、3024以及3013时,读写臂仅须连续朝单一方向连续移动。换句话说,读取文件20时的机械动作被抑制在最少的程度。请参照图3,其为一实施范例的第一读取手段的流程图。为了在读取过程中保存所有已读取的数据,首先可在一记忆体中开启一暂存区(buffer)(步骤S210)。第一读取手段依照物理地址表,依序读取文件20的物理区块3006、3030、3007、3024以及3013,并依序将读取的每一个物理区块所对应的逻辑区块填入暂存区(步骤S220);最后再将填满的暂存区做为文件20的一数据源(datasource)(步骤S230)。请配合参照图4A到图4D,其表示进行步骤S220以及S230时的暂存区40。暂存区40可依据文件20的逻辑区块被分割成多个暂存区块401-405。由于文件的读取方法是以递增或递减的顺序读取对应的物理区块地址,而非依照逻辑区块地址的顺序,因此暂存区块401-405亦非依序被填入。逻辑区块201、202、203、204以及205分别对应到物理区块3006、3030、3007、3024以及3013,因此若以递增的物理区块地址的顺序进行读取时,会以物理区块3006、3007、3013,3024以及3030的顺序读取。因此第一读取手段以逻辑区块201、203、205、204以及202的顺序进行读取,并以暂存区块401、403、405、404以及402的顺序进行填写。此外,文件的读取方法也可以一次读取多个文件20。请参照图5A到图其表示进行步骤S220以及S230以同时读取两个文件20时的暂存区。于本实施范例中,开启第一暂存区40以及一第二暂存区41,其分别对应于相同或是不同的两个文件20,并分别具有暂存区块401-405以及411-415。文件的读取方法读取两个文件20的地址信息,并依据地址信息得到两个文件20的所有物理区块地址。接着两个文件20的物理区块地址一起被排序以生成物理地址表,以供第一读取手段读取这两个文件20的物理区块。第一读取手段读取物理区块后,需先判断其属于哪一个文件20,再将读取的物理区块的数据写入对应的暂存区40或41之中。例如于图5A到图的实施范例中,第一读取手段读到的前3个物理区块分别对应到暂存区块401、413以及415。当两个文件20的所有物理区块都被读取后,再将填满的暂存区40以及41分别做为这两个文件20的数据源。根据还一实施范例,第一读取手段可维护一读取记时器,以避免读取时间过长而使得使用者枯等的情形。请参照图6,其为还一实施范例的第一读取手段的流程图。第一读取手段开启暂存区40(步骤S210);依照物理地址表,依序读取文件20的物理区块3006、3030、3007、3024以及3013,并依序将读取的每一个物理区块3006、3030、3007,3024以及3013所对应的逻辑区块填入暂存区40(步骤S220)。第一读取手段同时可累计读取计时器(步骤S240),以得知目前经过了多久的读取时间。每写入一次暂存区40,都可判断目前是否已读取所有物理区块3006、3030、3007、3024以及3013(步骤S250),以及判断读取计时器是否到达一读取时限(步骤S260)。若所有物理区块3006、3030、3007、3024以及3013已被读取,便可将填满的暂存区40作为文件20的数据源(步骤S230)。而当读取计时器到达读取时限时,则可将目前的暂存区40暂时做为文件20的数据源,并重置读取计时器(步骤S270)。其中读取时限例如可以是5秒,但并以此为限。如此一来,即使文件20因其文件大小较大而需要较长的读取时间,使用者也可每次到达读取时限时获得部分的数据,而不需枯等到整个文件20读取完成。为了保证文件的读取方法具有足够的读取效率,还提供图7的实施范例,其中图7为此实施范例的文件的读取方法的流程图。与图1的实施范例不同处在于,图7的实施范例会判断文件系统类型是否被支持(步骤S160),或是判断文件大小是否大于一读取上限(步骤S170)。由于HFS、HFS+、FAT32或是NTFS的文件系统类型能保证在极少量的读写臂的机械动作下读取到所有的物理区块地址,而能保证文件的读取方法的读取效率。相对的,若是扩充套件文件系统(extendedfilesystem,又称为Ext)等以多重指标(pointer)或是其它散乱方式纪录单一文件对应的物理区块地址的文件系统类型时,由于需花费较多的机械动作以及时间才能得到所需的物理区块地址,则可不受文件的读取方法支持。此外,由于第一读取手段是将所有读取出来的数据都存在暂存区40当中,因此较适合用于文件大小较小的文件20。更详细地说,可以以使用中的一虚拟记忆体(virtualmemory)的占用百分比作为读取上限。例如使用者或系统可将读取上限设定虚拟记忆体的20%.假设虚拟记忆体的大小是1024兆字节(MB),则第一读取手段无法开启文件大小大于204.8MB的文件20。相对地,当判断文件系统类型不被支持,或是文件大小大于一读取上限时,可以以一第二读取手段读取文件20的物理区块3006、3030、3007、3024以及3013(步骤S180)。此时可跳出文件的读取方法,并以传统的读取方法读取文件20再提供给使用者。以下以一读取范例比较传统的读取方法以及本发明提供的文件的读取方法的读取效率。假设设硬盘接口(interface)为序列先进技术附件2(SerialAdvancedTechnologyAttachment2,SerialATA2,SATA2);外部传输速率为每秒300MB(300MB/S);磁盘转速为每秒7200转;每一个物理区块的大小为512字节(byte);且假设硬盘30本身的硬盘暂存已满,故不考虑其影响。此外为了简化读写头移动的影响,假设文件的物理区块都集中分布在同一个磁盘的同一侧的同一个磁轨(track)。并假设此磁轨具有63个物理区块随机地遍布在此磁轨的63个扇区(sector)上。由于物理区块不按照逻辑区块的顺序而随机遍布,以随机方式估计传统的读取技术大约需要花费0.0043秒读取0.0308MB的数据。因此内部传输速率约为0.0308MB+0.0043秒=7MB/s;而综合的硬盘传输速率为(300MB/sX7MB/s)+(300MB/s+7MB/s)=6.8MB/s。相对地,由于本发明提供的文件的读取方法只需便利磁轨一周,就能以递增或递减的顺序依序读取所需的物理区块。因此所需时间为磁轨转动一周的时间1/7200秒;内部传输速率为221.76MB/s;综合的硬盘传输速率为127.5MB/s;因此远较传统的读取方法有效率。综上所述,对于支持的文件系统类型,文件的读取方法能够快速地得到欲读取的文件的所有物理区块地址,并将这些物理区块地址以递增或递减的顺序排列成物理地址表,再依据物理地址表进行读取。因此文件的读取方法能大幅减少读取时所需进行的移动读写臂的机械动作,而提升了读取速率。且由于此方法不要求提高磁盘转速,因此能够避免传统上磨损加剧、温度升高或是噪声增大等负面问题。当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。权利要求1.一种文件的读取方法,用以读取一硬盘的至少一文件,其中该文件对应该硬盘中的多个物理区块,其特征在于,该文件的读取方法包括:检测该硬盘的一文件系统类型;依据该文件系统类型,读取该文件的一地址信息;依据该地址信息,得到与该些物理区块对应的多个物理区块地址;将该些物理区块地址排序得到一物理地址表,其中该物理地址表中的该些物理区块地址以递增或递减的顺序排列;以及依照该物理地址表,以一第一读取手段读取该文件的该些物理区块。2.根据权利要求1所述的文件的读取方法,其特征在于,该第一读取手段包括:开启一暂存区;依照该物理地址表,依序读取该文件的该些物理区块,并依序将读取的每一该物理区块所对应的一逻辑区块填入该暂存区;以及将填满的该暂存区做为该文件的一数据源。3.根据权利要求1所述的文件的读取方法,其特征在于,该第一读取手段还包括:累计一读取计时器;以及当该读取计时器到达一读取时限时,将目前的该暂存区做为该文件的一数据源,并重置该读取计时器。4.根据权利要求1所述的文件的读取方法,其特征在于,该文件系统类型为分层文件系统或分层文件系统加,且该地址信息为延伸纪录所指向的延伸数据纪录。5.根据权利要求1所述的文件的读取方法,其特征在于,该文件系统类型为文件配置表32,且该地址信息为文件配置表。6.根据权利要求1所述的文件的读取方法,其特征在于,该文件系统类型为新技术文件系统,且该地址信息为运转表。7.根据权利要求1所述的文件的读取方法,其特征在于,还包括:检测该文件的一文件大小;以及当该文件大小大于一读取上限时,以一第二读取手段读取该文件的该些物理区块。全文摘要一种文件的读取方法,用以读取硬盘的文件,其中文件对应硬盘中的多个物理区块。文件的读取方法包括检测硬盘的文件系统类型;依据文件系统类型,读取文件的地址信息;依据地址信息,得到与物理区块对应的多个物理区块地址;将物理区块地址排序得到物理地址表,其中物理地址表中的物理区块地址以递增或递减的顺序排列;以及依照物理地址表,以第一读取手段读取文件的物理区块。文档编号G06F12/06GK103092896SQ201110352709公开日2013年5月8日申请日期2011年11月4日优先权日2011年11月4日发明者焦旭东,陈志丰申请人:英业达股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1