午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

一種基于N?ary樹(shù)結(jié)構(gòu)的隨機(jī)訪問(wèn)的文件系統(tǒng)的實(shí)現(xiàn)方法與流程

文檔序號(hào):12748185閱讀:278來(lái)源:國(guó)知局
一種基于N?ary樹(shù)結(jié)構(gòu)的隨機(jī)訪問(wèn)的文件系統(tǒng)的實(shí)現(xiàn)方法與流程

本發(fā)明涉及文件系統(tǒng)的技術(shù)領(lǐng)域,特別是涉及一種基于N-ary樹(shù)結(jié)構(gòu)的隨機(jī)訪問(wèn)的文件系統(tǒng)的實(shí)現(xiàn)方法。



背景技術(shù):

隨著NVDIMM、3D Xpoint等新型存儲(chǔ)技術(shù)的發(fā)展及IBM對(duì)存儲(chǔ)級(jí)內(nèi)存(Storage Class Memory,SCM)架構(gòu)的提出,基于混合內(nèi)存系統(tǒng)架構(gòu)及管理的非易失存儲(chǔ)NVM成為研究熱點(diǎn)。新型存儲(chǔ)技術(shù)SCM具有非易失性、讀快寫快、功耗低等特點(diǎn),但與DRAM相比仍有差距,有限的寫擦循環(huán)壽命也降低了系統(tǒng)的可靠性。現(xiàn)有技術(shù)中,基于新型存儲(chǔ)技術(shù)SCM提出過(guò)多種內(nèi)存組織方式和優(yōu)化方法。

隨著大數(shù)據(jù)、云計(jì)算、物聯(lián)網(wǎng)等技術(shù)的發(fā)展,數(shù)據(jù)正以前所未有的速度不斷增長(zhǎng)和累積。如何管理和組織這些數(shù)據(jù),對(duì)傳統(tǒng)的文件系統(tǒng)來(lái)說(shuō)是一個(gè)挑戰(zhàn)。盡管當(dāng)前的文件系統(tǒng)為應(yīng)用提供了一種易用的數(shù)據(jù)組織方式,然而該數(shù)據(jù)組織方式是基于塊設(shè)備的硬件特點(diǎn)設(shè)計(jì)的,無(wú)法充分發(fā)揮SCM可隨機(jī)訪問(wèn)的性能特點(diǎn)。因此,如何有效地組織數(shù)據(jù),讓應(yīng)用程序能夠以更接近內(nèi)存的方式使用和訪問(wèn),而又能保持文件系統(tǒng)可靠、易維護(hù)和共享等優(yōu)勢(shì),最大化地提高系統(tǒng)整體運(yùn)行效率成為亟待解決的問(wèn)題。



技術(shù)實(shí)現(xiàn)要素:

鑒于以上所述現(xiàn)有技術(shù)的缺點(diǎn),本發(fā)明的目的在于提供一種基于N-ary樹(shù)結(jié)構(gòu)的隨機(jī)訪問(wèn)的文件系統(tǒng)的實(shí)現(xiàn)方法,采用N-ary樹(shù)結(jié)構(gòu)管理該文件系統(tǒng)所存儲(chǔ)在物理地址空間的數(shù)據(jù),實(shí)現(xiàn)文件數(shù)據(jù)在物理存儲(chǔ)空間內(nèi)的隨機(jī)存儲(chǔ),而無(wú)需按文件邏輯順序在物理地址空間順序存儲(chǔ),從而最大化地提高文件系統(tǒng)整體的運(yùn)行效率。

為實(shí)現(xiàn)上述目的及其他相關(guān)目的,本發(fā)明提供一種基于N-ary樹(shù)結(jié)構(gòu)的隨機(jī)訪問(wèn)的文件系統(tǒng)的實(shí)現(xiàn)方法,包括以頁(yè)為單位來(lái)管理文件系統(tǒng)所有的文件數(shù)據(jù);在文件系統(tǒng)中設(shè)置iNode區(qū)和數(shù)據(jù)區(qū),所述數(shù)據(jù)區(qū)包括節(jié)點(diǎn)頁(yè)和數(shù)據(jù)頁(yè),所述數(shù)據(jù)頁(yè)用于存儲(chǔ)文件數(shù)據(jù),所述節(jié)點(diǎn)頁(yè)用于存儲(chǔ)N-ary樹(shù)中下一級(jí)節(jié)點(diǎn)頁(yè)或數(shù)據(jù)頁(yè)的物理地址;所述iNode區(qū)中所存儲(chǔ)的iNode節(jié)點(diǎn)包括N-ary樹(shù)級(jí)數(shù)字段和N-ary樹(shù)根節(jié)點(diǎn)字段,所述N-ary樹(shù)級(jí)數(shù)字段用于存儲(chǔ)文件所采用N-ary樹(shù)結(jié)構(gòu)的級(jí)數(shù),所述N-ary樹(shù)根節(jié)點(diǎn)字段用于存儲(chǔ)文件第N級(jí)節(jié)點(diǎn)頁(yè)的起始物理地址;以文件所對(duì)應(yīng)的第N級(jí)節(jié)點(diǎn)頁(yè)頁(yè)號(hào)為根節(jié)點(diǎn),以第(N-1)級(jí)節(jié)點(diǎn)頁(yè)頁(yè)號(hào)為第1級(jí)子節(jié)點(diǎn),以此類推,以第1級(jí)節(jié)點(diǎn)頁(yè)頁(yè)號(hào)為第(N-1)級(jí)子節(jié)點(diǎn),形成一個(gè)N-ary樹(shù)以對(duì)該文件的所有數(shù)據(jù)進(jìn)行存儲(chǔ)管理;其中第1級(jí)節(jié)點(diǎn)頁(yè)為數(shù)據(jù)頁(yè);N-ary樹(shù)的遍歷順序?yàn)閿?shù)據(jù)頁(yè)的邏輯順序。

于本發(fā)明一實(shí)施例中,所述數(shù)據(jù)頁(yè)和所述節(jié)點(diǎn)頁(yè)在所述數(shù)據(jù)區(qū)混排。

于本發(fā)明一實(shí)施例中,所述數(shù)據(jù)頁(yè)和所述節(jié)點(diǎn)頁(yè)是在向文件寫入數(shù)據(jù)時(shí)動(dòng)態(tài)分配的;向文件寫入數(shù)據(jù)時(shí),根據(jù)寫入地址判定數(shù)據(jù)頁(yè)是否已經(jīng)存在,若不存在,則分配數(shù)據(jù)頁(yè),并補(bǔ)齊該數(shù)據(jù)頁(yè)至根節(jié)點(diǎn)間路徑上所需的節(jié)點(diǎn)頁(yè)。

于本發(fā)明一實(shí)施例中,文件系統(tǒng)創(chuàng)建文件時(shí),包括以下步驟:

分配一個(gè)iNode節(jié)點(diǎn);

指定文件所采用的N-ary樹(shù)的級(jí)數(shù)N,為文件分配一個(gè)第N級(jí)節(jié)點(diǎn)頁(yè);

將第N級(jí)節(jié)點(diǎn)頁(yè)的物理地址寫入文件對(duì)應(yīng)的iNode節(jié)點(diǎn)的N-ary樹(shù)根節(jié)點(diǎn)字段;

將文件所采用的N-ary樹(shù)的級(jí)數(shù)N寫入所分配的iNode節(jié)點(diǎn)中的N-ary樹(shù)級(jí)數(shù)字段。

于本發(fā)明一實(shí)施例中,在同一個(gè)文件系統(tǒng)內(nèi),不同的文件能夠擁有不同的N-ary樹(shù)的級(jí)數(shù)。

于本發(fā)明一實(shí)施例中,文件所采用的N-ary樹(shù)的級(jí)數(shù)能夠動(dòng)態(tài)增加。

于本發(fā)明一實(shí)施例中,觸發(fā)文件所采用的N-ary樹(shù)的級(jí)數(shù)動(dòng)態(tài)增加的情況包括:

通過(guò)POSIX方式寫入數(shù)據(jù)時(shí)地址超越當(dāng)前文件邏輯長(zhǎng)度;

通過(guò)文件指針定位當(dāng)前位置時(shí)超越當(dāng)前文件邏輯長(zhǎng)度;

通過(guò)mmap方式將文件映射到進(jìn)程虛擬空間時(shí)指定的長(zhǎng)度超越了當(dāng)前文件邏輯長(zhǎng)度。

于本發(fā)明一實(shí)施例中,文件所采用的N-ary樹(shù)的級(jí)數(shù)能夠動(dòng)態(tài)增加包括以下步驟:

文件系統(tǒng)從數(shù)據(jù)區(qū)獲取一個(gè)空閑的節(jié)點(diǎn)頁(yè)作為新的根節(jié)點(diǎn);

將文件原根節(jié)點(diǎn)的物理地址寫入新的根節(jié)點(diǎn)的第一個(gè)位置,并將新的根節(jié)點(diǎn)的物理地址及增加1后的N-ary樹(shù)的級(jí)數(shù)更新到該文件的iNode節(jié)點(diǎn)中。

于本發(fā)明一實(shí)施例中,所述頁(yè)的大小與操作系統(tǒng)內(nèi)存頁(yè)的大小一致。

如上所述,本發(fā)明的基于N-ary樹(shù)結(jié)構(gòu)的隨機(jī)訪問(wèn)的文件系統(tǒng)的實(shí)現(xiàn)方法,具有以下有益效果:

(1)基于N-ary樹(shù)結(jié)構(gòu)管理文件數(shù)據(jù)在物理存儲(chǔ)空間中的存儲(chǔ)順序,實(shí)現(xiàn)文件數(shù)據(jù)在物理存儲(chǔ)空間內(nèi)的隨機(jī)存儲(chǔ),而無(wú)需按文件邏輯順序在物理地址空間順序存儲(chǔ);

(2)采用N-ary樹(shù)結(jié)構(gòu)管理文件系統(tǒng)所存儲(chǔ)在物理地址空間的數(shù)據(jù),每個(gè)文件對(duì)應(yīng)一個(gè)N-ary樹(shù)結(jié)構(gòu),同一文件系統(tǒng)可實(shí)現(xiàn)4K、2M、1G等不同容量級(jí)別的文件存儲(chǔ),滿足對(duì)不同容量級(jí)別需求的文件數(shù)據(jù)存儲(chǔ);

(3)文件存儲(chǔ)數(shù)據(jù)時(shí)采用的N-ary樹(shù)級(jí)數(shù)是可動(dòng)態(tài)調(diào)整的,通過(guò)動(dòng)態(tài)調(diào)整文件數(shù)據(jù)管理的N-ary樹(shù)級(jí)數(shù)可實(shí)現(xiàn)文件的升級(jí)擴(kuò)容。

附圖說(shuō)明

圖1顯示為本發(fā)明的基于N-ary樹(shù)結(jié)構(gòu)的隨機(jī)訪問(wèn)的文件系統(tǒng)的實(shí)現(xiàn)方法的框架圖;

圖2顯示為本發(fā)明中iNode節(jié)點(diǎn)的結(jié)構(gòu)示意圖;

圖3顯示為本發(fā)明中N-ary樹(shù)的結(jié)構(gòu)示意圖;

圖4顯示為本發(fā)明的一個(gè)實(shí)施例中N-ary樹(shù)結(jié)構(gòu)以及文件數(shù)據(jù)在數(shù)據(jù)區(qū)的分布情況示意圖;

圖5顯示為本發(fā)明的一個(gè)實(shí)施例中經(jīng)過(guò)兩次寫操作后,文件數(shù)據(jù)頁(yè)在數(shù)據(jù)區(qū)的分布情況變化圖;

圖6顯示為本發(fā)明的一個(gè)實(shí)施例中經(jīng)過(guò)兩次寫操作后,文件的N-ary樹(shù)的結(jié)構(gòu)變化圖。

具體實(shí)施方式

以下通過(guò)特定的具體實(shí)例說(shuō)明本發(fā)明的實(shí)施方式,本領(lǐng)域技術(shù)人員可由本說(shuō)明書所揭露的內(nèi)容輕易地了解本發(fā)明的其他優(yōu)點(diǎn)與功效。本發(fā)明還可以通過(guò)另外不同的具體實(shí)施方式加以實(shí)施或應(yīng)用,本說(shuō)明書中的各項(xiàng)細(xì)節(jié)也可以基于不同觀點(diǎn)與應(yīng)用,在沒(méi)有背離本發(fā)明的精神下進(jìn)行各種修飾或改變。需說(shuō)明的是,在不沖突的情況下,以下實(shí)施例及實(shí)施例中的特征可以相互組合。

需要說(shuō)明的是,以下實(shí)施例中所提供的圖示僅以示意方式說(shuō)明本發(fā)明的基本構(gòu)想,遂圖式中僅顯示與本發(fā)明中有關(guān)的組件而非按照實(shí)際實(shí)施時(shí)的組件數(shù)目、形狀及尺寸繪制,其實(shí)際實(shí)施時(shí)各組件的型態(tài)、數(shù)量及比例可為一種隨意的改變,且其組件布局型態(tài)也可能更為復(fù)雜。

N-ary樹(shù),又叫N叉樹(shù),是一種常見(jiàn)的樹(shù)型數(shù)據(jù)結(jié)構(gòu),常常用來(lái)完成數(shù)據(jù)的快速排序、數(shù)據(jù)壓縮和快速檢索。N-ary樹(shù)具有一個(gè)根節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn)數(shù)完全相同。

本發(fā)明的基于N-ary樹(shù)結(jié)構(gòu)的隨機(jī)訪問(wèn)的文件系統(tǒng)的實(shí)現(xiàn)方法采用N-ary樹(shù)結(jié)構(gòu)管理文件系統(tǒng)所存儲(chǔ)在物理地址空間的數(shù)據(jù),實(shí)現(xiàn)文件數(shù)據(jù)在物理存儲(chǔ)空間內(nèi)的隨機(jī)存儲(chǔ),而無(wú)需按文件邏輯順序在物理地址空間順序存儲(chǔ)。基于N-ary樹(shù)結(jié)構(gòu),同一文件系統(tǒng)可實(shí)現(xiàn)4K、2M、1G等不同容量級(jí)別的文件存儲(chǔ)。

本發(fā)明的基于N-ary樹(shù)結(jié)構(gòu)的隨機(jī)訪問(wèn)的文件系統(tǒng)的實(shí)現(xiàn)方法應(yīng)用于動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器及非易失性隨機(jī)存儲(chǔ)器統(tǒng)一編址的存儲(chǔ)系統(tǒng)。其中,非易失性隨機(jī)存儲(chǔ)器包括相變存儲(chǔ)器、阻變存儲(chǔ)器、磁存儲(chǔ)器、鐵電存儲(chǔ)器等。

參照?qǐng)D1,本發(fā)明的基于N-ary樹(shù)結(jié)構(gòu)的隨機(jī)訪問(wèn)的文件系統(tǒng)的實(shí)現(xiàn)方法包括:

1)以頁(yè)為單位來(lái)管理文件系統(tǒng)所有的文件數(shù)據(jù)。

優(yōu)選地,頁(yè)的大小與操作系統(tǒng)內(nèi)存頁(yè)的大小一致。通常,4K大小的數(shù)據(jù)為一頁(yè)。數(shù)據(jù)頁(yè)、節(jié)點(diǎn)頁(yè)大小都是4K,只是因存儲(chǔ)的內(nèi)容不同而分為數(shù)據(jù)頁(yè)和節(jié)點(diǎn)頁(yè)。

2)在文件系統(tǒng)中設(shè)置iNode區(qū)和數(shù)據(jù)區(qū),數(shù)據(jù)區(qū)包括節(jié)點(diǎn)頁(yè)(NodePage)和數(shù)據(jù)頁(yè)(DataPage),數(shù)據(jù)頁(yè)用于存儲(chǔ)文件數(shù)據(jù),節(jié)點(diǎn)頁(yè)用于存儲(chǔ)N-ary樹(shù)中下一級(jí)節(jié)點(diǎn)頁(yè)或數(shù)據(jù)頁(yè)的物理地址;數(shù)據(jù)頁(yè)和節(jié)點(diǎn)頁(yè)在數(shù)據(jù)區(qū)混排;iNode區(qū)中所存儲(chǔ)的iNode節(jié)點(diǎn)(文件管理信息節(jié)點(diǎn))包括iNode節(jié)點(diǎn)信息字段、N-ary樹(shù)級(jí)數(shù)字段和N-ary樹(shù)根節(jié)點(diǎn)字段,N-ary樹(shù)級(jí)數(shù)字段用于存儲(chǔ)文件所采用N-ary樹(shù)結(jié)構(gòu)的級(jí)數(shù),N-ary樹(shù)根節(jié)點(diǎn)字段用于存儲(chǔ)文件第N級(jí)節(jié)點(diǎn)頁(yè)NodePageN的起始物理地址;

與現(xiàn)有技術(shù)中相同,本發(fā)明的文件系統(tǒng)包括超級(jí)塊區(qū)、位圖區(qū)、iNode區(qū)和數(shù)據(jù)區(qū)。如圖2所示,在iNode區(qū),每個(gè)iNode節(jié)點(diǎn)在現(xiàn)有的iNode節(jié)點(diǎn)信息字段的基礎(chǔ)上增加了N-ary樹(shù)級(jí)數(shù)字段和N-ary樹(shù)根節(jié)點(diǎn)字段。其中,iNode節(jié)點(diǎn)信息字段用于存儲(chǔ)文件的管理信息,如創(chuàng)建人、創(chuàng)建時(shí)間、存放目錄、權(quán)限等等;N-ary樹(shù)級(jí)數(shù)字段用于存儲(chǔ)文件所采用N-ary樹(shù)結(jié)構(gòu)的級(jí)數(shù);N-ary樹(shù)根節(jié)點(diǎn)字段用于存儲(chǔ)文件第N級(jí)節(jié)點(diǎn)頁(yè)P(yáng)ageN起始物理地址。本發(fā)明的數(shù)據(jù)區(qū)與現(xiàn)有技術(shù)中文件系統(tǒng)的數(shù)據(jù)區(qū)也不同。本發(fā)明的數(shù)據(jù)區(qū)的頁(yè)分為節(jié)點(diǎn)頁(yè)和數(shù)據(jù)頁(yè)。節(jié)點(diǎn)頁(yè)用于存儲(chǔ)N-ary樹(shù)中下一級(jí)節(jié)點(diǎn)頁(yè)或數(shù)據(jù)頁(yè)的物理地址,數(shù)據(jù)頁(yè)用于存儲(chǔ)文件數(shù)據(jù)。

優(yōu)選地,數(shù)據(jù)頁(yè)和節(jié)點(diǎn)頁(yè)是在向文件寫入數(shù)據(jù)時(shí)動(dòng)態(tài)分配的。具體地,向文件寫入數(shù)據(jù)時(shí),根據(jù)寫入地址判定數(shù)據(jù)頁(yè)是否已經(jīng)存在,若不存在,則分配數(shù)據(jù)頁(yè),并補(bǔ)齊該數(shù)據(jù)頁(yè)至根節(jié)點(diǎn)間路徑上所需的節(jié)點(diǎn)頁(yè),從而實(shí)現(xiàn)文件數(shù)據(jù)在物理存儲(chǔ)空間內(nèi)的隨機(jī)存儲(chǔ),而無(wú)需按文件邏輯順序在物理地址空間順序存儲(chǔ)。

由于一個(gè)文件系統(tǒng)中的不同文件可以采用不同的N-ary樹(shù)結(jié)構(gòu)級(jí)數(shù),因此每個(gè)文件對(duì)應(yīng)的文件管理信息iNode節(jié)點(diǎn)中標(biāo)識(shí)該文件存儲(chǔ)數(shù)據(jù)所采用N-ary樹(shù)結(jié)構(gòu)級(jí)數(shù)的N-ary樹(shù)級(jí)數(shù)字段所存儲(chǔ)的內(nèi)容不同,可以是1、2、3……等不同值。基于不同文件采用的N-ary樹(shù)結(jié)構(gòu)級(jí)數(shù)不同,iNode節(jié)點(diǎn)中的N-ary樹(shù)根節(jié)點(diǎn)字段保存的起始物理地址的所對(duì)應(yīng)節(jié)點(diǎn)頁(yè)NodePageN的級(jí)數(shù)也不同。例如,采用1-ary樹(shù)結(jié)構(gòu)管理的文件,則iNode節(jié)點(diǎn)的N-ary樹(shù)根節(jié)點(diǎn)字段保存的起始物理地址所對(duì)應(yīng)的節(jié)點(diǎn)頁(yè)是該文件的第1級(jí)節(jié)點(diǎn)頁(yè)NodePage1;采用2-ary樹(shù)結(jié)構(gòu)管理的文件,則iNode節(jié)點(diǎn)的N-ary樹(shù)根節(jié)點(diǎn)字段保存的起始物理地址所對(duì)應(yīng)的節(jié)點(diǎn)頁(yè)是該文件的第2級(jí)節(jié)點(diǎn)頁(yè)NodePage2;采用3-ary樹(shù)結(jié)構(gòu)管理的文件,則iNode節(jié)點(diǎn)的N-ary樹(shù)根節(jié)點(diǎn)字段保存的起始物理地址所對(duì)應(yīng)的節(jié)點(diǎn)頁(yè)是該文件的第3級(jí)節(jié)點(diǎn)頁(yè)NodePage3;以此類推,將文件采用N-ary樹(shù)結(jié)構(gòu)所對(duì)應(yīng)最高級(jí)數(shù)節(jié)點(diǎn)頁(yè)第N級(jí)節(jié)點(diǎn)頁(yè)NodePageN所對(duì)應(yīng)的物理地址寫入到iNode節(jié)點(diǎn)N-ary樹(shù)根節(jié)點(diǎn)字段。

優(yōu)選地,本發(fā)明的文件系統(tǒng)中的文件具有邏輯長(zhǎng)度和物理長(zhǎng)度。邏輯長(zhǎng)度表示該文件當(dāng)前的N-ary樹(shù)若將節(jié)點(diǎn)補(bǔ)充完整,全部數(shù)據(jù)頁(yè)能夠存儲(chǔ)的數(shù)據(jù)量。物理長(zhǎng)度表示該文件當(dāng)前的N-ary樹(shù)已創(chuàng)建的所有節(jié)點(diǎn)占據(jù)的頁(yè)的數(shù)據(jù)量之和。因此,邏輯長(zhǎng)度為文件的長(zhǎng)度,物理長(zhǎng)度則用來(lái)計(jì)算文件系統(tǒng)的占用空間和剩余空間。

3)以文件所對(duì)應(yīng)的第N級(jí)節(jié)點(diǎn)頁(yè)NodePageN頁(yè)號(hào)為根節(jié)點(diǎn),以第(N-1)級(jí)節(jié)點(diǎn)頁(yè)NodePageN-1頁(yè)號(hào)為第1級(jí)子節(jié)點(diǎn),以此類推,以第1級(jí)節(jié)點(diǎn)頁(yè)NodePage1頁(yè)號(hào)為第(N-1)級(jí)子節(jié)點(diǎn),形成一個(gè)N-ary樹(shù)以對(duì)該文件的所有數(shù)據(jù)進(jìn)行存儲(chǔ)管理,第1級(jí)節(jié)點(diǎn)頁(yè)為數(shù)據(jù)頁(yè)。

具體地,文件數(shù)據(jù)所在的物理存儲(chǔ)空間,基于文件所對(duì)應(yīng)的文件第N級(jí)節(jié)點(diǎn)頁(yè)NodePageN頁(yè)號(hào)、第(N-1)級(jí)節(jié)點(diǎn)頁(yè)NodePageN-1頁(yè)號(hào),……,第1級(jí)節(jié)點(diǎn)頁(yè)NodePage1頁(yè)號(hào),以第N級(jí)節(jié)點(diǎn)頁(yè)NodePageN頁(yè)號(hào)為根節(jié)點(diǎn),以第(N-1)級(jí)節(jié)點(diǎn)頁(yè)NodePageN-1頁(yè)號(hào)為第1級(jí)子節(jié)點(diǎn),以此類推,第1級(jí)節(jié)點(diǎn)頁(yè)NodePage1頁(yè)號(hào)為第(N-1)級(jí)子節(jié)點(diǎn),形成一個(gè)N-ary樹(shù)來(lái)對(duì)文件數(shù)據(jù)進(jìn)行存儲(chǔ)管理。在N-ary樹(shù)中每一級(jí)節(jié)點(diǎn)以頁(yè)表方式管理其子節(jié)點(diǎn)的,每級(jí)子節(jié)點(diǎn)的個(gè)數(shù)固定為512個(gè)。如圖3所示,第1級(jí)節(jié)點(diǎn)頁(yè)NodePage1頁(yè)為數(shù)據(jù)頁(yè)。也就是說(shuō),從根節(jié)點(diǎn)到第N-2級(jí)子節(jié)點(diǎn)用來(lái)組織管理節(jié)點(diǎn)頁(yè),第N-1級(jí)子節(jié)點(diǎn)用來(lái)組織管理數(shù)據(jù)頁(yè)。根節(jié)點(diǎn)存儲(chǔ)第1級(jí)子節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)頁(yè)的物理地址;第1級(jí)子節(jié)點(diǎn)存儲(chǔ)第2級(jí)子節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)頁(yè)的物理地址;以此類推,第(N-2)級(jí)子節(jié)點(diǎn)存儲(chǔ)第(N-1)級(jí)子節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)頁(yè)的物理地址。第1級(jí)節(jié)點(diǎn)頁(yè)為數(shù)據(jù)頁(yè),所有數(shù)據(jù)頁(yè)占據(jù)N-ary樹(shù)的最后一級(jí)節(jié)點(diǎn)。因此,節(jié)點(diǎn)頁(yè)中存儲(chǔ)的頁(yè)物理地址可以為下一級(jí)節(jié)點(diǎn)頁(yè)物理地址,也可以為數(shù)據(jù)頁(yè)物理地址。

特別地,當(dāng)文件采用的N-ary樹(shù)中N為1時(shí),該文件只有一個(gè)第1級(jí)節(jié)點(diǎn)頁(yè)。對(duì)應(yīng)的N-ary樹(shù)中只有一個(gè)以第1級(jí)節(jié)點(diǎn)頁(yè)NodePage1頁(yè)號(hào)為節(jié)點(diǎn)的根節(jié)點(diǎn),該NodePage1頁(yè)直接存儲(chǔ)的是文件數(shù)據(jù),其實(shí)質(zhì)是數(shù)據(jù)頁(yè)。

4)N-ary樹(shù)的遍歷順序?yàn)閿?shù)據(jù)頁(yè)的邏輯順序。

其中,數(shù)據(jù)頁(yè)在N-ary樹(shù)遍歷時(shí)的序號(hào)為該數(shù)據(jù)頁(yè)在文件中的邏輯頁(yè)號(hào)。因此,可以根據(jù)文件中的邏輯地址推算出該地址所在的數(shù)據(jù)頁(yè)的邏輯頁(yè)號(hào)及該數(shù)據(jù)頁(yè)到根節(jié)點(diǎn)的路徑。

在本發(fā)明的基于N-ary樹(shù)結(jié)構(gòu)的隨機(jī)訪問(wèn)的文件系統(tǒng)的實(shí)現(xiàn)方法中,文件系統(tǒng)創(chuàng)建文件時(shí),包括以下步驟:

a)分配一個(gè)iNode節(jié)點(diǎn);

b)指定文件所采用的N-ary樹(shù)的級(jí)數(shù)N,為文件分配一個(gè)第N級(jí)節(jié)點(diǎn)頁(yè)NodePageN;

c)將第N級(jí)節(jié)點(diǎn)頁(yè)NodePageN的物理地址寫入文件對(duì)應(yīng)的iNode節(jié)點(diǎn)的N-ary樹(shù)根節(jié)點(diǎn)字段;

d)將文件所采用的N-ary樹(shù)的級(jí)數(shù)N寫入所分配的iNode節(jié)點(diǎn)中的N-ary樹(shù)級(jí)數(shù)字段。

通過(guò)具體實(shí)施例來(lái)闡述本發(fā)明的基于N-ary樹(shù)結(jié)構(gòu)的隨機(jī)訪問(wèn)的文件系統(tǒng)的實(shí)現(xiàn)方法。

假如文件1按寫操作順序,對(duì)第1個(gè)邏輯頁(yè)、第500個(gè)邏輯頁(yè)、第600個(gè)邏輯頁(yè)、第1000個(gè)邏輯頁(yè)實(shí)現(xiàn)了寫入操作,則該文件的N-ary樹(shù)結(jié)構(gòu)以及文件數(shù)據(jù)在數(shù)據(jù)區(qū)的分布情況如圖4所示。該文件具有3個(gè)節(jié)點(diǎn)頁(yè),4個(gè)數(shù)據(jù)頁(yè),其中節(jié)點(diǎn)頁(yè)NodePage3為根節(jié)點(diǎn)存儲(chǔ)著節(jié)點(diǎn)頁(yè)NodePage21以及NodePage22的物理地址,節(jié)點(diǎn)頁(yè)NodePage21存儲(chǔ)著與相應(yīng)邏輯頁(yè)號(hào)對(duì)應(yīng)的數(shù)據(jù)頁(yè)DataPage21以及數(shù)據(jù)頁(yè)DataPage500的物理地址,節(jié)點(diǎn)頁(yè)NodePage22存儲(chǔ)著與相應(yīng)邏輯頁(yè)號(hào)對(duì)應(yīng)的數(shù)據(jù)頁(yè)DataPage600以及數(shù)據(jù)頁(yè)DataPage1000的物理地址。

接著,進(jìn)程要寫第700個(gè)邏輯頁(yè),根據(jù)文件的邏輯頁(yè)號(hào)計(jì)算可知,第700個(gè)邏輯頁(yè)應(yīng)該屬于第二個(gè)子節(jié)點(diǎn)NodePage22管理,基于缺頁(yè)中斷機(jī)制分配一個(gè)與第700個(gè)邏輯頁(yè)相對(duì)應(yīng)的數(shù)據(jù)頁(yè)DataPage700,最后將數(shù)據(jù)頁(yè)DataPage700的物理地址存儲(chǔ)到節(jié)點(diǎn)頁(yè)NodePage22的相應(yīng)地址字段。

接著,進(jìn)程要寫個(gè)第1300個(gè)邏輯頁(yè),根據(jù)文件的邏輯頁(yè)號(hào)計(jì)算可知,第1300個(gè)邏輯頁(yè)應(yīng)該屬于節(jié)點(diǎn)頁(yè)NodePage23管理,基于缺頁(yè)中斷機(jī)制分配一個(gè)與第1300個(gè)邏輯頁(yè)相對(duì)應(yīng)的數(shù)據(jù)頁(yè)DataPage1300,以及節(jié)點(diǎn)頁(yè)NodePage23。將數(shù)據(jù)頁(yè)DataPage1300的物理地址存儲(chǔ)到節(jié)點(diǎn)頁(yè)NodePage23的相應(yīng)地址字段。最后將節(jié)點(diǎn)頁(yè)NodePage23的物理地址存儲(chǔ)到節(jié)點(diǎn)頁(yè)NodePage3的相應(yīng)地址字段。圖5和圖6分別為兩次寫操作后文件數(shù)據(jù)頁(yè)在數(shù)據(jù)區(qū)的分布情況變化圖和文件的N-ary樹(shù)的結(jié)構(gòu)變化圖。

特別地,在同一個(gè)文件系統(tǒng)內(nèi),不同的文件可以擁有不同的級(jí)數(shù)。具體地,一個(gè)文件系統(tǒng)中包含多個(gè)文件,每個(gè)文件采用N-ary樹(shù)結(jié)構(gòu)管理該文件所存儲(chǔ)在物理地址空間的數(shù)據(jù)?;诿總€(gè)文件所采用N-ary樹(shù)結(jié)構(gòu)的級(jí)數(shù)不同,可實(shí)現(xiàn)不同容量級(jí)別的數(shù)據(jù)存儲(chǔ)。例如,采用1-ary樹(shù)結(jié)構(gòu)管理的文件,其存儲(chǔ)數(shù)據(jù)最大容量不超過(guò)4K;采用2-ary樹(shù)結(jié)構(gòu)管理的文件,其存儲(chǔ)數(shù)據(jù)最大容量可達(dá)2M;采用3-ary樹(shù)結(jié)構(gòu)級(jí)頁(yè)表結(jié)構(gòu)管理的文件,其存儲(chǔ)數(shù)據(jù)最大容量可達(dá)1G。通過(guò)采用更大N的N-ary樹(shù)結(jié)構(gòu)的管理的文件,可實(shí)現(xiàn)更大容量的數(shù)據(jù)存儲(chǔ)。因此,一個(gè)文件系統(tǒng)可實(shí)現(xiàn)不同容量級(jí)別的文件存儲(chǔ),以滿足對(duì)不同容量級(jí)別需求的文件數(shù)據(jù)存儲(chǔ)。

優(yōu)選地,一個(gè)文件所采用的N-ary樹(shù)的級(jí)數(shù)可以動(dòng)態(tài)增加。具體地,文件系統(tǒng)從數(shù)據(jù)區(qū)獲取一個(gè)空閑的節(jié)點(diǎn)頁(yè)作為新的根節(jié)點(diǎn);將文件原根節(jié)點(diǎn)的物理地址寫入新的根節(jié)點(diǎn)的第一個(gè)位置,并將新的根節(jié)點(diǎn)的物理地址及增加1后的N-ary樹(shù)的級(jí)數(shù)更新到該文件的iNode節(jié)點(diǎn)中。

因此,基于動(dòng)態(tài)調(diào)整N-ary樹(shù)結(jié)構(gòu)級(jí)數(shù)能夠?qū)崿F(xiàn)由N級(jí)升級(jí)到(N+1)級(jí),從而實(shí)現(xiàn)文件的升級(jí)擴(kuò)容。增加級(jí)數(shù)的觸發(fā)事件包括以下幾種:

(1)通過(guò)POSIX方式寫入數(shù)據(jù)時(shí)地址超越當(dāng)前文件邏輯長(zhǎng)度。

通過(guò)POSIX方式寫入數(shù)據(jù)時(shí)地址超越當(dāng)前文件邏輯長(zhǎng)度時(shí),從N級(jí)調(diào)整到N+1級(jí)動(dòng)態(tài)調(diào)整N-ary樹(shù)結(jié)構(gòu)級(jí)數(shù)包括以下步驟:

分配一個(gè)第N+1級(jí)節(jié)點(diǎn)頁(yè)NodePageN+1作為根節(jié)點(diǎn);

將該文件所對(duì)應(yīng)的第N級(jí)節(jié)點(diǎn)頁(yè)NodePageN的物理起始地址寫入新分配的第(N+1)級(jí)節(jié)點(diǎn)頁(yè)NodePageN+1相應(yīng)地址字段;

以第(N+1)級(jí)節(jié)點(diǎn)頁(yè)NodePageN+1的起始物理地址更新該文件對(duì)應(yīng)的iNode結(jié)點(diǎn)的N-ary樹(shù)根節(jié)點(diǎn)字段;

以(N+1)更新該文件對(duì)應(yīng)的iNode節(jié)點(diǎn)的N-ary樹(shù)級(jí)數(shù)字段;

基于缺頁(yè)中斷機(jī)制分配一個(gè)數(shù)據(jù)頁(yè)DataPage;

補(bǔ)齊數(shù)據(jù)頁(yè)DataPage至根節(jié)點(diǎn)間路徑上所需的節(jié)點(diǎn)頁(yè)(DataPage2,DataPage3,……,D ataPageN)。

(2)通過(guò)文件指針定位當(dāng)前位置時(shí)超越當(dāng)前文件邏輯長(zhǎng)度。

通過(guò)文件指針定位當(dāng)前位置時(shí)超越當(dāng)前文件邏輯長(zhǎng)度時(shí),從N級(jí)調(diào)整到N+1級(jí)動(dòng)態(tài)調(diào)整N-ary樹(shù)結(jié)構(gòu)級(jí)數(shù)包括以下步驟:

分配一個(gè)第N+1級(jí)節(jié)點(diǎn)頁(yè)NodePageN+1;

將該文件所對(duì)應(yīng)的第N級(jí)節(jié)點(diǎn)頁(yè)NodePageN的物理起始地址寫入新分配的第(N+1)級(jí)節(jié)點(diǎn)頁(yè)NodePageN+1相應(yīng)地址字段;

以第(N+1)級(jí)節(jié)點(diǎn)頁(yè)NodePageN+1的起始物理地址更新該文件對(duì)應(yīng)的iNode節(jié)點(diǎn)的N-ary樹(shù)根節(jié)點(diǎn)字段;

以(N+1)更新該文件對(duì)應(yīng)的iNode節(jié)點(diǎn)的N-ary樹(shù)級(jí)數(shù)字段。

(3)通過(guò)mmap方式將文件映射到進(jìn)程虛擬空間時(shí)指定的長(zhǎng)度超越了當(dāng)前文件邏輯長(zhǎng)度。

通過(guò)mmap方式將文件映射到進(jìn)程虛擬空間時(shí)指定的長(zhǎng)度超越了當(dāng)前文件邏輯長(zhǎng)度時(shí),從N級(jí)調(diào)整到N+1級(jí)動(dòng)態(tài)調(diào)整N-ary樹(shù)結(jié)構(gòu)級(jí)數(shù)包括以下步驟:

分配一個(gè)第N+1級(jí)節(jié)點(diǎn)頁(yè)NodePageN+1;

將該文件所對(duì)應(yīng)的第N級(jí)節(jié)點(diǎn)頁(yè)NodePageN的物理起始地址寫入新分配的第(N+1)級(jí)節(jié)點(diǎn)頁(yè)NodePageN+1相應(yīng)地址字段;

以第(N+1)級(jí)節(jié)點(diǎn)頁(yè)NodePageN+1的起始物理地址更新該文件對(duì)應(yīng)的iNode節(jié)點(diǎn)的N-ary樹(shù)根節(jié)點(diǎn)字段;

以(N+1)更新該文件對(duì)應(yīng)的iNode節(jié)點(diǎn)的N-ary樹(shù)級(jí)數(shù)字段。

綜上所述,本發(fā)明的基于N-ary樹(shù)結(jié)構(gòu)的隨機(jī)訪問(wèn)的文件系統(tǒng)的實(shí)現(xiàn)方法。所以,本發(fā)明有效克服了現(xiàn)有技術(shù)中的種種缺點(diǎn)而具高度產(chǎn)業(yè)利用價(jià)值。

上述實(shí)施例僅例示性說(shuō)明本發(fā)明的原理及其功效,而非用于限制本發(fā)明。任何熟悉此技術(shù)的人士皆可在不違背本發(fā)明的精神及范疇下,對(duì)上述實(shí)施例進(jìn)行修飾或改變。因此,舉凡所屬技術(shù)領(lǐng)域中具有通常知識(shí)者在未脫離本發(fā)明所揭示的精神與技術(shù)思想下所完成的一切等效修飾或改變,仍應(yīng)由本發(fā)明的權(quán)利要求所涵蓋。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1