基于單數(shù)據(jù)庫和單文件的進程內(nèi)虛擬文件系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種基于單數(shù)據(jù)庫和單文件的進程內(nèi)虛擬文件系統(tǒng),基于單數(shù)據(jù)庫和單文件的進程內(nèi)虛擬文件系統(tǒng)建立在一原生操作系統(tǒng)上,應(yīng)用于單個應(yīng)用程序進程內(nèi)部的一個或多個線程,原生操作系統(tǒng)提供一數(shù)據(jù)庫、在數(shù)據(jù)庫之外的一原生文件,以及原生系統(tǒng)接口層;數(shù)據(jù)庫包括訪問接口,原生文件包括讀寫接口;其中,數(shù)據(jù)庫及訪問接口存取虛擬文件的結(jié)構(gòu)和數(shù)據(jù)塊信息,原生文件及讀寫接口存取虛擬文件的數(shù)據(jù)內(nèi)容;基于單數(shù)據(jù)庫和單文件的進程內(nèi)虛擬文件系統(tǒng)通過原生系統(tǒng)接口層調(diào)用訪問接口以及讀寫接口,完成虛擬文件系統(tǒng)的功能。
【專利說明】基于單數(shù)據(jù)庫和單文件的進程內(nèi)虛擬文件系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機數(shù)據(jù)處理【技術(shù)領(lǐng)域】,特別涉及一種基于單數(shù)據(jù)庫和單文件的進程內(nèi)虛擬文件系統(tǒng)。
【背景技術(shù)】
[0002]文件系統(tǒng)的作用是實現(xiàn)二進制化數(shù)據(jù)的存儲功能。目前的文件系統(tǒng)多種多樣,最為常見的當(dāng)屬FAT/NTFS/EXT文件系統(tǒng)。不同的文件系統(tǒng)具有不同的優(yōu)點和缺點,使用者可根據(jù)實際情況進行選擇,或者在一個操作系統(tǒng)上設(shè)置多個文件系統(tǒng)。
[0003]然而,不同的操作系統(tǒng)使用的文件目錄名稱規(guī)則大不相同,大部分程序在不同的文件系統(tǒng)間移植時,需要協(xié)調(diào)不同操作系統(tǒng)的文件目錄名稱的差異才能正常使用,非常不便。更復(fù)雜的是各類模擬器程序,如虛擬機等,在解決原生操作系統(tǒng)文件目錄差異的基礎(chǔ)上,還需要為程序內(nèi)部提供虛擬的目標(biāo)文件系統(tǒng)支持。
【發(fā)明內(nèi)容】
[0004]本發(fā)明針對現(xiàn)有技術(shù)存在的上述不足,提供了一種基于單數(shù)據(jù)庫和單文件的進程內(nèi)虛擬文件系統(tǒng)。本發(fā)明通過以下技術(shù)方案實現(xiàn):
[0005]一種基于單數(shù)據(jù)庫和單文件的進程內(nèi)虛擬文件系統(tǒng),基于單數(shù)據(jù)庫和單文件的進程內(nèi)虛擬文件系統(tǒng)建立在一原生操作系統(tǒng)上,應(yīng)用于單個應(yīng)用程序進程內(nèi)部的一個或多個線程,原生操作系統(tǒng)提供一數(shù)據(jù)庫、在數(shù)據(jù)庫之外的一原生文件,以及原生系統(tǒng)接口層;
[0006]數(shù)據(jù)庫包括訪問接口,原生文件包括讀寫接口 ;
[0007]其中,數(shù)據(jù)庫及訪問接口存取虛擬文件的結(jié)構(gòu)和數(shù)據(jù)塊信息,原生文件及讀寫接口存取虛擬文件的數(shù)據(jù)內(nèi)容;基于單數(shù)據(jù)庫和單文件的進程內(nèi)虛擬文件系統(tǒng)通過原生系統(tǒng)接口層調(diào)用訪問接口以及讀寫接口,完成虛擬文件系統(tǒng)的功能。
[0008]較佳的,數(shù)據(jù)庫中存取:
[0009]虛擬目錄和文件信息表,用以存取虛擬文件和文件的結(jié)構(gòu)信息;
[0010]虛擬文件數(shù)據(jù)塊表,用以存取存儲在原生文件中的虛擬文件的數(shù)據(jù)塊位置;以及[0011 ] 原生文件的空白塊表,用以存取原生文件中空白塊的位置。
[0012]較佳的,虛擬目錄和文件信息表包括至少六個字段:
[0013]所存儲虛擬文件或目錄的名稱、名稱的文件或目錄的布爾標(biāo)記、名稱的唯一識別號、名稱的父目錄的唯一識別號、名稱的創(chuàng)建時間,以及名稱的最后修改時間。
[0014]較佳的,虛擬文件數(shù)據(jù)塊表包括至少五個字段:
[0015]所存儲虛擬文件的識別號、所存儲的虛擬文件的數(shù)據(jù)塊的塊序號、所存儲的數(shù)據(jù)塊在原生文件中的起始位置、所存儲的數(shù)據(jù)塊在原生文件中的結(jié)束位置,以及數(shù)據(jù)塊的實
際使用量。
[0016]較佳的,原生文件的空白塊表包括至少兩個字段:
[0017]空白塊在原生文件中的起始位置以及空白塊在原生文件中的結(jié)束位置。[0018]較佳的,原生文件的大小隨所存儲文件的增加而增加,在刪除所存儲的虛擬文件時僅修改數(shù)據(jù)庫表,不減少原生文件的大小。
[0019]較佳的,在既修改數(shù)據(jù)庫,又修改原生文件的情況下,使用數(shù)據(jù)庫的事務(wù)提交功能,修改原生文件和數(shù)據(jù)庫成功后,以提交數(shù)據(jù)庫更改的結(jié)果作為是否成功操作的依據(jù)。
[0020]較佳的,接口層內(nèi)部采用線程鎖互斥,以支持多線程訪問。
[0021]本發(fā)明所達到的技術(shù)效果在于:
[0022]1、虛擬出跨平臺的文件系統(tǒng):對應(yīng)用程序而言,降低平臺移植適配不同文件系統(tǒng)的難度;并且可以定制應(yīng)用自己的虛擬文件系統(tǒng)名稱規(guī)則。
[0023]2、該虛擬文件系統(tǒng)的實現(xiàn)方法不影響底層文件系統(tǒng):只要原生操作系統(tǒng)中提供了數(shù)據(jù)庫和文件的支持,那就可以實現(xiàn)。更進一步的,應(yīng)用程序如果使用嵌入式數(shù)據(jù)庫的話,那么只需要原生操作系統(tǒng)提供的文件訪問接口。和原生操作系統(tǒng)的底層文件系統(tǒng)無關(guān)。對虛擬文件系統(tǒng),也不需要了解其底層系統(tǒng)格式或驅(qū)動等,只需要知道其文件和目錄的名稱規(guī)則就可以虛擬。
【專利附圖】
【附圖說明】
[0024]圖1所示的是本發(fā)明的結(jié)構(gòu)示意圖。
【具體實施方式】
[0025]以下將結(jié)合本發(fā)明的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整的描述和討論,顯然,這里所描述的僅僅是本發(fā)明的一部分實例,并不是全部的實例,基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本發(fā)明的保護范圍。
[0026]為了便于對本發(fā)明實施例的理解,下面將結(jié)合附圖以具體實施例為例作進一步的解釋說明,且各個實施例不構(gòu)成對本發(fā)明實施例的限定。
[0027]請參考圖1,本發(fā)明提供的一種基于單數(shù)據(jù)庫和單文件的進程內(nèi)虛擬文件系統(tǒng),基于單數(shù)據(jù)庫和單文件的進程內(nèi)虛擬文件系統(tǒng)建立在一原生操作系統(tǒng)上,應(yīng)用于單個應(yīng)用程序進程內(nèi)部的一個或多個線程,原生操作系統(tǒng)提供一數(shù)據(jù)庫、在數(shù)據(jù)庫之外的一原生文件,以及原生系統(tǒng)接口層;數(shù)據(jù)庫包括訪問接口,原生文件包括讀寫接口。數(shù)據(jù)庫及訪問接口存取虛擬文件的結(jié)構(gòu)和數(shù)據(jù)塊信息,原生文件及讀寫接口存取虛擬文件的數(shù)據(jù)內(nèi)容。
[0028]數(shù)據(jù)庫中存取三個表:虛擬目錄和文件信息表,用以存取虛擬文件和文件的結(jié)構(gòu)信息;虛擬文件數(shù)據(jù)塊表,用以存取存儲在原生文件中的虛擬文件的數(shù)據(jù)塊位置;以及原生文件的空白塊表,用以存取原生文件中空白塊的位置。三個表的具體形式如下:
【權(quán)利要求】
1.一種基于單數(shù)據(jù)庫和單文件的進程內(nèi)虛擬文件系統(tǒng),其特征在于,所述基于單數(shù)據(jù)庫和單文件的進程內(nèi)虛擬文件系統(tǒng)建立在一原生操作系統(tǒng)上,應(yīng)用于單個應(yīng)用程序進程內(nèi)部的一個或多個線程,所述原生操作系統(tǒng)提供一數(shù)據(jù)庫、在所述數(shù)據(jù)庫之外的一原生文件,以及原生系統(tǒng)接口層; 所述數(shù)據(jù)庫包括訪問接口,所述原生文件包括讀寫接口 ; 其中,所述數(shù)據(jù)庫及所述訪問接口存取虛擬文件的結(jié)構(gòu)和數(shù)據(jù)塊信息,所述原生文件及所述讀寫接口存取虛擬文件的數(shù)據(jù)內(nèi)容;所述基于單數(shù)據(jù)庫和單文件的進程內(nèi)虛擬文件系統(tǒng)通過所述原生系統(tǒng)接口層調(diào)用所述訪問接口以及讀寫接口,完成虛擬文件系統(tǒng)的功倉泛。
2.根據(jù)權(quán)利要求1所述的基于單數(shù)據(jù)庫和單文件的進程內(nèi)虛擬文件系統(tǒng),其特征在于,所述數(shù)據(jù)庫中存取: 虛擬目錄和文件信息表,用以存取虛擬文件和文件的結(jié)構(gòu)信息; 虛擬文件數(shù)據(jù)塊表,用以存取存儲在所述原生文件中的虛擬文件的數(shù)據(jù)塊位置;以及 原生文件的空白塊表,用以存取所述原生文件中空白塊的位置。
3.根據(jù)權(quán)利要求2所述的基于單數(shù)據(jù)庫和單文件的進程內(nèi)虛擬文件系統(tǒng),其特征在于,所述虛擬目錄和文件信息表包括至少六個字段: 所存儲虛擬文件或目錄的名稱、所述名稱的文件或目錄的布爾標(biāo)記、所述名稱的唯一識別號、所述名稱的父目錄的唯一識別號、所述名稱的創(chuàng)建時間,以及所述名稱的最后修改時間。
4.根據(jù)權(quán)利要求2所述的基于單數(shù)據(jù)庫和單文件的進程內(nèi)虛擬文件系統(tǒng),其特征在于,所述虛擬文件數(shù)據(jù)塊表包括至少五個字段: 所存儲虛擬文件的識別號、所存儲的虛擬文件的數(shù)據(jù)塊的塊序號、所存儲的數(shù)據(jù)塊在原生文件中的起始位置、所存儲的數(shù)據(jù)塊在原生文件中的結(jié)束位置,以及所述數(shù)據(jù)塊的實際使用量。
5.根據(jù)權(quán)利要求2所述的基于單數(shù)據(jù)庫和單文件的進程內(nèi)虛擬文件系統(tǒng),其特征在于,所述原生文件的空白塊表包括至少兩個字段: 所述空白塊在所述原生文件中的起始位置以及所述空白塊在所述原生文件中的結(jié)束位置。
6.根據(jù)權(quán)利要求1所述的基于單數(shù)據(jù)庫和單文件的進程內(nèi)虛擬文件系統(tǒng),其特征在于,所述原生文件的大小隨所存儲文件的增加而增加,在刪除所存儲的虛擬文件時僅修改數(shù)據(jù)庫表,不減少所述原生文件的大小。
7.根據(jù)權(quán)利要求6所述的基于單數(shù)據(jù)庫和單文件的進程內(nèi)虛擬文件系統(tǒng),其特征在于,在既修改所述數(shù)據(jù)庫,又修改所述原生文件的情況下,使用所述數(shù)據(jù)庫的事務(wù)提交功能,修改原生文件和數(shù)據(jù)庫成功后,以提交數(shù)據(jù)庫更改的結(jié)果作為是否成功操作的依據(jù)。
8.根據(jù)權(quán)利要求1所述的基于單數(shù)據(jù)庫和單文件的進程內(nèi)虛擬文件系統(tǒng),其特征在于,所述接口層內(nèi)部采用線程鎖互斥,以支持多線程訪問。
【文檔編號】G06F17/30GK103761328SQ201410043938
【公開日】2014年4月30日 申請日期:2014年1月29日 優(yōu)先權(quán)日:2014年1月29日
【發(fā)明者】嚴(yán)華杰, 周后紅, 胡偉雄, 戴立言, 李慶瑜 申請人:上海網(wǎng)達軟件股份有限公司