欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

文件系統(tǒng)級的非揮發(fā)性存儲器磨損均衡空閑塊管理方法

文檔序號:10490276閱讀:336來源:國知局
文件系統(tǒng)級的非揮發(fā)性存儲器磨損均衡空閑塊管理方法
【專利摘要】本發(fā)明公開了一種文件系統(tǒng)級的非揮發(fā)性存儲器磨損均衡空閑塊管理方法,包括構(gòu)建空閑塊隊列及超級塊,所述超級塊存儲空閑塊隊列的隊頭指針及隊尾指針,所述隊頭指針及隊尾指針分別指示空閑塊隊列起始空閑塊結(jié)點所在的空閑塊隊列片段號和結(jié)束空閑塊結(jié)點所在的空閑塊隊列片段號,當(dāng)用戶需要存儲數(shù)據(jù)的時候,取出空閑塊存儲隊列中隊頭元素,快速給用戶分配空閑塊。被分配出去的空閑塊回收的時候放到空閑塊存儲隊列的隊尾,等待空閑塊隊列中前面元素分配完后再被分配使用,解決了磨損均衡問題。
【專利說明】
文件系統(tǒng)級的非揮發(fā)性存儲器磨損均衡空閑塊管理方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及數(shù)據(jù)存儲和數(shù)據(jù)管理領(lǐng)域,具體涉及文件系統(tǒng)級的非揮發(fā)性存儲器磨損均衡空閑塊管理方法。
【背景技術(shù)】
[0002]非揮發(fā)性存儲器(non-volatile memory,NVRAM)以其高存儲密度、較低的功耗、隨機讀寫和字節(jié)可尋址等諸多優(yōu)點,尤其是斷電后還可以保留原有數(shù)據(jù)的特點,逐漸在存儲系統(tǒng)中扮演越來越重要的角色。
[0003]但是大部分非揮發(fā)性存儲器的存儲單元都有有限的擦寫次數(shù)。由于大多數(shù)程序的寫操作都呈現(xiàn)出明顯的局部性和不均衡性,寫操作集中的單元會比其他單元較早地達(dá)到壽命極限,從而造成數(shù)據(jù)錯誤,器件壽命也會因此而縮短。傳統(tǒng)在文件系統(tǒng)層級的磨損均衡解決方法是為每個存儲塊設(shè)置計數(shù)器,這樣需要消耗較多的內(nèi)存。本發(fā)明提出一種區(qū)別與傳統(tǒng)做法的方式在文件系統(tǒng)層級解決非揮發(fā)性存儲器的磨損均衡問題。

【發(fā)明內(nèi)容】

[0004]目前存在的文件系統(tǒng)層級的針對非揮發(fā)性存儲器的磨損均衡解決方案需要設(shè)置計數(shù)指針,需要消耗大量的內(nèi)存,為了克服這個缺陷,本發(fā)明提出一種文件系統(tǒng)級的非揮發(fā)性存儲器磨損均衡空閑塊管理方法。
[0005]本發(fā)明的目的盡量避免消耗內(nèi)存的情況下在文件系統(tǒng)層級解決非揮發(fā)性存儲器的磨損均衡問題,使存儲器寫操作寫的單元更加均勻,從而達(dá)到延長使用壽命的目的。
[0006]本發(fā)明采用如下技術(shù)方案:
[0007]—種文件系統(tǒng)級的非揮發(fā)性存儲器磨損均衡空閑塊管理方法,包括空閑塊、超級塊、數(shù)據(jù)塊、空閑塊隊列、空閑塊隊列片段及空閑塊結(jié)點,具體方法如下:
[0008]構(gòu)建空閑塊隊列,所述空閑塊隊列由至少一個空閑塊隊列片段構(gòu)成,空閑塊隊列片段至少存儲一個空閑塊號或者存儲全O結(jié)點,每個空閑塊號對應(yīng)唯一空閑塊;
[0009]構(gòu)建超級塊,超級塊位于文件系統(tǒng)內(nèi),所述超級塊存儲空閑塊隊列的隊頭指針及隊尾指針,所述隊頭指針及隊尾指針分別指示空閑塊隊列起始空閑塊結(jié)點所在的空閑塊隊列片段號,和結(jié)束空閑塊結(jié)點所在的空閑塊隊列片段號;
[0010]當(dāng)文件系統(tǒng)被掛載時,超級塊被加載到內(nèi)存中;
[0011]當(dāng)要向非揮發(fā)性存儲器內(nèi)寫入數(shù)據(jù)時,則請求空閑塊,從超級塊中取出空閑塊隊列隊頭指針指向的空閑塊隊列片段號,若隊頭指針指向的空閑塊隊列片段號為N,若隊尾指針指向的空閑塊隊列片段號為M:
[0012]如果M= N,找到第一個非O的空閑塊結(jié)點,所述空閑塊結(jié)點對應(yīng)唯一空閑塊號,把空閑塊結(jié)點中對應(yīng)的空閑塊號的空閑塊直接分配給文件,修改當(dāng)前空閑塊結(jié)點的值為0,表示已經(jīng)分配出去,該空閑塊號的空閑塊一旦被分配出去直到被回收之前都不可再用,分配出去的空閑塊稱為數(shù)據(jù)塊;
[0013]如果M在N,取出隊首指針指示的空閑隊列片段上第一個非O空閑塊結(jié)點,若該結(jié)點不是空閑塊隊列片段上最后一個空閑塊結(jié)點,則直接分配;若該結(jié)點是空閑塊隊列片段上最后一個結(jié)點,則暫存當(dāng)前空閑塊隊列隊首指針指示的空閑塊片段的空閑塊號K,然后修改空閑塊隊列隊首指針指向最后一個非O結(jié)點指示的塊號,待修改完成后把最初暫存的K號空閑塊分配給文件。
[0014]還包括分配出去的空閑塊若被釋放,則置于超級塊中空閑塊隊列隊尾指針指示的空閑塊隊列片段上的第一個全O的空閑塊結(jié)點。
[00?5]如果超級塊中空閑塊隊列隊尾指針指不的空閑塊隊列片段內(nèi)無O的空閑塊結(jié)點,則取當(dāng)前空閑塊隊列片段內(nèi)最后一個空閑塊結(jié)點,以存儲在該空閑塊結(jié)點內(nèi)的塊號的空閑塊作為下一個空閑塊隊列片段容器,新建空閑塊隊列片段,初始化空閑塊隊列片段內(nèi)的空閑塊結(jié)點為0,將釋放后的空閑塊塊號存儲到第一個為O的空閑塊結(jié)點,同時修改超級塊中空閑塊隊列的隊尾指針。
[0016]起始和結(jié)束的空閑塊隊列片段號上的空閑塊結(jié)點如果未存滿,則未存儲的地方用O填充。
[0017]本發(fā)明的有益效果:
[0018](I)在文件系統(tǒng)層級利用空閑塊隊列來分配、回收存儲設(shè)備上的空閑塊,解決非揮發(fā)性存儲器的磨損均衡問題;
[0019](2)文件系統(tǒng)中的超級塊在文件系統(tǒng)掛載的時候加載到內(nèi)存,分配、回收空閑塊優(yōu)先操作內(nèi)存中加載的超級塊,定時把內(nèi)存中的超級塊同步回文件系統(tǒng)中的超級塊,減少寫操作對非揮發(fā)性存儲器的損耗。
【附圖說明】
[0020]圖1是本發(fā)明的系統(tǒng)結(jié)構(gòu)圖;
[0021]圖2是本發(fā)明中空閑塊分配的工作流程圖;
[0022]圖3是本發(fā)明中空閑塊回收的工作流程圖
【具體實施方式】
[0023]下面結(jié)合實施例及附圖,對本發(fā)明作進(jìn)一步地詳細(xì)說明,但本發(fā)明的實施方式不限于此。
[0024]實施例
[0025]—種文件系統(tǒng)級的非揮發(fā)性存儲器磨損均衡空閑塊管理方法,包括空閑塊、超級塊、數(shù)據(jù)塊、空閑塊隊列、空閑塊隊列片段及空閑塊結(jié)點;
[0026]所述空閑塊具體為:占有一定大小的存儲空間,其內(nèi)部沒有有用的數(shù)據(jù)。是存儲數(shù)據(jù)的基本數(shù)據(jù)單元。
[0027]所述超級塊:包含文件系統(tǒng)所有關(guān)鍵參數(shù)的塊(確定文件系統(tǒng)類型的魔數(shù)、文件系統(tǒng)中數(shù)據(jù)塊的數(shù)量以及其他重要的管理信息)。
[0028]所述數(shù)據(jù)塊:分配出去的空閑塊,占有一定大小的存儲空間,大小與空閑塊一致,其內(nèi)部存有數(shù)據(jù)。是存儲介質(zhì)進(jìn)行讀寫的最小單位。
[0029]空閑塊隊列:一個存儲空閑塊號的隊列,在空閑塊較多、空閑塊隊列較長的情況下,每個空閑塊存儲的空閑塊結(jié)點數(shù)量有限,因此空閑塊隊列會分割為多個空閑塊片段存儲在多個空閑塊上;
[0030]空閑塊隊列片段:在空閑塊隊列較長的情況下,單個空閑塊不能存儲整個隊列,隊列會被分割成若干大小相等的片段分別存儲在若干空閑塊上,每個空閑塊隊列片段所占空間大小與空閑塊一致。
[0031]空閑塊結(jié)點:空閑塊隊列中的一個元素,每個空閑塊結(jié)點都儲存著一個空閑塊號。
[0032]具體方法如下:
[0033]構(gòu)建空閑塊隊列,所述空閑塊隊列由至少一個空閑塊隊列片段構(gòu)成,空閑塊隊列片段由存儲著空閑塊號的空閑塊結(jié)點或全O結(jié)點構(gòu)成”,每個空閑塊號對應(yīng)唯一空閑塊。
[0034]構(gòu)建超級塊,超級塊位于文件系統(tǒng)內(nèi),所述超級塊存儲空閑塊隊列的隊頭指針及隊尾指針,所述隊頭指針及隊尾指針分別指示空閑塊隊列起始空閑塊結(jié)點所在的空閑塊號,和結(jié)束空閑塊結(jié)點所在的空閑塊號;
[0035]空閑塊的分配:
[0036]當(dāng)文件系統(tǒng)要向非揮發(fā)性存儲器上寫入數(shù)據(jù)的時候,需要為其分配若干空閑塊。在本發(fā)明的文件系統(tǒng)的超級塊中存儲空閑塊隊列的隊頭和隊尾指針,它們分別指向空閑塊隊列起始空閑塊隊列片段和結(jié)束空閑塊結(jié)點所在的空閑塊片段的塊號,起始和結(jié)束的空閑塊片段上的空閑塊結(jié)點如果未存滿,則未存儲的地方用O填充。當(dāng)文件系統(tǒng)被掛載上之后,超級塊將被加載到內(nèi)存中,內(nèi)核會定期將其同步到存儲設(shè)備上,以保證其正確性。
[0037]當(dāng)請求空閑塊時,從內(nèi)存中的超級塊中取出空閑塊隊列隊頭指針指向的空閑塊號(假設(shè)為N),和隊尾指針指向的空閑塊號(假設(shè)為M)。
[0038]若隊頭指針(N)和隊尾指針(M)指示的空閑塊號相同(M= N)
[0039]在該空閑塊隊列片段上找到第一個非O的空閑塊結(jié)點直接分配給文件,修改當(dāng)前空閑塊結(jié)點的值為0,表示已經(jīng)分配出去。該空閑塊號的空閑塊一旦被分配出去,直到被釋放回收之前都不可再用。
[0040]因為單個空閑塊號上的隊列能存儲的空閑塊結(jié)點有限,如果空閑塊號較多的時候,單個空閑塊已經(jīng)存儲不下這些空閑塊結(jié)點,需要多個空閑塊存儲。此時存儲空閑塊結(jié)點的每個空閑塊中(除隊尾指示的空閑塊)存儲的最后一個空閑塊結(jié)點是指示連續(xù)的下個空閑塊隊列片段所在的塊號位置。
[0041]若隊首指針(N)和隊尾指針M指示的空閑塊號不同,S卩M在N。
[0042]取出隊首指針指示的空閑塊隊列片段上第一個非O空閑塊結(jié)點,若該結(jié)點不是空閑塊隊列片段上最后一個空閑塊結(jié)點,則直接分配;若該結(jié)點是空閑塊隊列片段最后一個結(jié)點,則暫存當(dāng)前隊首指針指示的空閑塊隊列片段的空閑塊號K,修改空閑塊隊列隊首指針指向空閑塊隊列片段最后一個非O結(jié)點指示的塊號,修改完成后把當(dāng)前K號空閑塊分配給文件。
[0043]空閑塊的回收:
[0044]空閑塊的回收方法,與分配方法相反。將釋放的空閑塊號置入超級塊的空閑隊列隊尾指針指示的空閑塊隊列片段中,若當(dāng)前空閑塊隊列片段還能存儲空閑塊結(jié)點,則找到當(dāng)前空閑塊隊列片段上第一個為O空閑塊結(jié)點直接存儲新釋放的塊號。若當(dāng)前空閑塊隊列片段已經(jīng)存儲滿空閑塊結(jié)點,取當(dāng)前空閑塊隊列片段中最后一個空閑結(jié)點記錄的塊號(假設(shè)X),在X上新建空閑塊隊列片段,初始化該空閑塊隊列片段上所有空閑塊結(jié)點為全O,把新釋放的空閑塊塊號存入該空閑塊隊列片段第一個為O的空閑塊結(jié)點,修改內(nèi)存中超級塊中的隊尾指針指向當(dāng)前新分配的空閑塊隊列片段塊號。定期再把修改同步到存儲在非揮發(fā)性存儲設(shè)備的超級塊中。下次對同一空閑塊操作需要把空閑塊隊列中該塊之前的空閑塊都分配完后,減少了對同一空閑塊的使用頻次,使每個空閑塊均勻的被使用,從磨損均衡的角度考慮,我們保證這些數(shù)據(jù)塊不會被過度使用。
[0045]本發(fā)明通過發(fā)明一種文件系統(tǒng)層級的非揮發(fā)性存儲器空閑塊管理方式,增加考慮磨損均衡技術(shù),延長了易損耗的非揮發(fā)性存儲器的整體使用壽命。本發(fā)明使用空閑塊隊列管理空閑塊借鑒了磁盤空閑塊鏈表方式管理,并加以改進(jìn),每次從隊頭取出空閑列表塊,經(jīng)過是否是最后一個空閑塊片段和是否還有空閑塊存儲空閑塊隊列等判斷后分配,回收的空閑列表塊放在隊尾,如果當(dāng)前空閑塊存儲滿后,在當(dāng)前空閑塊隊列存儲的最后一個空閑塊新建一個空閑塊隊列片段,存儲延續(xù)當(dāng)前隊列結(jié)點,本發(fā)明保證了空閑塊不會被隨機分配,先被分配的空閑塊會等到把排在隊列前面的空閑塊使用完畢后再使用,比較自然的解決了非揮發(fā)性存儲器的磨損問題。
[0046]如圖1是本發(fā)明實施例的系統(tǒng)結(jié)構(gòu)圖,
[0047]本發(fā)明采用空閑塊隊列形式存儲空閑塊號,超級塊的隊首指向#25號空閑塊隊列片段,隊尾指向#128號空閑塊隊列片段。其中#25號和#128號空閑塊上都是一個空閑塊隊列片段。
[0048]空閑塊的分配方法,當(dāng)文件系統(tǒng)要向非揮發(fā)性存儲器上寫數(shù)據(jù)的時候,需要為其分配若干空閑塊。在本發(fā)明的文件系統(tǒng)的超級塊中存儲空閑塊隊列的隊頭和隊尾指針,分別存儲空閑塊隊列的起始空閑塊結(jié)點和結(jié)束空閑塊結(jié)點所在的空閑塊號,當(dāng)文件系統(tǒng)被掛載之后,超級塊將被加載到內(nèi)存中,內(nèi)核會定期將其同步到存儲設(shè)備上,以保證其正確性。
[0049]如圖2所示,當(dāng)請求空閑塊時,從內(nèi)存中的超級塊中取出空閑塊隊列隊頭指針指向的空閑塊片段號#25,則尋找存儲在該空閑塊號內(nèi)的空閑塊隊列片段上第一個非O空閑塊結(jié)點,假設(shè)為圖1中97號空閑塊結(jié)點,該結(jié)點并不是該空閑塊隊列片段上最后一個結(jié)點,則將97號空閑塊直接分配給文件,修改當(dāng)前存儲著97號空閑塊的結(jié)點的數(shù)據(jù)為全O表示已經(jīng)分配,97號空閑塊一旦被分配出去直到被回收之前都不可再用。
[0050]因為每個空閑塊號上能存儲的空閑塊結(jié)點數(shù)有限,當(dāng)空閑塊結(jié)點較多的時候,空閑塊隊列會被分割成多個空閑塊隊列片段存儲在若干空閑塊上。每個存儲空閑塊號的空閑塊隊列片段所存儲的最后一個結(jié)點存儲的塊號是指示連續(xù)的下個空閑塊片段所存儲的空閑塊號位置。圖1中存儲在25號空閑塊隊列片段最后一個空閑塊結(jié)點為空閑塊號100,它指示與25號空閑塊隊列片段相鄰的空閑塊隊列片段存儲于100號空閑塊上。同樣存儲于100號空閑塊隊列片段最后一個結(jié)點存儲著空閑塊號128,指示與100號空閑塊相鄰的片段存儲在128號空閑塊上。假設(shè)圖1中#25號空閑塊上除最后一個空閑塊結(jié)點存儲著空閑塊號100,其余都為0,此時請求空閑塊,則修改空閑隊列隊首指針為最后一個結(jié)點指示的塊號(圖1中100號)指針,修改完成后把當(dāng)前25號空閑塊分配給請求的文件。
[0051 ]如圖3所示,空閑塊的回收方法,與分配方法相反。將釋放的空閑塊號置入超級塊的空閑隊列隊尾指針指示的空閑塊上的空閑塊隊列片段中第一個全O的空閑塊結(jié)點(如圖7801后的第一個O結(jié)點),若當(dāng)前空閑塊隊列片段未存儲滿空閑塊結(jié)點,則找到第一個全O的結(jié)點直接存儲新釋放的塊號。若當(dāng)前空閑塊已經(jīng)存儲滿空閑塊結(jié)點,取當(dāng)前空閑塊隊列片段中最后一個空閑塊結(jié)點的空閑塊號(假設(shè)X),在X上新建空閑塊隊列片段,初始化此片段上所有空閑塊結(jié)點為O,把新釋放的空閑塊號存入第一個全O的空閑塊結(jié)點,修改內(nèi)存中超級塊中的隊尾指針指向X號塊。定期再把修改同步到存儲在非揮發(fā)性存儲設(shè)備的超級塊中。
[0052]上述實施例為本發(fā)明較佳的實施方式,但本發(fā)明的實施方式并不受所述實施例的限制,其他的任何未背離本發(fā)明的精神實質(zhì)與原理下所作的改變、修飾、替代、組合、簡化,均應(yīng)為等效的置換方式,都包含在本發(fā)明的保護范圍之內(nèi)。
【主權(quán)項】
1.一種文件系統(tǒng)級的非揮發(fā)性存儲器磨損均衡空閑塊管理方法,其特征在于,包括空閑塊、超級塊、數(shù)據(jù)塊、空閑塊隊列、空閑塊隊列片段及空閑塊結(jié)點,具體方法如下: 構(gòu)建空閑塊隊列,所述空閑塊隊列由至少一個空閑塊隊列片段構(gòu)成,空閑塊隊列片段至少存儲一個空閑塊號或者存儲全O結(jié)點,每個空閑塊號對應(yīng)唯一空閑塊; 構(gòu)建超級塊,超級塊位于文件系統(tǒng)內(nèi),所述超級塊存儲空閑塊隊列的隊頭指針及隊尾指針,所述隊頭指針及隊尾指針分別指示空閑塊隊列起始空閑塊結(jié)點所在的空閑塊隊列片段號,和結(jié)束空閑塊結(jié)點所在的空閑塊隊列片段號; 當(dāng)文件系統(tǒng)被掛載時,超級塊被加載到內(nèi)存中; 當(dāng)要向非揮發(fā)性存儲器內(nèi)寫入數(shù)據(jù)時,則請求空閑塊,從超級塊中取出空閑塊隊列隊頭指針指向的空閑塊隊列片段號,若隊頭指針指向的空閑塊隊列片段號為N,若隊尾指針指向的空閑塊隊列片段號為M; 如果M = N,找到第一個非O的空閑塊結(jié)點,所述空閑塊結(jié)點對應(yīng)唯一空閑塊號,把空閑塊結(jié)點中對應(yīng)的空閑塊號的空閑塊直接分配給文件,修改當(dāng)前空閑塊結(jié)點的值為O,表示已經(jīng)分配出去,該空閑塊號的空閑塊一旦被分配出去直到被回收之前都不可再用,分配出去的空閑塊稱為數(shù)據(jù)塊; 如果M在N,取出隊首指針指示的空閑隊列片段上第一個非O空閑塊結(jié)點,若該結(jié)點不是空閑塊隊列片段上最后一個空閑塊結(jié)點,則直接分配;若該結(jié)點是空閑塊隊列片段上最后一個結(jié)點,則暫存當(dāng)前空閑塊隊列隊首指針指示的空閑塊片段的空閑塊號K,然后修改空閑塊隊列隊首指針指向最后一個非O結(jié)點指示的塊號,待修改完成后把最初暫存的K號空閑塊分配給文件。2.根據(jù)權(quán)利要求1所述的非揮發(fā)性存儲器磨損均衡空閑塊釋放方法,其特征在于,還包括分配出去的空閑塊若被釋放,則置于超級塊中空閑塊隊列隊尾指針指示的空閑塊隊列片段上的第一個全O的空閑塊結(jié)點; 如果超級塊中空閑塊隊列隊尾指針指示的空閑塊隊列片段內(nèi)無O的空閑塊結(jié)點,則取當(dāng)前空閑塊隊列片段內(nèi)最后一個空閑塊結(jié)點,以存儲在該空閑塊結(jié)點內(nèi)的塊號的空閑塊作為下一個空閑塊隊列片段容器,新建空閑塊隊列片段,初始化空閑塊隊列片段內(nèi)的空閑塊結(jié)點為O,將釋放后的空閑塊塊號存儲到弟為ο的空閑塊結(jié)點,冋時修改超級塊中空閑塊隊列的隊尾指針。3.根據(jù)權(quán)利要求1所述的非揮發(fā)性存儲器磨損均衡空閑塊釋放方法,其特征在于,起始和結(jié)束的空閑塊隊列片段號上的空閑塊結(jié)點如果未存滿,則未存儲的地方用O填充。
【文檔編號】G11C16/34GK105845182SQ201610156467
【公開日】2016年8月10日
【申請日】2016年3月18日
【發(fā)明人】吳 民, 吳一民, 田夢達(dá), 安棟, 梁競雅, 段赫
【申請人】華南理工大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
泌阳县| 阳曲县| 垦利县| 手游| 宜兰县| 奇台县| 上饶县| 黄山市| 洛南县| 贵德县| 阜城县| 馆陶县| 文安县| 枣阳市| 吴川市| 临漳县| 巨鹿县| 旅游| 诸暨市| 泸水县| 金乡县| 宜兴市| 龙山县| 新民市| 临湘市| 安仁县| 巴青县| 府谷县| 静安区| 安塞县| 曲靖市| 珠海市| 容城县| 安陆市| 渭源县| 汪清县| 嵊州市| 海晏县| 新乡市| 平阴县| 鱼台县|