專利名稱::一種實現(xiàn)文件訪問的高速緩存系統(tǒng)和方法
技術領域:
:本發(fā)明涉及磁盤文件的讀取,尤其涉及的是,一種實現(xiàn)文件訪問的高速緩存系統(tǒng)和方法。
背景技術:
:為減少對i茲盤的訪問,特別是對遠程磁盤的訪問,提高文件的檢索效率,現(xiàn)有技術采用了高速緩存的方式,即將常用信息放到高速緩沖存儲器。/磁盤高速緩存的價值在于兩個方面第一,訪問/磁盤的速度要遠遠低于訪問內(nèi)存的速度,因此,從內(nèi)存訪問數(shù)據(jù)比從磁盤訪問速度更快。第二,數(shù)據(jù)一旦被訪問,就很有可能在短期內(nèi)再次被訪問到。這種在短時期內(nèi)集中訪問同一片l丈據(jù)的原理-陂稱作臨時局部原理(tempomllocality)。臨時局部原理能保證如果在第一次訪問數(shù)據(jù)時,對其進行緩存,那就極有可能在短期內(nèi)再次被高速緩存命中,即訪問到高速緩存中的數(shù)據(jù)。因此,如何更有效地實現(xiàn)磁盤高速緩存,是在實際應用中需要改進的技術問題。
發(fā)明內(nèi)容本發(fā)明所要解決的技術問題是提供一種具體的、高效的實現(xiàn)文件訪問的高速緩存系統(tǒng)和方法。本發(fā)明的技術方案如下一種實現(xiàn)文件訪問的高速緩存系統(tǒng),其包括索引區(qū)單元、數(shù)據(jù)區(qū)單元和空閑指針鏈表單元;所述數(shù)據(jù)區(qū)單元包括連續(xù)的、固定大小的存儲單元,用于根據(jù)預設置存儲單元的大小和個數(shù),占用連續(xù)的相應內(nèi)存空間用作各存儲單元,所述存儲單元用于記錄包括文件類型和文件名的文件信息;所述索引區(qū)單元設置索引管理區(qū)模塊和至少一索引節(jié)點;為每一個目錄設置一個索引節(jié)點,所述索引節(jié)點用于存儲其對應目錄的絕對路徑,以及該絕對路徑下的目錄和文件的信息,并采用對象指針指向記錄各文件信息的各存儲單元;所述索引管理區(qū)模塊用于管理所述索引節(jié)點;所述空閑指針鏈表單元用于維護一具有多個鏈表單元的空閑指針鏈表,各鏈表單元分別用于存放指向各存儲單元的指針。所述的高速緩存系統(tǒng),其中,所述空閑指針鏈表單元包括先進先出模塊和鎖機制模塊,分別用于實現(xiàn)先進先出功能和鎖機制,以維護所述空閑指'針鏈表。所述的高速緩存系統(tǒng),其中,其還包括本地或遠程^磁盤,所迷存儲單元用于記錄所述磁盤的文件信息,并為其建立對應的索引節(jié)點,更新所述索引管理區(qū)。一種實現(xiàn)文件訪問的高速緩存方法,用于包括索引區(qū)、數(shù)據(jù)區(qū)和空閑指針鏈表的高速緩存系統(tǒng),該方法包括以下步驟Al、在內(nèi)存中預設置存儲單元的大小和個數(shù),初始化相應的內(nèi)存空間作為具有至少一個所述存儲單元的所述數(shù)據(jù)區(qū),所述存儲單元用于記錄包括文件類型和文件名的文件信息;A2、初始化所述索引區(qū)中的索引管理區(qū)和至少一索引節(jié)點,為每一個目錄設置一個索引節(jié)點,在所述索引節(jié)點存儲其對應目錄的絕對路徑,以及該絕對路徑下的目錄和文件的信息,并采用對象指針指向記錄了各文件信息的各存儲單元;A3、在內(nèi)存中預設置所述空閑指針鏈表,其中各鏈表單元分別存放指向各存儲單元的指針;A4、收到文件訪問請求,通過所述索引管理區(qū),檢索各索引節(jié)點;A5、判斷是否檢索得到所需文件,是則執(zhí)行A6,否則執(zhí)行A7;A6、根據(jù)得到的索引節(jié)點中的路徑,讀取本地或遠程磁盤中的所需文件;A7、在本地或遠程磁盤中搜索并讀取所需文件。所述的高速援存方法,其中,步驟A2中,所述索引管理區(qū)采用MAP方式實現(xiàn),采用索引節(jié)點的絕對目錄路徑作為關鍵字,采用對象指針作為關鍵字的值。所述的高速緩存方法,其中,步驟A3中,所述空閑指針鏈表為先進先出結構,并采用鎖機制實現(xiàn)。所述的高速緩存方法,其中,步驟A5中,在索引管理區(qū)為空時,則判斷沒有^f企索得到所需文件。所述的高速緩存方法,其中,步驟A7之后,還執(zhí)行以下步驟A71、通過所述空閑指針鏈表,獲得一個空閑的存儲單元,將所需文件的文件類型和文件名記錄在該存儲單元中,并為其建立對應的索引節(jié)點。所述的高速緩存方法,其中,步驟A71之后,還執(zhí)行以下步驟A72、更新所述索引管理區(qū),增加或修改存儲該所需文件的目錄和文件的信息的索引節(jié)點。所述的高速緩存方法,其中,步驟A71之后,還執(zhí)行以下步驟A73、判斷所需文件占用的存儲單元使用完成,或所述空閑指針鏈表為空時選擇未曾使用時間最長的存儲單元;A74、釋放存儲單元的數(shù)據(jù),使之成為空閑的存儲單元,在所述空閑指針鏈表的一鏈表單元中存放指向該空閑的存儲單元的指針。采用上述方案,本發(fā)明通過記錄空閑的存儲單元,以及對索引節(jié)點進行管理,應用靈活、方便,高效、迅速地實現(xiàn)了對本地或遠程磁盤數(shù)據(jù)的高速緩存,提高了文件的檢索效率。圖l是本發(fā)明的一種實施方式的高速緩存示意圖2是本發(fā)明的一種實施方式的空閑指針鏈表結構示意圖3是本發(fā)明方法的流程圖。具體實施例方式以下結合附圖和具體實施例,對本發(fā)明進行詳細說明。如圖1所示,本發(fā)明提供了一種實現(xiàn)文件訪問的高速緩存系統(tǒng),其包括索引區(qū)單元、數(shù)據(jù)區(qū)單元和空閑指針鏈表單元;用于減少對磁盤的訪問,特別是對遠程磁盤的訪問,提高文件信息的檢索效率。該高速緩存系統(tǒng)具體說明如下。所述數(shù)據(jù)區(qū)單元包括連續(xù)的、固定大小的存儲單元,用于根據(jù)預設置存儲單元的大小和個數(shù),占用連續(xù)的相應內(nèi)存空間用作各存儲單元,所述存儲單元用于記錄包括文件類型和文件名的文件信息;在本發(fā)明中,高速緩存采用固定存儲單元設計,每個存儲單元大小可配置,存儲單元個數(shù)也可以配置,模塊初始化時一次性申請足夠的空間作為高速緩存的數(shù)據(jù)區(qū)。下面對內(nèi)存數(shù)據(jù)區(qū)進行進一步說明,這個內(nèi)存數(shù)據(jù)區(qū)是一個連續(xù)的、固定大小的數(shù)據(jù)儲存內(nèi)存空間,按照配置的數(shù)據(jù)單元大小和數(shù)據(jù)區(qū)總量進行創(chuàng)建,創(chuàng)建成功的同時將每個單元的指針存放在空閑指針鏈中。例如,數(shù)據(jù)區(qū)的存儲格式如表l所示。<table>tableseeoriginaldocumentpage8</column></row><table>表1為減少對磁盤頻繁操作,提高文件數(shù)據(jù)的檢索效率,本發(fā)明設計了索引區(qū),為文件檢索功能專用。所述索引區(qū)單元設置索引管理區(qū)模塊和至少一索引節(jié)點;所述索引管理區(qū)模塊用于管理各個索引節(jié)點;為每一個目錄設置一個索引節(jié)點,所述索引節(jié)點用于存儲其對應目錄的絕對路徑,以及該絕對路徑下的目錄和文件的信息,并采用對象指針指向記錄各文件信息的各存儲單元。索引節(jié)點的數(shù)據(jù)結構定義如表2所示。<table>tableseeoriginaldocumentpage9</column></row><table>表3所述空閑指針鏈表單元用于維護一具有多個鏈表單元的空閑指針鏈表,各鏈表單元分別用于存放指向各存儲單元的指針。本發(fā)明還需要建立一個鏈表,在鏈表中存放存儲單元的首指針,稱之為空閑指針鏈表。當外部系統(tǒng)向模塊發(fā)出文件檢索請求時,系統(tǒng)首先檢索文件索引管理區(qū),如果索引管理區(qū)為空或沒有檢索到對應的文件,然后從磁盤讀取指定路徑下的文件信息,然后從空閑鏈表中申請一個內(nèi)存節(jié)點,然后將數(shù)據(jù)存儲在該節(jié)點中;數(shù)據(jù)使用完畢,或空閑鏈表內(nèi)存使用完畢,系統(tǒng)會通過相應的調(diào)度策略,找出內(nèi)存數(shù)據(jù)區(qū)中最久沒有訪問的數(shù)據(jù),要求數(shù)據(jù)進行釋放,然后又將數(shù)據(jù)指針回收到空閑鏈表。具體地說,如圖2所示,空閑指針鏈表可以是一個先進先出的鏈表結構,每個單元存放數(shù)據(jù)區(qū)中一個存儲單元指針。其可以提供Alloc,用于取空閑的數(shù)據(jù)單元;Free方法,用完回歸;以及GetAllocSize屬性,用于定義操作接口。模塊初始化時根據(jù)配置大小,得到鏈的大小,開辟一個統(tǒng)一大小的內(nèi)存數(shù)據(jù)區(qū),將內(nèi)存數(shù)據(jù)區(qū)中所有的存儲單元指針一一放入空閑指針鏈表中,當要求建立、更新文件索引區(qū)時,從空閑指針鏈表中申請空閑存儲單元指針進行存儲數(shù)據(jù);當數(shù)據(jù)過期或開辟的內(nèi)存數(shù)據(jù)區(qū)使用完畢,模塊通過相關的調(diào)度策略,找出對應需要釋放的文件節(jié)點,然后^^節(jié)點指針加到空閑隊列尾,以達到內(nèi)存釋放的目的。如果在多線程環(huán)境對其操作,以上鏈表在使用時都必須使用一個鎖機制進行保護,只有得到鎖的線程才能操作鏈表。鎖機制是指封鎖正被一個事務修改的數(shù)據(jù),防止其他用戶訪問到不一致的數(shù)據(jù),完成以后要為被它封鎖的對象解鎖。一個實施例是,所述空閑指針鏈表單元包括先進先出;f莫塊和鎖機制模塊,分別用于實現(xiàn)先進先出功能和鎖機制,以維護所述空閑指針鏈表。另一個實施例是,所述的高速緩存系統(tǒng)還包括本地或遠程磁盤,所述存儲單元用于記錄所述磁盤的文件信息,并為其建立對應的索引節(jié)點,更新所述索引管理區(qū)。并且,如圖3所示,本發(fā)明還提供了一種實現(xiàn)文件訪問的高速緩存方法,用于包括索引區(qū)、數(shù)據(jù)區(qū)和空閑指針鏈表的高速緩存系統(tǒng),該方法具體包括以下步驟。Al、在內(nèi)存中預設置存儲單元的大小和個數(shù),初始化相應的內(nèi)存空間作為具有至少一個所述存儲單元的所述數(shù)據(jù)區(qū),所述存儲單元用于記錄包括文件類型和文件名的文件信息。文件信息還可以包括其它的內(nèi)容,具體是實際需要而定;例如,在不考慮存儲單元大小的情況下,文件信息還可以包括該文件的相關路徑、摘要等等。A2、初始化所述索引區(qū)中的索引管理區(qū)和至少一索引節(jié)點,為每一個目錄設置一個索引節(jié)點,在所述索引節(jié)點存儲其對應目錄的絕對路徑,以及該絕對路徑下的目錄和文件的信息,并采用對象指針指向記錄了各文件信息的各存儲單元。所述索引管理區(qū)可以采用哈希(Hash)算法實現(xiàn),更好的是,所述索引管理區(qū)采用MAP方式實現(xiàn),采用索引節(jié)點的絕對目錄路徑作為關鍵字,采用對象指針作為關鍵字的值。A3、在內(nèi)存中預設置所述空閑指針鏈表,其中各鏈表單元分別存放指向各存儲單元的指針;更好的是,所述空閑指針鏈表為先進先出結構,并采用鎖機制實現(xiàn)。A4、收到文件訪問請求,通過所述索引管理區(qū),檢索各索引節(jié)點;然后,A5、判斷是否檢索得到所需文件,是則執(zhí)行A6,否則執(zhí)行A7;其中,當索引管理區(qū)為空時,則判斷的結果也是認為沒有檢索得到所需文件。A6、根據(jù)得到的索引節(jié)點中的路徑,讀取本地或遠程》茲盤中的所需文件;A7、在本地或遠程i茲盤中搜索并讀取所需文件。一個例子是,在步驟A7之后,還可以執(zhí)行以下步驟A71、通過所述空閑指針鏈表,獲得一個空閑存儲單元,將所需文件的文件類型和文件名記錄在該存儲單元中,并為其建立對應的索引節(jié)點。又一個例子是,在步驟A71之后,還執(zhí)行以下步驟A72、更新所述索引管理區(qū),增加或修改存儲該所需文件的目錄和文件的信息的索引節(jié)點。或者,在步驟A71或步驟A72之后,還執(zhí)行以下步驟A73、判斷所需文件占用的存儲單元使用完成,或所述空閑指針鏈表為空時選擇未曾使用時間最長的存儲單元;A74、釋放存儲單元的數(shù)據(jù),使之成為空閑存儲單元,在所述空閑指針鏈表的一鏈表單元中存放指向該空閑的存儲單元的指針。需要說明的是,本發(fā)明方法在具體實現(xiàn)中,可以結合上述對高速緩存系統(tǒng)的說明,采用各種實施方式,在此不再重復贅述。應當理解的是,對本領域普通技術人員來說,可以根據(jù)上述說明加以改進或變換,而所有這些改進和變換都應屬于本發(fā)明所附權利要求的保護范圍。權利要求1、一種實現(xiàn)文件訪問的高速緩存系統(tǒng),其特征在于,包括索引區(qū)單元、數(shù)據(jù)區(qū)單元和空閑指針鏈表單元;所述數(shù)據(jù)區(qū)單元包括連續(xù)的、固定大小的存儲單元,用于根據(jù)預設置存儲單元的大小和個數(shù),占用連續(xù)的相應內(nèi)存空間用作各存儲單元,所述存儲單元用于記錄包括文件類型和文件名的文件信息;所述索引區(qū)單元設置索引管理區(qū)模塊和至少一索引節(jié)點;為每一個目錄設置一個索引節(jié)點,所述索引節(jié)點用于存儲其對應目錄的絕對路徑,以及該絕對路徑下的目錄和文件的信息,并采用對象指針指向記錄各文件信息的各存儲單元;所述索引管理區(qū)模塊用于管理所述索引節(jié)點;所述空閑指針鏈表單元用于維護一具有多個鏈表單元的空閑指針鏈表,各鏈表單元分別用于存放指向各存儲單元的指針。2、根據(jù)權利要求1所述的高速緩存系統(tǒng),其特征在于,所述空閑指針鏈表單元包括先進先出模塊和鎖機制模塊,分別用于實現(xiàn)先進先出功能和鎖機制,以維護所述空閑指針鏈表。3、根據(jù)權利要求l所述的高速緩存系統(tǒng),其特征在于,其還包括本地或遠程磁盤,所述存儲單元用于記錄所述磁盤的文件信息,并為其建立對應的索引節(jié)點,更新所述索引管理區(qū)。4、一種實現(xiàn)文件訪問的高速緩存方法,用于包括索引區(qū)、數(shù)據(jù)區(qū)和空閑指針鏈表的高速緩存系統(tǒng),該方法包括以下步驟Al、在內(nèi)存中預設置存儲單元的大小和個數(shù),初始化相應的內(nèi)存空間作為具有至少一個所述存儲單元的所述數(shù)據(jù)區(qū),所述存儲單元用于記錄包括文件類型和文件名的文件信息;A2、初始化所述索引區(qū)中的索引管理區(qū)和至少一索引節(jié)點,為每一個目錄設置一個索引節(jié)點,在所述索引節(jié)點存儲其對應目錄的絕對路徑,以及該絕對路徑下的目錄和文件的信息,并采用對象指針指向記錄了各文件信息的各存儲單元;A3、在內(nèi)存中預設置所述空閑指針鏈表,其中各鏈表單元分別存放指向各存儲單元的指針;A4、收到文件訪問請求,通過所述索引管理區(qū),^r索各索引節(jié)點;A5、判斷是否檢索得到所需文件,是則執(zhí)行A6,否則執(zhí)行A7;A6、4艮據(jù)得到的索引節(jié)點中的路徑,讀取本地或遠程》茲盤中的所需文件;A7、在本地或遠程磁盤中搜索并讀取所需文件。5、根據(jù)權利要求4所述的高速緩存方法,其特征在于,步驟A2中,所述索引管理區(qū)采用MAP方式實現(xiàn),采用索引節(jié)點的絕對目錄路徑作為關鍵字,采用對象指針作為關鍵字的值。6、根據(jù)權利要求4所述的高速緩存方法,其特征在于,步驟A3中,所述空閑指針鏈表為先進先出結構,并采用鎖機制實現(xiàn)。7、根據(jù)權利要求4所述的高速緩存方法,其特征在于,步驟A5中,在索引管理區(qū)為空時,則判斷沒有檢索得到所需文件。8、根據(jù)權利要求4至7任一所述的高速緩存方法,其特征在于,步驟A7之后,還執(zhí)行以下步驟A71、通過所述空閑指針鏈表,獲得一個空閑的存儲單元,將所需文件的文件類型和文件名記錄在該存儲單元中,并為其建立對應的索引節(jié)點。9、根據(jù)權利要求8所述的高速緩存方法,其特征在于,步驟A71之后,還執(zhí)行以下步驟A72、更新所述索引管理區(qū),增加或修改存儲該所需文件的目錄和文件的信息的索引節(jié)點。10、根據(jù)權利要求8所述的高速緩存方法,其特征在于,步驟A71之后,還執(zhí)行以下步驟A73、判斷所需文件占用的存儲單元使用完成,或所述空閑指針鏈表為空時選擇未曾使用時間最長的存儲單元;A74、釋放存儲單元的數(shù)據(jù),使之成為空閑的存儲單元,在所述空閑指針鏈表的一鏈表單元中存放指向該空閑的存儲單元的指針。全文摘要本發(fā)明公開了一種實現(xiàn)文件訪問的高速緩存系統(tǒng)和方法,該系統(tǒng)包括索引區(qū)單元、數(shù)據(jù)區(qū)單元和空閑指針鏈表單元;數(shù)據(jù)區(qū)單元包括連續(xù)的、固定大小的存儲單元,根據(jù)預設置存儲單元的大小和個數(shù),占用連續(xù)的相應內(nèi)存空間用作各存儲單元,存儲單元記錄文件信息;索引區(qū)單元設置索引管理區(qū)模塊和至少一索引節(jié)點;為每一個目錄設置一個索引節(jié)點,索引節(jié)點存儲其對應目錄的絕對路徑,以及該絕對路徑下的目錄和文件的信息,并采用對象指針指向記錄各文件信息的各存儲單元;空閑指針鏈表單元維護空閑指針鏈表,其各鏈表單元分別存放指向各存儲單元的指針。本發(fā)明應用靈活、方便,高效、迅速地實現(xiàn)了對本地或遠程磁盤數(shù)據(jù)的高速緩存,提高了文件的檢索效率。文檔編號G06F12/08GK101187901SQ200710125440公開日2008年5月28日申請日期2007年12月20日優(yōu)先權日2007年12月20日發(fā)明者毅劉申請人:康佳集團股份有限公司