專利名稱::文件的讀取方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種文件的讀取方法,特別涉及一種能提高讀取速率的文件的讀取方法。
背景技術(shù):
:隨著計算機(jī)的普及與網(wǎng)絡(luò)技術(shù)的快速發(fā)展,硬盤的技術(shù)也隨之發(fā)展。一般硬盤中具有至少一磁盤(disk)以儲存大量的文件,硬盤并可通過以機(jī)械動作移動一讀寫臂(readwritearm)以及讀寫頭(readwritehead)的方式讀取遍布于磁盤上的數(shù)據(jù)。硬盤中常采用各種文件系統(tǒng)(filesystem)以管理硬盤中保存的大量文件。例如文件系統(tǒng)能夠?qū)⒋疟P的多個磁軌(track)分割為多個扇區(qū)(sector),并以扇區(qū)為單位進(jìn)行數(shù)據(jù)的讀寫。讀取文件時,需要依序確定文件的所有邏輯區(qū)塊地址,并將邏輯區(qū)塊地址映像成多個物理區(qū)塊地址,才能確定欲讀取的文件的每一物理區(qū)塊所在的磁盤、磁軌以及扇區(qū)。讀取文件時,最花費(fèi)時間之處在于移動讀寫臂以將讀寫頭固定在特定磁軌上的機(jī)械動作。硬盤廠商為了改進(jìn)讀寫效率,主要靠提高硬盤的轉(zhuǎn)速;轉(zhuǎn)速越快,用戶存取數(shù)據(jù)時間也就越短。但由此做法確會衍生出磨損加劇、溫度升高或是噪聲增大等負(fù)面問題。
發(fā)明內(nèi)容本發(fā)明的目的在于提供一種文件的讀取方法,減少讀取時所需進(jìn)行的移動讀寫臂的機(jī)械動作,而大幅提升讀取速率。為了達(dá)到上述目的,本發(fā)明提供一種文件的讀取方法,其用以讀取一硬盤的至少一文件,其中文件對應(yīng)硬盤中的多個物理區(qū)塊(physicalblock)。文件的讀取方法包括:檢測硬盤的一文件系統(tǒng)類型;依據(jù)文件系統(tǒng)類型,讀取文件的一地址信息;依據(jù)地址信息,得到與物理區(qū)塊對應(yīng)的多個物理區(qū)塊地址;將物理區(qū)塊地址排序得到一物理地址表,其中物理地址表中的物理區(qū)塊地址以遞增或遞減的順序排列;以及依照物理地址表,以一第一讀取手段讀取文件的物理區(qū)塊。其中第一讀取手段可包括:開啟一暫存區(qū)(buffer);依照物理地址表,依序讀取文件的物理區(qū)塊,并依序?qū)⒆x取的每一個物理區(qū)塊所對應(yīng)的一邏輯區(qū)塊填入暫存區(qū);以及將填滿的暫存區(qū)做為文件的一數(shù)據(jù)源(datasource)。第一讀取手段還可包括:累計一讀取計時器(timer);以及當(dāng)讀取計時器到達(dá)一讀取時限時,將目前的暫存區(qū)做為文件的一數(shù)據(jù)源,并重置(reset)讀取計時器。文件系統(tǒng)類型可以是分層文件系統(tǒng)(HierarchicalFileSystem,HFS)或分層文件系統(tǒng)加(HierarchicalFileSystemPlus,HFS+),且地址信息為延伸紀(jì)錄(ExtRec)所指向的延伸數(shù)據(jù)紀(jì)錄(extentdatarecord)。文件系統(tǒng)類型也可以是文件配置表32(FileAllocationTable32,F(xiàn)AT32),且地址信息為文件配置表。文件系統(tǒng)類型還可以是新技術(shù)文件系統(tǒng)(NewTechnologyFileSystem,NTFS),且地址信息為運(yùn)轉(zhuǎn)表(runlist)。此外,文件的讀取方法還可包括:檢測文件的一文件大??;以及當(dāng)文件大小大于一讀取上限時,以一第二讀取手段讀取文件的物理區(qū)塊。綜上所述,文件的讀取方法能夠減少讀取時所需進(jìn)行的移動讀寫臂的機(jī)械動作,而大幅提升讀取速率。以下結(jié)合附圖和具體實(shí)施例對本發(fā)明進(jìn)行詳細(xì)描述,但不作為對本發(fā)明的限定。圖1為一實(shí)施范例的文件的讀取方法的流程圖;圖2為一實(shí)施范例的邏輯區(qū)塊與物理區(qū)塊的方框示意圖;圖3為一實(shí)施范例的第一讀取手段的流程圖;圖4A-圖4D為一實(shí)施范例的暫存區(qū)的方框示意圖;圖5A-圖為還一實(shí)施范例的暫存區(qū)的方框不意圖;圖6為還一實(shí)施范例的第一讀取手段的流程圖;圖7為還一實(shí)施范例的文件的讀取方法的流程圖。其中,附圖標(biāo)記20文件201-205邏輯區(qū)塊30硬盤3001-3030物理區(qū)塊40暫存區(qū)(第一暫存區(qū))401-405暫存區(qū)塊41第二暫存區(qū)411-415暫存區(qū)塊具體實(shí)施例方式以下在實(shí)施方式中詳細(xì)敘述本發(fā)明的詳細(xì)特征以及優(yōu)點(diǎn),其內(nèi)容足以使任何本領(lǐng)域技術(shù)人員了解本發(fā)明的技術(shù)內(nèi)容并據(jù)以實(shí)施,且根據(jù)本說明書所揭露的內(nèi)容、權(quán)利要求范圍及附圖,任何本領(lǐng)域技術(shù)人員可輕易地理解本發(fā)明相關(guān)的目的及優(yōu)點(diǎn)。本發(fā)明提供一種文件的讀取方法,其用以讀取一硬盤的至少一文件。其中文件包括多個邏輯區(qū)塊(logicblock),這些邏輯區(qū)塊與硬盤中的多個物理區(qū)塊(physicalblock)一對一對應(yīng)。且每一個物理區(qū)塊都對應(yīng)到一個硬盤中的物理區(qū)塊地址。請先參照圖1以及圖2,其分別為一實(shí)施范例的文件的讀取方法的流程圖,以及邏輯區(qū)塊與物理區(qū)塊的方框示意圖。其中硬盤30可據(jù)有一讀寫頭(readwritehead)、連接讀寫頭的一讀寫臂(readwritearm),以讀取硬盤30內(nèi)的至少一磁盤(disk);且硬盤30可能采用各種不同類型的文件系統(tǒng)(filesystem)。的于本實(shí)施范例中,假設(shè)文件20包括5個邏輯區(qū)塊201-205,而硬盤30包括多個物理區(qū)塊3001-3030。其中假設(shè)邏輯區(qū)塊201、202、203,204以及205分別對應(yīng)到物理區(qū)塊3006、3030、3007、3024以及3013。由于不同的文件系統(tǒng)各自采用不同的方法在硬盤30中配置文件20,因此首先需要檢測硬盤30的一文件系統(tǒng)類型(步驟S110)。文件系統(tǒng)類型例如可以是分層文件系統(tǒng)(HierarchicalFileSystem,HFS)、分層文件系統(tǒng)加(HierarchicalFileSystemPlus,HFS+)、文件配置表32(FileAllocationTable32,F(xiàn)AT32)或是新技術(shù)文件系統(tǒng)(NewTechnologyFileSystem,NTFS)。接下來為了提高讀取效率,文件的讀取方法先設(shè)法取得文件20所應(yīng)的所有物理區(qū)塊3006、3030、3007、3024以及3013的物理區(qū)塊地址;并在考慮所有的物理區(qū)塊地址之后才開始讀取文件20的內(nèi)容。文件的讀取方法依據(jù)文件系統(tǒng)類型,讀取文件20的一地址信息(步驟S120);再依據(jù)地址信息,得到與物理區(qū)塊3006、3030、3007、3024以及3013對應(yīng)的多個物理區(qū)塊地址(步驟S130)。但是不同的文件系統(tǒng)使用的地址信息都不同;換言之,不同的文件系統(tǒng)存放每個文件20對應(yīng)的物理區(qū)塊地址的地方都不一樣。例如當(dāng)文件系統(tǒng)類型是HFS或HFS+時,其地址信息是為延伸紀(jì)錄(ExtRec)所指向的延伸數(shù)據(jù)紀(jì)錄(extentdatarecord)。更詳細(xì)地說,為了得到文件20所對應(yīng)的所有物理區(qū)塊地址,先依據(jù)文件20的一文件識別碼(fileID)查找出硬盤30中的一目錄文件紀(jì)錄(catalogfilerecord),再讀取目錄文件紀(jì)錄中的ExRec的字段(field)。HFS/HFS+的文件系統(tǒng)可將多個物理區(qū)塊視為一數(shù)據(jù)段(datasegment)進(jìn)行處理。而ExRec中紀(jì)錄文件20的最初三個數(shù)據(jù)段分別的起始物理區(qū)塊地址和物理區(qū)塊個數(shù),其中各個起始物理區(qū)塊位置就是上述的延伸數(shù)據(jù)紀(jì)錄。讀取ExRec,并以一個大幅度的機(jī)械動作移動讀寫臂之后,硬盤30的讀寫頭便可依據(jù)延伸數(shù)據(jù)紀(jì)錄連續(xù)讀取得到文件20對應(yīng)的所有物理區(qū)塊地址。而當(dāng)文件系統(tǒng)類別為FAT32時,其地址信息是為一文件配置表(fileallocationtable)。FAT32的文件系統(tǒng)為每個文件20分別維護(hù)一鏈接(link),并將所有的鏈接集中存放在文件配置表之中。其中鏈接上的每個節(jié)點(diǎn)(node)都代表一個物理區(qū)塊,文件20的結(jié)尾則以一文件結(jié)束(endoffile,EOF)表示。因此在步驟S120以及S130之中,可先依據(jù)文件20的一正規(guī)描述技術(shù)(formaldescriptiontechnique,FDT)查找文件配置表,以得至IJ文件20的起始FAT節(jié)點(diǎn),并沿著文件20的鏈接查找得到文件20對應(yīng)的所有物理區(qū)塊地址。由于所有的鏈接以及結(jié)節(jié)點(diǎn)都被存放在文件配置表中,因此硬盤30的讀寫臂不需進(jìn)行大幅度的機(jī)械動作,便可得到所需的物理區(qū)塊地址。類似地,NTFS的文件系統(tǒng)將所有的物理區(qū)塊地址集中于一運(yùn)轉(zhuǎn)表(runlist)。因此可將運(yùn)轉(zhuǎn)表作為地址信息讀取,并在不須進(jìn)行大幅度機(jī)械動作的情況下讀取到文件20所對應(yīng)的所有物理區(qū)塊地址。如上所述,當(dāng)文件系統(tǒng)類型是HFS、HFS+、FAT32或是NTFS時,文件的讀取方法能夠在不用大幅移動讀寫臂的情況下得到文件20所對應(yīng)的所有物理區(qū)塊地址。得到所需的物理區(qū)塊地址之后,文件的讀取方法將物理區(qū)塊地址排序得到一物理地址表,其中物理地址表中的物理區(qū)塊地址以遞增或遞減的順序排列(步驟S140)。其中物理地址表中可紀(jì)錄物理區(qū)塊3006、3030、3007、3024以及3013的物理區(qū)塊位置、對應(yīng)的邏輯區(qū)塊的多個邏輯區(qū)塊地址,以及每個物理區(qū)塊的長度。接著依照物理地址表,以一第一讀取手段讀取文件20所對應(yīng)的物理區(qū)塊3006、3030,3007,3024以及3013(步驟S150)。由于物理地址表中的物理區(qū)塊地址是以遞增或遞減的順序排列,因此以第一手段讀取物理區(qū)塊3006、3030、3007、3024以及3013時,讀寫臂僅須連續(xù)朝單一方向連續(xù)移動。換句話說,讀取文件20時的機(jī)械動作被抑制在最少的程度。請參照圖3,其為一實(shí)施范例的第一讀取手段的流程圖。為了在讀取過程中保存所有已讀取的數(shù)據(jù),首先可在一記憶體中開啟一暫存區(qū)(buffer)(步驟S210)。第一讀取手段依照物理地址表,依序讀取文件20的物理區(qū)塊3006、3030、3007、3024以及3013,并依序?qū)⒆x取的每一個物理區(qū)塊所對應(yīng)的邏輯區(qū)塊填入暫存區(qū)(步驟S220);最后再將填滿的暫存區(qū)做為文件20的一數(shù)據(jù)源(datasource)(步驟S230)。請配合參照圖4A到圖4D,其表示進(jìn)行步驟S220以及S230時的暫存區(qū)40。暫存區(qū)40可依據(jù)文件20的邏輯區(qū)塊被分割成多個暫存區(qū)塊401-405。由于文件的讀取方法是以遞增或遞減的順序讀取對應(yīng)的物理區(qū)塊地址,而非依照邏輯區(qū)塊地址的順序,因此暫存區(qū)塊401-405亦非依序被填入。邏輯區(qū)塊201、202、203、204以及205分別對應(yīng)到物理區(qū)塊3006、3030、3007、3024以及3013,因此若以遞增的物理區(qū)塊地址的順序進(jìn)行讀取時,會以物理區(qū)塊3006、3007、3013,3024以及3030的順序讀取。因此第一讀取手段以邏輯區(qū)塊201、203、205、204以及202的順序進(jìn)行讀取,并以暫存區(qū)塊401、403、405、404以及402的順序進(jìn)行填寫。此外,文件的讀取方法也可以一次讀取多個文件20。請參照圖5A到圖其表示進(jìn)行步驟S220以及S230以同時讀取兩個文件20時的暫存區(qū)。于本實(shí)施范例中,開啟第一暫存區(qū)40以及一第二暫存區(qū)41,其分別對應(yīng)于相同或是不同的兩個文件20,并分別具有暫存區(qū)塊401-405以及411-415。文件的讀取方法讀取兩個文件20的地址信息,并依據(jù)地址信息得到兩個文件20的所有物理區(qū)塊地址。接著兩個文件20的物理區(qū)塊地址一起被排序以生成物理地址表,以供第一讀取手段讀取這兩個文件20的物理區(qū)塊。第一讀取手段讀取物理區(qū)塊后,需先判斷其屬于哪一個文件20,再將讀取的物理區(qū)塊的數(shù)據(jù)寫入對應(yīng)的暫存區(qū)40或41之中。例如于圖5A到圖的實(shí)施范例中,第一讀取手段讀到的前3個物理區(qū)塊分別對應(yīng)到暫存區(qū)塊401、413以及415。當(dāng)兩個文件20的所有物理區(qū)塊都被讀取后,再將填滿的暫存區(qū)40以及41分別做為這兩個文件20的數(shù)據(jù)源。根據(jù)還一實(shí)施范例,第一讀取手段可維護(hù)一讀取記時器,以避免讀取時間過長而使得使用者枯等的情形。請參照圖6,其為還一實(shí)施范例的第一讀取手段的流程圖。第一讀取手段開啟暫存區(qū)40(步驟S210);依照物理地址表,依序讀取文件20的物理區(qū)塊3006、3030、3007、3024以及3013,并依序?qū)⒆x取的每一個物理區(qū)塊3006、3030、3007,3024以及3013所對應(yīng)的邏輯區(qū)塊填入暫存區(qū)40(步驟S220)。第一讀取手段同時可累計讀取計時器(步驟S240),以得知目前經(jīng)過了多久的讀取時間。每寫入一次暫存區(qū)40,都可判斷目前是否已讀取所有物理區(qū)塊3006、3030、3007、3024以及3013(步驟S250),以及判斷讀取計時器是否到達(dá)一讀取時限(步驟S260)。若所有物理區(qū)塊3006、3030、3007、3024以及3013已被讀取,便可將填滿的暫存區(qū)40作為文件20的數(shù)據(jù)源(步驟S230)。而當(dāng)讀取計時器到達(dá)讀取時限時,則可將目前的暫存區(qū)40暫時做為文件20的數(shù)據(jù)源,并重置讀取計時器(步驟S270)。其中讀取時限例如可以是5秒,但并以此為限。如此一來,即使文件20因其文件大小較大而需要較長的讀取時間,使用者也可每次到達(dá)讀取時限時獲得部分的數(shù)據(jù),而不需枯等到整個文件20讀取完成。為了保證文件的讀取方法具有足夠的讀取效率,還提供圖7的實(shí)施范例,其中圖7為此實(shí)施范例的文件的讀取方法的流程圖。與圖1的實(shí)施范例不同處在于,圖7的實(shí)施范例會判斷文件系統(tǒng)類型是否被支持(步驟S160),或是判斷文件大小是否大于一讀取上限(步驟S170)。由于HFS、HFS+、FAT32或是NTFS的文件系統(tǒng)類型能保證在極少量的讀寫臂的機(jī)械動作下讀取到所有的物理區(qū)塊地址,而能保證文件的讀取方法的讀取效率。相對的,若是擴(kuò)充套件文件系統(tǒng)(extendedfilesystem,又稱為Ext)等以多重指標(biāo)(pointer)或是其它散亂方式紀(jì)錄單一文件對應(yīng)的物理區(qū)塊地址的文件系統(tǒng)類型時,由于需花費(fèi)較多的機(jī)械動作以及時間才能得到所需的物理區(qū)塊地址,則可不受文件的讀取方法支持。此外,由于第一讀取手段是將所有讀取出來的數(shù)據(jù)都存在暫存區(qū)40當(dāng)中,因此較適合用于文件大小較小的文件20。更詳細(xì)地說,可以以使用中的一虛擬記憶體(virtualmemory)的占用百分比作為讀取上限。例如使用者或系統(tǒng)可將讀取上限設(shè)定虛擬記憶體的20%.假設(shè)虛擬記憶體的大小是1024兆字節(jié)(MB),則第一讀取手段無法開啟文件大小大于204.8MB的文件20。相對地,當(dāng)判斷文件系統(tǒng)類型不被支持,或是文件大小大于一讀取上限時,可以以一第二讀取手段讀取文件20的物理區(qū)塊3006、3030、3007、3024以及3013(步驟S180)。此時可跳出文件的讀取方法,并以傳統(tǒng)的讀取方法讀取文件20再提供給使用者。以下以一讀取范例比較傳統(tǒng)的讀取方法以及本發(fā)明提供的文件的讀取方法的讀取效率。假設(shè)設(shè)硬盤接口(interface)為序列先進(jìn)技術(shù)附件2(SerialAdvancedTechnologyAttachment2,SerialATA2,SATA2);外部傳輸速率為每秒300MB(300MB/S);磁盤轉(zhuǎn)速為每秒7200轉(zhuǎn);每一個物理區(qū)塊的大小為512字節(jié)(byte);且假設(shè)硬盤30本身的硬盤暫存已滿,故不考慮其影響。此外為了簡化讀寫頭移動的影響,假設(shè)文件的物理區(qū)塊都集中分布在同一個磁盤的同一側(cè)的同一個磁軌(track)。并假設(shè)此磁軌具有63個物理區(qū)塊隨機(jī)地遍布在此磁軌的63個扇區(qū)(sector)上。由于物理區(qū)塊不按照邏輯區(qū)塊的順序而隨機(jī)遍布,以隨機(jī)方式估計傳統(tǒng)的讀取技術(shù)大約需要花費(fèi)0.0043秒讀取0.0308MB的數(shù)據(jù)。因此內(nèi)部傳輸速率約為0.0308MB+0.0043秒=7MB/s;而綜合的硬盤傳輸速率為(300MB/sX7MB/s)+(300MB/s+7MB/s)=6.8MB/s。相對地,由于本發(fā)明提供的文件的讀取方法只需便利磁軌一周,就能以遞增或遞減的順序依序讀取所需的物理區(qū)塊。因此所需時間為磁軌轉(zhuǎn)動一周的時間1/7200秒;內(nèi)部傳輸速率為221.76MB/s;綜合的硬盤傳輸速率為127.5MB/s;因此遠(yuǎn)較傳統(tǒng)的讀取方法有效率。綜上所述,對于支持的文件系統(tǒng)類型,文件的讀取方法能夠快速地得到欲讀取的文件的所有物理區(qū)塊地址,并將這些物理區(qū)塊地址以遞增或遞減的順序排列成物理地址表,再依據(jù)物理地址表進(jìn)行讀取。因此文件的讀取方法能大幅減少讀取時所需進(jìn)行的移動讀寫臂的機(jī)械動作,而提升了讀取速率。且由于此方法不要求提高磁盤轉(zhuǎn)速,因此能夠避免傳統(tǒng)上磨損加劇、溫度升高或是噪聲增大等負(fù)面問題。當(dāng)然,本發(fā)明還可有其它多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。權(quán)利要求1.一種文件的讀取方法,用以讀取一硬盤的至少一文件,其中該文件對應(yīng)該硬盤中的多個物理區(qū)塊,其特征在于,該文件的讀取方法包括:檢測該硬盤的一文件系統(tǒng)類型;依據(jù)該文件系統(tǒng)類型,讀取該文件的一地址信息;依據(jù)該地址信息,得到與該些物理區(qū)塊對應(yīng)的多個物理區(qū)塊地址;將該些物理區(qū)塊地址排序得到一物理地址表,其中該物理地址表中的該些物理區(qū)塊地址以遞增或遞減的順序排列;以及依照該物理地址表,以一第一讀取手段讀取該文件的該些物理區(qū)塊。2.根據(jù)權(quán)利要求1所述的文件的讀取方法,其特征在于,該第一讀取手段包括:開啟一暫存區(qū);依照該物理地址表,依序讀取該文件的該些物理區(qū)塊,并依序?qū)⒆x取的每一該物理區(qū)塊所對應(yīng)的一邏輯區(qū)塊填入該暫存區(qū);以及將填滿的該暫存區(qū)做為該文件的一數(shù)據(jù)源。3.根據(jù)權(quán)利要求1所述的文件的讀取方法,其特征在于,該第一讀取手段還包括:累計一讀取計時器;以及當(dāng)該讀取計時器到達(dá)一讀取時限時,將目前的該暫存區(qū)做為該文件的一數(shù)據(jù)源,并重置該讀取計時器。4.根據(jù)權(quán)利要求1所述的文件的讀取方法,其特征在于,該文件系統(tǒng)類型為分層文件系統(tǒng)或分層文件系統(tǒng)加,且該地址信息為延伸紀(jì)錄所指向的延伸數(shù)據(jù)紀(jì)錄。5.根據(jù)權(quán)利要求1所述的文件的讀取方法,其特征在于,該文件系統(tǒng)類型為文件配置表32,且該地址信息為文件配置表。6.根據(jù)權(quán)利要求1所述的文件的讀取方法,其特征在于,該文件系統(tǒng)類型為新技術(shù)文件系統(tǒng),且該地址信息為運(yùn)轉(zhuǎn)表。7.根據(jù)權(quán)利要求1所述的文件的讀取方法,其特征在于,還包括:檢測該文件的一文件大?。灰约爱?dāng)該文件大小大于一讀取上限時,以一第二讀取手段讀取該文件的該些物理區(qū)塊。全文摘要一種文件的讀取方法,用以讀取硬盤的文件,其中文件對應(yīng)硬盤中的多個物理區(qū)塊。文件的讀取方法包括檢測硬盤的文件系統(tǒng)類型;依據(jù)文件系統(tǒng)類型,讀取文件的地址信息;依據(jù)地址信息,得到與物理區(qū)塊對應(yīng)的多個物理區(qū)塊地址;將物理區(qū)塊地址排序得到物理地址表,其中物理地址表中的物理區(qū)塊地址以遞增或遞減的順序排列;以及依照物理地址表,以第一讀取手段讀取文件的物理區(qū)塊。文檔編號G06F12/06GK103092896SQ201110352709公開日2013年5月8日申請日期2011年11月4日優(yōu)先權(quán)日2011年11月4日發(fā)明者焦旭東,陳志豐申請人:英業(yè)達(dá)股份有限公司