專利名稱:一種訪問文件的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機領(lǐng)域的文件系統(tǒng)技術(shù),尤其涉及一種訪問文件的方法。
背景技術(shù):
在計算機及具有信息處理能力的系統(tǒng)中,文件系統(tǒng)是軟件為了存儲和管理數(shù)據(jù)而在存儲器上建立的一些結(jié)構(gòu)的總和。文件系統(tǒng)主要完成跟蹤、記錄存儲器上中被耗用的空間和自由空間,維護目錄名和文件名,以及跟蹤、記錄每一個文件的物理存儲位置等三項功能。
如圖1所示,在現(xiàn)有的計算機系統(tǒng)中,當(dāng)輸入/輸出控制器需要訪問(讀或?qū)?文件時,如果是寫操作,文件系統(tǒng)則首先把輸入控制器的數(shù)據(jù)讀取到內(nèi)存中,再從內(nèi)存寫入到存儲控制器,最后寫入到存儲器中;如果是讀操作,則先從存儲器將數(shù)據(jù)讀到存儲控制器,然后從存儲控制器讀到內(nèi)存,最后從內(nèi)存?zhèn)魉徒o輸出控制器,其數(shù)據(jù)傳輸過程如圖2所示。在這種訪問文件方式下,訪問效率會受到輸入/輸出控制器和內(nèi)存速度影響,不僅訪問效率低,而且還要耗費較多的系統(tǒng)資源(尤其在文件比較大時)。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供一種訪問文件的方法,以解決現(xiàn)有技術(shù)中輸入/輸出控制器訪問文件時存在效率低和占用資源多的問題。
一種訪問文件的方法,包括如下步驟A、系統(tǒng)中的輸入/輸出控制器向文件系統(tǒng)發(fā)送讀文件或?qū)懳募埱?;B、文件系統(tǒng)確定待讀文件在存儲器中的存儲地址或為待寫文件分配存儲地址,并將該存儲地址返回給所述輸入/輸出控制器;C、輸入/輸出控制器向存儲控制器發(fā)送讀文件或?qū)懳募埱?,并提供所述存儲地址;D、存儲控制器按所述存儲地址從存儲器中讀取數(shù)據(jù)直接發(fā)送給輸出控制器,或者輸入控制器將數(shù)據(jù)直接發(fā)送給所述存儲控制器,該存儲控制器按所述存儲地址將數(shù)據(jù)寫入到存儲器中。
根據(jù)上述方法當(dāng)輸出控制器請求讀文件時,文件系統(tǒng)確定的存儲地址為文件在存儲器中的起始地址,或者為文件在存儲器中的一塊或全部塊地址。
當(dāng)輸入控制器請求寫文件時,文件系統(tǒng)確定的存儲地址為文件寫入存儲器中的各個地址;或者為文件寫入存儲器中的一塊或全部塊地址。
當(dāng)存儲控制器寫完文件后通知文件系統(tǒng),由文件系統(tǒng)完成該文件相關(guān)信息的處理。
本發(fā)明具有以下有益效果1、讀寫效率高和資源占用少,由于硬件不必通過軟件傳輸讀寫數(shù)據(jù),僅傳輸讀寫請求、讀寫位置和讀寫長度等信息,減少了占用資源的時間,降低了軟件的系統(tǒng)開銷,因為無需對內(nèi)存進行操作,從而也加快了存儲速度。
2、低成本,由于硬件無需支持文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)解析功能,從而節(jié)省了硬件的設(shè)計與生產(chǎn)成本。
3、兼容性好,本發(fā)明不受操作系統(tǒng)限制,支持任何操作系統(tǒng)和軟硬件平臺。
4、可擴展性好,本發(fā)明不受文件系統(tǒng)類型的限制,可以適用于所有的文件系統(tǒng)。
圖1為計算機系統(tǒng)的結(jié)構(gòu)示意圖;圖2為現(xiàn)有技術(shù)中輸入/輸出控制器訪問文件時的數(shù)據(jù)傳輸示意圖;圖3為本發(fā)明中輸出控制器讀文件的流程圖;圖4為本發(fā)明中輸入控制器寫文件的流程圖;圖5為本發(fā)明中輸入/輸出控制器訪問文件時的數(shù)據(jù)傳輸示意圖。
具體實施例方式
本實施主要以圖1所示的計算機結(jié)構(gòu)進行說明,該結(jié)構(gòu)中未顯示實現(xiàn)計算機功能所必須、并且本領(lǐng)域技術(shù)人員所公知的部分部件。
參閱圖1,輸入/輸出類控制器、協(xié)處理器和內(nèi)存在同一個中央處理器(CPU)的外部總線上。輸入/輸出類控制器用于處理協(xié)處理器與CPU之間的通訊。協(xié)議處理器中的輸入控制器用于處理外部設(shè)備的數(shù)據(jù)輸入,存儲控制器用于控制存儲器中的數(shù)據(jù)讀寫操作。當(dāng)然還可包括輸出控制器(圖中未示出),用于向外部分輸出數(shù)據(jù)。
在本實施例中,計算機的文件系統(tǒng)通過文件分配表(FAT)和文件描述表(FDT)表管理存儲器中的文件。文件分配表是文件系統(tǒng)用來記錄每個文件簇為單位的物理存儲位置的鏈表,簇(Cluster)是將某一線形范圍的物理位置(地址)形成的一個單位。
本發(fā)明在輸出控制器需要從存儲器讀取文件或輸入控制器需要向存儲器寫入文件時,向文件系統(tǒng)發(fā)送讀或?qū)懻埱?;由文件系統(tǒng)向輸出控制器提供待讀文件在存儲器中的存儲地址或向輸入控制器提供為待寫文件分配的存儲地址;然后輸入控制器或輸出控制器與存儲控制器之間直接進行數(shù)據(jù)傳輸,以完成從存儲器中讀取數(shù)據(jù)或向存儲器寫入數(shù)據(jù)。
對于輸出控制器發(fā)起的讀文件請求,文件系統(tǒng)根據(jù)文件名通過文件描述表和文件分配表確定該文件在存儲器中的存儲地址。除了向輸出控制器返回存儲地址外,還可以返回該文件的長度。存儲地址可以是文件在存儲器中的起始地址,也可以是文件數(shù)據(jù)在存儲器中的塊地址。當(dāng)文件系統(tǒng)向輸出控制器返回塊地址時,可以一次提供該文件在存儲器中的所有塊地址,也可以每次提供一個塊地址,輸出控制器讀完一塊數(shù)據(jù)后再向文件系統(tǒng)發(fā)送讀文件請求,從而獲得下一個塊地址。
對于輸入控制器發(fā)起的寫文件請求,文件系統(tǒng)根據(jù)文件分配表來確定文件寫入存儲器中的存儲地址。存儲地址可以是存儲文件的各個地址,也可以是存儲文件數(shù)據(jù)的塊地址。當(dāng)文件系統(tǒng)向輸入控制器返回塊地址時,可以一次提供存儲該文件的所有塊地址,也可以每次提供一個塊地址,輸入控制器通過存儲控制器寫完一塊數(shù)據(jù)后再向文件系統(tǒng)發(fā)送寫文件請求,從而獲得下一個塊地址。
在輸入控制器完成寫文件操作后,需要通知文件系統(tǒng),由文件系統(tǒng)對該文件相關(guān)信息進行處理(與現(xiàn)有技術(shù)中的處理方式相同),如,在文件分配表中記錄文件所占用的物理位置,在文件描述表中記錄文件的屬性信息等。
輸入/輸出控制器向文件系統(tǒng)發(fā)送讀文件請求或?qū)懳募埱罂梢圆捎弥袛喾绞?,即由輸?輸出控制器產(chǎn)生中斷信號,CPU響應(yīng)該中斷執(zhí)行文件系統(tǒng)程序;也可以采用輪詢方式向文件系統(tǒng)發(fā)送讀文件或?qū)懳募埱螅碈PU通過循環(huán)(指令)方式不斷查詢控制器的寄存器或指定地址中的數(shù)值,來判斷是否進入請求狀態(tài)。
參閱圖3所示,輸出控制器從存儲器讀取文件的主要步驟如下步驟1、輸出控制器產(chǎn)生一個讀文件的中斷信號,并將待讀文件的路徑和文件名等信息傳遞給文件系統(tǒng),以請求從存儲器讀取指定的文件。
傳遞方式主要有兩種一是當(dāng)請求發(fā)生時,控制器在其寄存器(或地址)上存入該文件的路徑和文件名等,CPU讀取該寄存器(或指定地址)獲得文件名等信息。二是當(dāng)請求發(fā)生時,首先由處理器運行的其它程序進行處理,然后將文件相關(guān)信息存入內(nèi)存的某處,由文件系統(tǒng)從該處獲得該文件信息;如,獲得請求后,程序彈出對話框,告知用戶有一文件需要存儲,讓用戶選擇文件存儲的位置和名稱,用戶輸入后,將值保存在某一內(nèi)存區(qū),由文件系統(tǒng)從該區(qū)讀取該值,或直接告知文件系統(tǒng)該值。
步驟2、文件系統(tǒng)根據(jù)文件名,從文件描述表和文件分配表中得到該文件在存儲器中的存儲地址,并返回給輸出控制器。
步驟3、輸出控制器向存儲控制器發(fā)送讀文件請求,并提供該文件在存儲器中的存儲地址。
步驟4、存儲控制器根據(jù)所述存儲地址從存儲器讀取數(shù)據(jù),并通過直接發(fā)送給輸出控制器,直到讀完該文件的所有數(shù)據(jù)。
參閱圖4所示,輸入控制器向存儲器寫入文件的主要步驟如下步驟11、輸入控制器產(chǎn)生一個寫文件的中斷信號,并將待寫文件的文件名傳遞給文件系統(tǒng),以請求向存儲器寫入文件。
步驟12、文件系統(tǒng)根據(jù)文件分配表為該文件分配存儲塊,并將分配到的所有存儲塊地址返回給輸入控制器。
步驟13、輸入控制器向存儲控制器發(fā)送寫文件請求,并提供存儲文件的塊地址。
步驟14、輸入控制器將數(shù)據(jù)直接發(fā)送給存儲控制器,由存儲控制器將數(shù)據(jù)寫到存儲器內(nèi)指定的存儲塊中,直到寫完該文件的所有數(shù)據(jù)。
步驟15、存儲控制器通知文件系統(tǒng)已完成寫文件操作。
步驟16、文件系統(tǒng)在文件分配表中記錄文件所占用的物理位置,在文件描述表中記錄文件的屬性信息,如文件名、文件大小等。
結(jié)合圖1可看出,輸入控制器將外部設(shè)備(如攝像頭)輸入的數(shù)據(jù)寫到存儲器時,在協(xié)處理器內(nèi)部實現(xiàn)了數(shù)據(jù)傳輸,不僅效率高,而且不占用系統(tǒng)中CPU的外部總線,這樣就完全空出了CPU外部總線的帶寬,大幅度地降低了對系統(tǒng)資源的占用。
以上僅以較佳實施例對本發(fā)明進行說明,對于計算機系統(tǒng)使用何種操作系統(tǒng),并不影響本發(fā)明的實現(xiàn),所述存儲器包括但不限于軟硬盤、光盤、內(nèi)存、閃存(Flash)等。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若對本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權(quán)利要求
1.一種訪問文件的方法,其特征在于該方法包括如下步驟A、輸入/輸出控制器向文件系統(tǒng)發(fā)送讀文件或?qū)懳募埱螅籅、文件系統(tǒng)確定待讀文件在存儲器中的存儲地址或為待寫文件分配存儲地址,并將該存儲地址返回給所述輸入/輸出控制器;C、輸入/輸出控制器向存儲控制器發(fā)送讀文件或?qū)懳募埱?,并提供所述存儲地址;D、存儲控制器按所述存儲地址從存儲器中讀取數(shù)據(jù)直接發(fā)送給輸出控制器,或者輸入控制器將數(shù)據(jù)直接發(fā)送給所述存儲控制器,該存儲控制器按所述存儲地址將數(shù)據(jù)寫入到存儲器中。
2.如權(quán)利要求1所述的方法,其特征在于,當(dāng)輸出控制器請求讀文件時,文件系統(tǒng)確定的存儲地址為文件在存儲器中的起始地址,或者為文件在存儲器中的一塊或全部塊地址。
3.如權(quán)利要求2所述的方法,其特征在于,當(dāng)文件系統(tǒng)確定的存儲地址為一個塊地址時,輸出控制器通過存儲控制器讀完一塊數(shù)據(jù)后再向文件系統(tǒng)發(fā)送讀文件請求,以獲取存放該文件數(shù)據(jù)的下一個塊地址。
4.如權(quán)利要求1所述的方法,其特征在于,當(dāng)輸入控制器請求寫文件時,文件系統(tǒng)確定的存儲地址為文件寫入存儲器中的各個地址;或者為文件寫入存儲器中的一塊或全部塊地址。
5.如權(quán)利要求4所述的方法,其特征在于,當(dāng)文件系統(tǒng)確定的存儲地址為一個塊地址時,輸入控制器通過存儲控制器寫完一塊數(shù)據(jù)后再向文件系統(tǒng)發(fā)送寫文件請求,以獲取寫該文件數(shù)據(jù)的下一個塊地址。
6.如權(quán)利要求1、4或5所述的方法,其特征在于,當(dāng)存儲控制器寫完文件后通知文件系統(tǒng),由文件系統(tǒng)完成該文件的相關(guān)信息處理。
7.如權(quán)利要求1所述的方法,其特征在于,文件系統(tǒng)完成文件的相關(guān)信息處理至少包括在文件分配表中記錄文件的物理位置,和在文件描述表中記錄該文件的屬性信息。
8.如權(quán)利要求1所述的方法,其特征在于,所述輸入/輸出控制器采用中斷或輪詢方式向文件系統(tǒng)發(fā)送讀文件或?qū)懳募埱蟆?br>
9.如權(quán)利要求1所述的方法,其特征在于,所述存儲器包括但不限于軟盤、硬盤、光盤、內(nèi)存和閃存。
全文摘要
本發(fā)明公開了一種訪問文件的方法,以解決現(xiàn)有技術(shù)中輸入/輸出控制器訪問文件時存在效率低和占用資源多的問題。該方法為系統(tǒng)中的輸入/輸出控制器向文件系統(tǒng)發(fā)送讀文件或?qū)懳募埱?;文件系統(tǒng)確定待讀文件在存儲器中的存儲地址或為待寫文件分配存儲地址,并將該存儲地址返回給所述輸入/輸出控制器;輸入/輸出控制器向存儲控制器發(fā)送讀文件或?qū)懳募埱螅⑻峁┧龃鎯Φ刂?;存儲控制器按所述存儲地址從存儲器中讀取數(shù)據(jù)直接發(fā)送給輸出控制器,或者輸入控制器將數(shù)據(jù)直接發(fā)送給所述存儲控制器,該存儲控制器按所述存儲地址將數(shù)據(jù)寫入到存儲器中。
文檔編號G06F12/00GK1622056SQ20041010255
公開日2005年6月1日 申請日期2004年12月24日 優(yōu)先權(quán)日2004年12月24日
發(fā)明者譚帥, 劉健, 周政軍 申請人:北京中星微電子有限公司