System.ArgumentOutOfRangeException: 索引和長(zhǎng)度必須引用該字符串內(nèi)的位置。 參數(shù)名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術(shù)實(shí)現(xiàn)步驟摘要】
本申請(qǐng)涉及計(jì)算機(jī)緩存領(lǐng)域,尤其涉及一種緩存斷電恢復(fù)方法、系統(tǒng)及其存儲(chǔ)介質(zhì)。
技術(shù)介紹
1、隨著物聯(lián)網(wǎng)、智能家居和移動(dòng)互聯(lián)網(wǎng)的發(fā)展,嵌入式系統(tǒng)和移動(dòng)設(shè)備的普及程度不斷增加,這些設(shè)備通常需要使用flash存儲(chǔ)來(lái)存儲(chǔ)數(shù)據(jù)和程序。而flash存儲(chǔ)具有高速、低功耗和可靠性等優(yōu)點(diǎn),因此在嵌入式和移動(dòng)設(shè)備中得到了廣泛應(yīng)用,然而,flash存儲(chǔ)的管理對(duì)于不同的硬件平臺(tái)和操作系統(tǒng)環(huán)境中存在挑戰(zhàn),例如:如何在flash存儲(chǔ)器斷電后數(shù)據(jù)恢復(fù)等問(wèn)題。
2、現(xiàn)有技術(shù)中,大多數(shù)的斷電恢復(fù)機(jī)制往往需要斷電后全面掃描各個(gè)區(qū)塊的所有物理頁(yè),然后,根據(jù)所有區(qū)塊的所有物理頁(yè)數(shù)據(jù)去確定哪些區(qū)塊需要數(shù)據(jù)恢復(fù),哪些區(qū)塊不需要數(shù)據(jù)恢復(fù),而全面掃描各個(gè)區(qū)塊的所有物理頁(yè)這一步驟往往是耗費(fèi)時(shí)間過(guò)長(zhǎng),進(jìn)而使得斷電恢復(fù)的效率大大降低,同時(shí),在斷電數(shù)據(jù)恢復(fù)之后還可能出現(xiàn)區(qū)塊無(wú)法正常寫(xiě)入的問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、本申請(qǐng)實(shí)施例的主要目的在于提出一種緩存斷電恢復(fù)方法、系統(tǒng)及其存儲(chǔ)介質(zhì),通過(guò)第一帶外數(shù)據(jù)在第一次區(qū)塊掃描中快速縮小并確定待恢復(fù)區(qū)塊的讀取范圍,然后再對(duì)待恢復(fù)區(qū)塊的最后一個(gè)物理頁(yè)進(jìn)行全面掃描,進(jìn)而能夠準(zhǔn)確、迅速對(duì)待恢復(fù)區(qū)塊進(jìn)行斷電恢復(fù),提高了緩存斷電恢復(fù)的效率,同時(shí),通過(guò)重建目標(biāo)工作區(qū)塊還確保了斷電恢復(fù)之后的區(qū)塊能夠正常寫(xiě)入。
2、為實(shí)現(xiàn)上述目的,本申請(qǐng)實(shí)施例的第一方面提出了一種緩存斷電恢復(fù)方法,包括:
3、獲取flash閃存發(fā)生斷電后的目標(biāo)閃存分區(qū);
4、依次掃描目標(biāo)閃存分區(qū)中各個(gè)區(qū)塊
5、根據(jù)各個(gè)塊類型數(shù)據(jù),將屬于已使用類型的區(qū)塊確定為第一待恢復(fù)區(qū)塊,并將第一待恢復(fù)區(qū)塊存放至第一區(qū)塊鏈表,第一區(qū)塊鏈表用于存儲(chǔ)需要進(jìn)行數(shù)據(jù)恢復(fù)的區(qū)塊;
6、依次掃描第一區(qū)塊鏈表中各個(gè)第一待恢復(fù)區(qū)塊的最后一個(gè)物理頁(yè),并且根據(jù)第一待恢復(fù)區(qū)塊中最后一個(gè)物理頁(yè)的數(shù)據(jù)存儲(chǔ)情況,對(duì)第一待恢復(fù)區(qū)塊進(jìn)行數(shù)據(jù)恢復(fù)處理,以及在待重建空間中確定并重建目標(biāo)工作區(qū)塊;
7、其中,數(shù)據(jù)恢復(fù)處理是對(duì)所有已使用塊進(jìn)行邏輯頁(yè)到物理頁(yè)映射關(guān)系的數(shù)據(jù)恢復(fù),即恢復(fù)邏輯映射表數(shù)據(jù),以用作下次執(zhí)行讀寫(xiě)操作處理;待重建空間用于存儲(chǔ)所有物理頁(yè)未被寫(xiě)滿用戶數(shù)據(jù)的區(qū)塊,目標(biāo)工作區(qū)塊用于作為下次執(zhí)行寫(xiě)入操作時(shí)的數(shù)據(jù)存儲(chǔ)區(qū)塊。
8、進(jìn)一步,在一些實(shí)施例當(dāng)中,待重建空間設(shè)有第一存儲(chǔ)節(jié)點(diǎn)和第二存儲(chǔ)節(jié)點(diǎn),在待重建空間中確定并重建目標(biāo)工作區(qū)塊,包括:
9、判斷第一存儲(chǔ)節(jié)點(diǎn)和第二存儲(chǔ)節(jié)點(diǎn)是否為空;
10、當(dāng)?shù)谝淮鎯?chǔ)節(jié)點(diǎn)和第二存儲(chǔ)節(jié)點(diǎn)均為空時(shí),則從第三區(qū)塊鏈表的頭部獲取一個(gè)空閑區(qū)塊,并將空閑區(qū)塊確定為目標(biāo)工作區(qū)塊并重建,其中,第三區(qū)塊鏈表用于存儲(chǔ)處于空閑狀態(tài)的區(qū)塊;
11、或者,當(dāng)?shù)诙鎯?chǔ)節(jié)點(diǎn)為空時(shí),則將第一存儲(chǔ)節(jié)點(diǎn)存儲(chǔ)的區(qū)塊確定為目標(biāo)工作區(qū)塊并重建;
12、或者,當(dāng)?shù)谝淮鎯?chǔ)節(jié)點(diǎn)和第二存儲(chǔ)節(jié)點(diǎn)均不為空時(shí),分別獲取第一存儲(chǔ)節(jié)點(diǎn)存儲(chǔ)的區(qū)塊的第一已使用次數(shù)以及第二存儲(chǔ)節(jié)點(diǎn)存儲(chǔ)的區(qū)塊的第二已使用次數(shù),根據(jù)第一已使用次數(shù)和第二已使用次數(shù)確定目標(biāo)工作區(qū)塊并重建。
13、進(jìn)一步,在一些實(shí)施例當(dāng)中,根據(jù)第一已使用次數(shù)和第二已使用次數(shù)確定目標(biāo)工作區(qū)塊并重建,包括:
14、若第一已使用次數(shù)小于第二已使用次數(shù)時(shí),則將第一存儲(chǔ)節(jié)點(diǎn)存儲(chǔ)的區(qū)塊確定為目標(biāo)工作區(qū)塊并重建;
15、若第一已使用次數(shù)大于或者等于第二已使用次數(shù)時(shí),則將第二存儲(chǔ)節(jié)點(diǎn)存儲(chǔ)的區(qū)塊確定為目標(biāo)工作區(qū)塊并重建。
16、進(jìn)一步,在一些實(shí)施例當(dāng)中,根據(jù)第一待恢復(fù)區(qū)塊中最后一個(gè)物理頁(yè)的數(shù)據(jù)存儲(chǔ)情況,對(duì)第一待恢復(fù)區(qū)塊進(jìn)行數(shù)據(jù)恢復(fù)處理,包括:
17、將所有物理頁(yè)均不為空的第一待恢復(fù)區(qū)塊確定為第二待恢復(fù)區(qū)塊;
18、根據(jù)第二待恢復(fù)區(qū)塊中最后一個(gè)物理頁(yè)的數(shù)據(jù)存儲(chǔ)情況,對(duì)第二待恢復(fù)區(qū)塊進(jìn)行數(shù)據(jù)恢復(fù)處理。
19、進(jìn)一步,在一些實(shí)施例當(dāng)中,根據(jù)第二待恢復(fù)區(qū)塊中最后一個(gè)物理頁(yè)的數(shù)據(jù)存儲(chǔ)情況,對(duì)第二待恢復(fù)區(qū)塊進(jìn)行數(shù)據(jù)恢復(fù),包括:
20、讀取flash閃存的閃存工作狀態(tài),以及第二待恢復(fù)區(qū)塊中最后一個(gè)物理頁(yè)的第二帶外數(shù)據(jù)和第一映射數(shù)據(jù),第二帶外數(shù)據(jù)包含用于表征物理頁(yè)類型的頁(yè)類型數(shù)據(jù),第一映射數(shù)組包含用于映射第二待恢復(fù)區(qū)塊中除最后一個(gè)物理頁(yè)之外的各個(gè)物理頁(yè)的物理映射數(shù)據(jù),第一映射數(shù)組存儲(chǔ)于第二待恢復(fù)區(qū)塊的最后一個(gè)物理頁(yè)中;
21、根據(jù)flash閃存工作狀態(tài)確定第二待恢復(fù)區(qū)塊是否觸發(fā)過(guò)ecc錯(cuò)誤;
22、若第二待恢復(fù)區(qū)塊觸發(fā)過(guò)ecc錯(cuò)誤,則確立獲取第一映射數(shù)組無(wú)效,并讀取第二待恢復(fù)區(qū)塊中除最后一個(gè)物理頁(yè)之外的各個(gè)物理頁(yè)的第三帶外數(shù)據(jù),根據(jù)各個(gè)第三帶外數(shù)據(jù)重建第二待恢復(fù)區(qū)塊在邏輯映射表中的映射數(shù)據(jù),以及將第二待恢復(fù)區(qū)塊放至第二區(qū)塊鏈表的末尾,其中,第二區(qū)塊鏈表用于存儲(chǔ)需要進(jìn)行垃圾回收的區(qū)塊;
23、或者,若第二待恢復(fù)區(qū)塊沒(méi)有觸發(fā)過(guò)ecc錯(cuò)誤,則根據(jù)第二帶外數(shù)據(jù)和第一映射數(shù)組,對(duì)第一待恢復(fù)區(qū)塊進(jìn)行數(shù)據(jù)恢復(fù)處理。
24、進(jìn)一步,在一些實(shí)施例當(dāng)中,根據(jù)第二帶外數(shù)據(jù)和第一映射數(shù)組,確定第二待恢復(fù)區(qū)塊中所有物理頁(yè)是否均被寫(xiě)滿用戶數(shù)據(jù),包括:
25、根據(jù)第二帶外數(shù)據(jù)的頁(yè)類型數(shù)據(jù),確定第二待恢復(fù)區(qū)塊中除最后一個(gè)物理頁(yè)之外的各個(gè)物理頁(yè)是否均被寫(xiě)滿用戶數(shù)據(jù);
26、若第二待恢復(fù)區(qū)塊中除最后一個(gè)物理頁(yè)之外的各個(gè)物理頁(yè)均被寫(xiě)滿用戶數(shù)據(jù),則根據(jù)第一映射數(shù)組,重建第二待恢復(fù)區(qū)塊在邏輯映射表中的映射數(shù)據(jù);
27、或者,若第二待恢復(fù)區(qū)塊中除最后一個(gè)物理頁(yè)之外的各個(gè)物理頁(yè)未均被寫(xiě)滿用戶數(shù)據(jù),則根據(jù)第二待恢復(fù)區(qū)塊更新待重建空間,并讀取第二待恢復(fù)區(qū)塊中除最后一個(gè)物理頁(yè)之外的各個(gè)物理頁(yè)的第三帶外數(shù)據(jù),以及根據(jù)各個(gè)第三帶外數(shù)據(jù)重建第二待恢復(fù)區(qū)塊在邏輯映射表中的映射數(shù)據(jù)。
28、進(jìn)一步,在一些實(shí)施例當(dāng)中,根據(jù)第二帶外數(shù)據(jù)的頁(yè)類型數(shù)據(jù),確定第二待恢復(fù)區(qū)塊中所有物理頁(yè)是否均被寫(xiě)滿用戶數(shù)據(jù),包括:
29、當(dāng)頁(yè)類型數(shù)據(jù)的物理頁(yè)類型為物理映射頁(yè)類型,則確定第二待恢復(fù)區(qū)塊中除最后一個(gè)物理頁(yè)之外的各個(gè)物理頁(yè)均被寫(xiě)滿用戶數(shù)據(jù);
30、或者,當(dāng)頁(yè)類型數(shù)據(jù)的物理頁(yè)類型為非物理映射頁(yè)類型或者頁(yè)類型數(shù)據(jù)為空數(shù)據(jù),則確定第二待恢復(fù)區(qū)塊中除最后一個(gè)物理頁(yè)之外的各個(gè)物理頁(yè)未均被寫(xiě)滿用戶數(shù)據(jù)。
31、進(jìn)一步,在一些實(shí)施例當(dāng)中,根據(jù)第二待恢復(fù)區(qū)塊更新待重建空間,包括:
32、判斷第一存儲(chǔ)節(jié)點(diǎn)是否為空;
33、當(dāng)?shù)谝淮鎯?chǔ)節(jié)點(diǎn)為空,將第二待恢復(fù)區(qū)塊放至第一存儲(chǔ)節(jié)點(diǎn);
34、當(dāng)?shù)谝淮鎯?chǔ)節(jié)點(diǎn)不為空,判斷第二存儲(chǔ)節(jié)點(diǎn)是否為空;
35、當(dāng)?shù)诙鎯?chǔ)節(jié)點(diǎn)為空時(shí),將第二待恢復(fù)區(qū)塊放至第二存儲(chǔ)節(jié)點(diǎn);
36、當(dāng)?shù)诙鎯?chǔ)節(jié)點(diǎn)不為空時(shí),將第一存儲(chǔ)節(jié)點(diǎn)存儲(chǔ)的區(qū)塊放至第二區(qū)塊鏈表的末尾,將第二存儲(chǔ)節(jié)點(diǎn)本文檔來(lái)自技高網(wǎng)...
【技術(shù)保護(hù)點(diǎn)】
1.一種緩存斷電恢復(fù)方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的緩存斷電恢復(fù)方法,其特征在于,所述待重建空間設(shè)有第一存儲(chǔ)節(jié)點(diǎn)和第二存儲(chǔ)節(jié)點(diǎn),所述在待重建空間中確定并重建所述目標(biāo)工作區(qū)塊,包括:
3.根據(jù)權(quán)利要求2所述的緩存斷電恢復(fù)方法,其特征在于,所述根據(jù)所述第一已使用次數(shù)和所述第二已使用次數(shù)確定所述目標(biāo)工作區(qū)塊并重建,包括:
4.根據(jù)權(quán)利要求2所述的緩存斷電恢復(fù)方法,其特征在于,所述根據(jù)所述第一待恢復(fù)區(qū)塊中最后一個(gè)物理頁(yè)的數(shù)據(jù)存儲(chǔ)情況,對(duì)所述第一待恢復(fù)區(qū)塊進(jìn)行數(shù)據(jù)恢復(fù)處理,包括:
5.根據(jù)權(quán)利要求4所述的緩存斷電恢復(fù)方法,其特征在于,所述根據(jù)所述第二待恢復(fù)區(qū)塊中所有物理頁(yè)的數(shù)據(jù)存儲(chǔ)情況,對(duì)所述第二待恢復(fù)區(qū)塊進(jìn)行數(shù)據(jù)恢復(fù),包括:
6.根據(jù)權(quán)利要求5所述的緩存斷電恢復(fù)方法,其特征在于,所述根據(jù)所述第二帶外數(shù)據(jù)和所述第一映射數(shù)組,對(duì)所述第一待恢復(fù)區(qū)塊進(jìn)行數(shù)據(jù)恢復(fù)處理,包括:
7.根據(jù)權(quán)利要求6所述的緩存斷電恢復(fù)方法,其特征在于,所述根據(jù)所述第二帶外數(shù)據(jù)的頁(yè)類型數(shù)據(jù),確定所述第二待恢復(fù)區(qū)塊中所有物理頁(yè)是否均被
8.根據(jù)權(quán)利要求6所述的緩存斷電恢復(fù)方法,其特征在于,所述根據(jù)所述第二待恢復(fù)區(qū)塊更新所述待重建空間,包括:
9.一種緩存斷電恢復(fù)系統(tǒng),其特征在于,包括:
10.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)權(quán)利要求1至8任意一項(xiàng)所述的緩存斷電恢復(fù)方法。
...【技術(shù)特征摘要】
1.一種緩存斷電恢復(fù)方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的緩存斷電恢復(fù)方法,其特征在于,所述待重建空間設(shè)有第一存儲(chǔ)節(jié)點(diǎn)和第二存儲(chǔ)節(jié)點(diǎn),所述在待重建空間中確定并重建所述目標(biāo)工作區(qū)塊,包括:
3.根據(jù)權(quán)利要求2所述的緩存斷電恢復(fù)方法,其特征在于,所述根據(jù)所述第一已使用次數(shù)和所述第二已使用次數(shù)確定所述目標(biāo)工作區(qū)塊并重建,包括:
4.根據(jù)權(quán)利要求2所述的緩存斷電恢復(fù)方法,其特征在于,所述根據(jù)所述第一待恢復(fù)區(qū)塊中最后一個(gè)物理頁(yè)的數(shù)據(jù)存儲(chǔ)情況,對(duì)所述第一待恢復(fù)區(qū)塊進(jìn)行數(shù)據(jù)恢復(fù)處理,包括:
5.根據(jù)權(quán)利要求4所述的緩存斷電恢復(fù)方法,其特征在于,所述根據(jù)所述第二待恢復(fù)區(qū)塊中所有物理頁(yè)的數(shù)據(jù)存儲(chǔ)情況,對(duì)所述第二待恢復(fù)區(qū)塊進(jìn)行數(shù)據(jù)...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:江澈,李明烽,原順,
申請(qǐng)(專利權(quán))人:廣東匠芯創(chuàng)科技有限公司,
類型:發(fā)明
國(guó)別省市:
還沒(méi)有人留言評(píng)論。發(fā)表了對(duì)其他瀏覽者有用的留言會(huì)獲得科技券。