一種支持擴展功能的虛擬文件系統裝置和方法
【技術領域】
[0001]本發明屬于計算機領域,主要關注提高文件系統中文件數據的處理速度。
【背景技術】
[0002]目前提高文件數據的處理速度主要有兩類手段,一類是提高計算機硬件CPU的處理能力;另外一類是借助應用層的高速緩存機制。上述兩類手段共同的缺點是必須把待處理的文件數據傳遞到應用層的軟件上來處理,這樣文件數據需要由存儲介質讀取到操作系統內核中,然后再傳遞到操作系統用戶態,甚至需要通過網絡傳遞到文件處理軟件的計算機節點的用戶態中,這樣大量的數據拷貝非常耗費計算資源,文件數據的處理速度很難有巨大的提尚。
【發明內容】
[0003]本發明目的是為了有效提高文件系統中文件數據的處理速度。給出一種采用支持擴展功能的虛擬文件系統裝置及方法。
[0004]本發明的技術方案
[0005]一種支持擴展功能的虛擬文件系統裝置,所述裝置包括:虛擬文件系統服務模塊、文件系統實例模塊、擴展功能表模塊和擴展功能模塊;虛擬文件系統服務模塊分別與文件系統實例模塊和擴展功能表模塊相互連接,擴展功能表模塊與擴展功能模塊單向連接,擴展功能表模塊通過或不通過虛擬文件系統服務模塊指向文件系統實例模塊;
[0006]其中,所述的虛擬文件系統服務模塊包括:文件系統類型實例管理模塊、標準功能服務模塊,以及擴展功能服務模塊;所述的文件系統類型實例管理模塊用于對“文件系統類型實例表”的管理,包括“文件系統類型”實例的注冊與注銷;標準功能服務模塊用于提供文件標準功能的服務,標準功能服務模塊將已注冊“文件系統類型”實例與屬于該“文件系統類型”實例的“文件系統實例”相互關聯;擴展功能服務模塊用于提供自定義的文件擴展功能的服務,擴展功能服務模塊將已注冊“文件系統類型”實例與已注冊的“擴展功能表”相互關聯;
[0007]文件系統實例模塊包括數據結構體實例和標準功能模塊,“數據結構體實例”記錄該文件系統實例的運行時數據,標準功能模塊則基于“數據結構體實例”的數據來提供該文件系統實例的文件標準功能執行代碼的實現;
[0008]擴展功能表模塊,用于針對具體文件系統實例提供文件擴展功能的“擴展功能表”的管理;
[0009]擴展功能服務模塊,用于針對具體文件系統實例提供文件擴展功能執行代碼的實現。
[0010]所述的“擴展功能表”為一組“擴展功能描述”結構體實例的集合,其中“擴展功能描述”結構體包含文件系統類型、擴展功能編號、擴展功能類型、擴展功能名稱、擴展功能名稱長度和擴展功能函數地址;“文件系統類型實例表”為一組“文件系統類型”結構體實例的集合,其中“文件系統類型”結構體包含了文件系統類型名稱、指向該“文件系統類型”對應的“擴展功能表”的指針以及指向屬于該“文件系統類型”的具體“文件系統實例”的“超級塊”的指針。
[0011]所述的虛擬文件系統服務模塊的擴展功能服務模塊提供了“擴展功能服務方法”,“擴展功能服務方法”包括擴展功能列舉函數、擴展功能查找函數、擴展功能注冊函數和擴展功能注銷函數;“應用程序”可通過采用增強已有系統服務、建立新系統服務、各種進程間通信協議以及網絡通信協議來訪問虛擬文件系統的擴展功能服務方法。
[0012]本發明同時提供了基于上述系統裝置的支持虛擬文件系統擴展功能的方法,所述方法包括以下處理過程:
[0013]第I步、加載支持擴展功能的虛擬文件系統時,建立并初始化“文件系統類型實例表”;
[0014]第2步、加載具體文件系統實例時,若“文件系統類型實例表”不包含該具體文件系統實例所對應的“文件系統類型”實例,則建立“文件系統類型”實例并添加到“文件系統類型實例表”;并且進一步建立該“文件系統類型”實例所關聯的“擴展功能表”,并對該“擴展功能表”進行初始化,添加一個空的“擴展功能描述”結構體實例;進一步將該具體文件系統實例所對應的“文件系統類型”實例的相關指針指向該“擴展功能表”;
[0015]第3步、訪問虛擬文件系統的擴展功能服務方法;
[0016]第4步、注冊或注銷指定文件系統類型的文件擴展功能;
[0017]第5步、訪問具體文件系統實例的文件擴展功能;
[0018]第6步、卸載支持擴展功能的虛擬文件系統時,卸載虛擬文件系統中所有文件系統類型的全部文件擴展功能代碼,進一步刪除所有文件系統類型的全部“擴展功能表”。
[0019]本發明方法第4步所述的“注冊或注銷指定文件系統類型的文件擴展功能”中,“注冊指定文件系統類型的文件擴展功能”是通過虛擬文件系統服務模塊的擴展功能服務模塊中的擴展功能注冊函數來實現注冊;擴展功能注冊函數的參數包括文件系統類型實例和文件擴展功能描述實例;
[0020]第4.1步、擴展功能注冊函數的處理過程如下:
[0021]第4.1.1步、根據文件系統類型實例和文件擴展功能描述實例,調用擴展功能查找函數來查找是否該文件系統類型實例中已注冊該文件擴展功能,若已注冊則設置返回值為“失敗”標識并執行第4.1.6步;
[0022]第4.1.2步、根據文件擴展功能描述實例的“函數名稱”加載指定擴展功能函數代碼到虛擬文件系統中,并將該擴展功能函數代碼的內存首地址記錄在該文件擴展功能描述實例中;
[0023]第4.1.3步、根據文件系統類型實例找到該文件系統類型實例所對應的“擴展功能表”;
[0024]第4.1.4步、將第4.1.2步中的文件擴展功能描述實例添加到第4.1.3步中的“擴展功能表”;
[0025]第4.1.5步、設置返回值為“成功”標識;
[0026]第4.1.6步、處理過程結束。
[0027]本發明方法第4步所述的“注冊或注銷指定文件系統類型的文件擴展功能”中,“注銷指定文件系統類型的文件擴展功能”是通過虛擬文件系統服務模塊的擴展功能服務模塊中的擴展功能注銷函數來實現注銷;擴展功能注銷函數的參數包括文件系統類型實例和文件擴展功能描述實例;
[0028]第4.2步、擴展功能注銷函數的處理過程如下:
[0029]第4.2.1步、根據文件系統類型實例和文件擴展功能描述實例,調用擴展功能查找函數來查找是否該文件系統類型實例中已注冊該文件擴展功能,若未注冊則設置返回值為“失敗”標識并執行第4.2.7步;
[0030]第4.2.2步、根據文件系統類型實例找到該文件系統類型實例所對應的“擴展功能表”;
[0031]第4.2.3步、遍歷第4.2.2步中的“擴展功能表”,找到與第4.2.1步中文件擴展功能描述實例中擴展功能編號相同的已有文件擴展功能描述實例的首地址;
[0032]第4.2.4步、根據第4.2.3步中找到的已有文件擴展功能描述實例,獲取對應的“擴展功能”函數首地址,在虛擬文件系統中卸載該擴展功能函數代碼;
[0033]第4.2.5步、在第4.2.2步的“擴展功能表”中刪除第4.2.3步中找到的已有文件擴展功能描述實例;
[0034]第4.2.6步、設置返回值為“成功”標識;
[0035]第4.2.7步、處理過程結束。
[0036]本發明方法第5步所述的“訪問具體文件系統實例的文件擴展功能”的方法是“應用程序”通過采用增強已有系統服務或建立新系統服務來訪問具體文件系統實例的文件擴展功能,上述系統服務的參數包括文件擴展功能編號和文件擴展功能參數結構體指針;具體處理過程如下:
[0037]第5.1步、根據文件擴展功能參數結構體,獲取待處理文件的文件描述字;
[0038]第5.2步、根據第5.1步中的文件描述字獲取所對應的文件結構體,進一步根據該文件結構體獲取所對應的具體“文件系統實例”的“超級塊”結構體實例;
[0039]第5.3步、根據第5.2步中的“超級塊”結構體實例,獲取所對應的文件系統類型實例;
[0040]第5.4步、根據第5.3步中的文件系統類型實例和文件擴展功能編號,調用擴展功能查找函數來查找是否該文件系統類型實例中已注冊該文件擴展功能,若未注冊則設置返回值為“失敗”標識并執行第5.6步;否則記錄下擴展功能查找函數所返回的該文件擴展功能函數地址;
[0041]第5.5步、根據文件擴展功能參數結構體和第5.4步該文件擴展功能的函數地址,調用該文件擴展功能,并將該文件擴展功能的返回值作為當前處理過程的返回值;
[0042]第5.6步、處理過程結束。
[0043]本發明所涉及的具體內容及所述術語的含義是:
[0044](I)虛擬文件系統:事實上是一套抽象的文件服務集合,通過虛擬文件系統屏蔽掉各種具體的文件系統實例的差異,從而為上層應用程序提供統一的文件服務;虛擬文件系統已經被廣泛應用,但目前僅提供文件標準服務;
[0045](2)文件系統類型:指不同設計協議的文件系統,例如fat32, ext2, ntfs, xfs, ext4, iso9660等等,不同的文件系統在存儲設備上建立的文件服務有各種不同的優缺點,不同的文件系統也應用于不同的場合;
[0046](3)文件系統實例:指某種文件系統類型的具體實例;文件系統實例既包括該文件系統文件的標準功能代碼,也包括具體實例的各種數據結構體實例,其中數據結構體實例包括“超級塊”結構體實例、索引節點inode結構體實例、文件結構體實例、目錄項dentry結構體實例、文件系統掛載點vfsmount結構體實例等;舉例說明,若一臺擁有兩個存儲設備的計算機,這兩個存儲設備上的文件系統都是ntfs,則這臺計算機加載這兩個存儲設備后意味著擁有兩個文件系統實例,但是這兩個文件系統實例屬于同一個文件系統類型;
[0047](4)文件標準功能:指滿足國際標準的文件功能服務,例如POSIX標準提供了對文件的open, read, write, seek, close等文件處理功能;
[0048](5)文件擴展功能