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

一種寫(xiě)入和檢測(cè)數(shù)據(jù)的方法及裝置制造方法

文檔序號(hào):6550562閱讀:173來(lái)源:國(guó)知局
一種寫(xiě)入和檢測(cè)數(shù)據(jù)的方法及裝置制造方法
【專利摘要】本發(fā)明涉及通信電子【技術(shù)領(lǐng)域】,涉及一種寫(xiě)入和檢測(cè)數(shù)據(jù)的方法及裝置??山鉀Q在斷電或者系統(tǒng)出錯(cuò)的情況下避免寫(xiě)入錯(cuò)誤的數(shù)據(jù)而導(dǎo)致文件損壞。該方法包括:如果是第一次寫(xiě)操作,在當(dāng)前存儲(chǔ)單元中的起始頁(yè)中寫(xiě)入下一存儲(chǔ)單元的起始地址信息;否則在寫(xiě)入下一存儲(chǔ)單元的起始地址信息以及上一存儲(chǔ)單元的起始地址信息;在檢測(cè)時(shí)如果當(dāng)前存儲(chǔ)單元中的數(shù)據(jù)不正確,找到當(dāng)前頁(yè)所在的當(dāng)前存儲(chǔ)單元的起始頁(yè),從該起始頁(yè)中提取上一存儲(chǔ)單元的起始地址信息,并丟棄當(dāng)前存儲(chǔ)單元中的數(shù)據(jù);當(dāng)上一存儲(chǔ)單元的起始地址信息所指向的數(shù)據(jù)不正確時(shí),將上一存儲(chǔ)單元中的數(shù)據(jù)丟棄,并將上一存儲(chǔ)單元的上一級(jí)存儲(chǔ)單元作為當(dāng)前存儲(chǔ)單元??梢?jiàn)該方法可解決現(xiàn)有技術(shù)的問(wèn)題。
【專利說(shuō)明】一種寫(xiě)入和檢測(cè)數(shù)據(jù)的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信電子【技術(shù)領(lǐng)域】,尤其涉及一種寫(xiě)入和檢測(cè)數(shù)據(jù)的方法及裝置。
【背景技術(shù)】
[0002]目前NandFlash存儲(chǔ)技術(shù)已經(jīng)被廣泛的應(yīng)用在智能設(shè)備中,其以方便、快捷以及大容量的存儲(chǔ)量占據(jù)了一定市場(chǎng)優(yōu)勢(shì)。NandFlash包括四種類型,其中三種類型如下:
第一種,多層單元閃存(MLC NandFlash),其特點(diǎn)是每個(gè)硬件單元中存儲(chǔ)2位數(shù)據(jù);
第二種,TLC NandFlash,其特點(diǎn)是每個(gè)硬件單元存儲(chǔ)3位數(shù)據(jù);
第三種,QLC NandFlash,其特點(diǎn)是每個(gè)硬件單元存儲(chǔ)4位數(shù)據(jù)。
[0003]NandFlash中包括多個(gè)塊(Block),每個(gè)Block中存儲(chǔ)了一組頁(yè)(Page),數(shù)據(jù)通過(guò)SharedPage方式存儲(chǔ)于NandFLash中,以MLC NandFlash為例數(shù)據(jù)存儲(chǔ)方式如下,參考圖1:
由于MLC的每個(gè)硬件單元可存儲(chǔ)兩位數(shù)據(jù),其中存儲(chǔ)低位數(shù)據(jù)的被稱為L(zhǎng)SBPage,存儲(chǔ)高位數(shù)據(jù)的被稱為MSBPage,假設(shè)圖1中PageO用于存儲(chǔ)LSBPage所對(duì)應(yīng)的數(shù)據(jù),Page6中用于存儲(chǔ)MSBpage所對(duì)應(yīng)的數(shù)據(jù),則PageO和Page6共用NandFlash中的一組硬件單元,當(dāng)Page6中的數(shù)據(jù)損壞后則會(huì)直接影響PageO中的數(shù)據(jù),即為SharedPage方式。用戶可通過(guò)文件系統(tǒng)向NandFlash中的Page按順序?qū)懭霐?shù)據(jù)。
[0004]但本發(fā)明人發(fā)現(xiàn)由于SharedPage方式中存在了對(duì)應(yīng)的Page之間的關(guān)聯(lián)方式,導(dǎo)致如果在進(jìn)行某些原子寫(xiě)操作時(shí),遇到突然斷電的情況時(shí)會(huì)導(dǎo)致當(dāng)前正在寫(xiě)的Page數(shù)據(jù)丟失,并直接影響與該P(yáng)age對(duì)應(yīng)的Page的數(shù)據(jù)丟失或者錯(cuò)誤,而原子寫(xiě)操作是不可被打斷也不可出現(xiàn)錯(cuò)誤的。如圖2所示,例如當(dāng)文件系統(tǒng)正在連續(xù)進(jìn)行兩個(gè)原子寫(xiě)操作時(shí),第一個(gè)原子寫(xiě)操作已經(jīng)寫(xiě)完,且寫(xiě)到了 PageO >age5中,第二個(gè)原子寫(xiě)操作需要寫(xiě)到Page6?Pagell,但在寫(xiě)到Page8的時(shí)候,出現(xiàn)了異常斷電的情況,Page8損壞,根據(jù)SharedPage的特性,Page3也可能被損壞。當(dāng)再次開(kāi)機(jī)時(shí),若在文件系統(tǒng)運(yùn)行中需讀取Page3的數(shù)據(jù)時(shí),如果Page3數(shù)據(jù)已損壞,則文件系統(tǒng)將會(huì)拿到錯(cuò)誤的數(shù)據(jù)。這種問(wèn)題輕則導(dǎo)致已寫(xiě)入的文件損壞,重則導(dǎo)致文件系統(tǒng)無(wú)法正常運(yùn)行。

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

[0005]本發(fā)明提供一種寫(xiě)入和檢測(cè)數(shù)據(jù)的方法及裝置,用于解決在斷電或者系統(tǒng)出錯(cuò)的情況下避免使用之前寫(xiě)入錯(cuò)誤的數(shù)據(jù)而導(dǎo)致文件損壞系統(tǒng)不能正常運(yùn)行的情況出現(xiàn)。
[0006]一種寫(xiě)入數(shù)據(jù)的方法,所述方法包括:
判斷是否為第一次寫(xiě)操作,如果是,則在當(dāng)前存儲(chǔ)單元中的起始頁(yè)中寫(xiě)入下一存儲(chǔ)單元的起始地址信息;如果不是,在所述起始頁(yè)中寫(xiě)入下一存儲(chǔ)單元的起始地址信息以及上一存儲(chǔ)單元的起始地址信息;所述當(dāng)前存儲(chǔ)單元與所述下一存儲(chǔ)單元中的數(shù)據(jù)相對(duì)應(yīng)。
[0007]一種檢測(cè)數(shù)據(jù)的方法,所述方法包括:
步驟A,判斷當(dāng)前存儲(chǔ)單元中的數(shù)據(jù)是否正確,如果不正確,找到當(dāng)前頁(yè)所在的當(dāng)前存儲(chǔ)單元的起始頁(yè),從該起始頁(yè)中提取上一存儲(chǔ)單元的起始地址信息,并丟棄當(dāng)前存儲(chǔ)單元中的數(shù)據(jù);
步驟B,判斷上一存儲(chǔ)單元的起始地址信息所指向的數(shù)據(jù)是否正確,如果不正確,將所述上一存儲(chǔ)單元中的數(shù)據(jù)丟棄,并將所述上一存儲(chǔ)單元的上一級(jí)存儲(chǔ)單元作為當(dāng)前存儲(chǔ)單元并執(zhí)行步驟A。
[0008]一種寫(xiě)入數(shù)據(jù)的裝置,所述裝置包括:
寫(xiě)入判斷單元,用于判斷是否為第一次寫(xiě)操作;
操作單元,用于當(dāng)所述寫(xiě)入判斷單元確定是第一次寫(xiě)操作時(shí),則在當(dāng)前存儲(chǔ)單元中的起始頁(yè)中寫(xiě)入下一存儲(chǔ)單元的起始地址信息;當(dāng)所述寫(xiě)入判斷單元確定不是第一次寫(xiě)操作時(shí),在所述起始頁(yè)中寫(xiě)入下一存儲(chǔ)單元的起始地址信息以及上一存儲(chǔ)單元的起始地址信
肩、O
[0009]一種檢測(cè)數(shù)據(jù)的裝置,所述裝置包括:
檢測(cè)判斷單元,用于判斷當(dāng)前存儲(chǔ)單元中的數(shù)據(jù)是否正確;以及,判斷上一存儲(chǔ)單元的起始地址信息所指向的數(shù)據(jù)是否正確;
處理單元,用于當(dāng)所述檢測(cè)判斷單元確定所述當(dāng)前存儲(chǔ)單元中的數(shù)據(jù)正確時(shí),找到當(dāng)前頁(yè)所在的當(dāng)前存儲(chǔ)單元的起始頁(yè),從該起始頁(yè)中提取上一存儲(chǔ)單元的起始地址信息,并丟棄當(dāng)前存儲(chǔ)單元中的數(shù)據(jù);當(dāng)所述檢測(cè)判斷單元確定上一存儲(chǔ)單元的起始地址信息所指向的數(shù)據(jù)不正確時(shí),將所述上一存儲(chǔ)單元中的數(shù)據(jù)丟棄,并將所述上一存儲(chǔ)單元的上一級(jí)存儲(chǔ)單元作為當(dāng)前存儲(chǔ)單元。
[0010]可見(jiàn)采用本發(fā)明實(shí)施例提供的一種寫(xiě)入方法,如果是第一次寫(xiě)操作只需在本次寫(xiě)操作所需的存儲(chǔ)單元中寫(xiě)入下一次寫(xiě)操作所需的存儲(chǔ)單元的起始地址信息;如果不是第一次寫(xiě)操作,需在本次寫(xiě)操作所需的存儲(chǔ)單元中寫(xiě)入下一次寫(xiě)操作所需的存儲(chǔ)單元的起始地址信息,以及上一次寫(xiě)操作所需的存儲(chǔ)單元的起始地址信息;在本發(fā)明提供的寫(xiě)入方法的基礎(chǔ)上提供一種檢測(cè)方法,當(dāng)檢測(cè)出當(dāng)前數(shù)據(jù)有誤時(shí),找到在當(dāng)前存儲(chǔ)單元的起始頁(yè)中所保存的上次寫(xiě)操作所需的存儲(chǔ)單元的起始地址信息,同時(shí)丟棄當(dāng)前存儲(chǔ)單元中的數(shù)據(jù);然后檢測(cè)上次寫(xiě)操作所需的存儲(chǔ)單元的起始地址信息所對(duì)應(yīng)的數(shù)據(jù)是否正確,如果不正確則繼續(xù)進(jìn)行查找再上一級(jí)存儲(chǔ)單元的地址信息,丟棄當(dāng)前存儲(chǔ)單元的數(shù)據(jù),直到找到正確數(shù)據(jù)為止,可見(jiàn)該方法可以將錯(cuò)誤數(shù)據(jù)拋棄留下正確數(shù)據(jù),可避免由于突然斷電或者系統(tǒng)出錯(cuò)的情況下保留了錯(cuò)誤數(shù)據(jù)的問(wèn)題存在,而當(dāng)系統(tǒng)恢復(fù)正常時(shí)由于使用該錯(cuò)誤數(shù)據(jù)而導(dǎo)致的系統(tǒng)文件損壞不能正常運(yùn)行的情況出現(xiàn)。該方法更加適用于原子寫(xiě)操作等此類不可出現(xiàn)錯(cuò)誤數(shù)據(jù)的情況下。
【專利附圖】

【附圖說(shuō)明】
[0011]為了更清楚地說(shuō)明本發(fā)明或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹。
[0012]圖1為現(xiàn)有技術(shù)中數(shù)據(jù)以MLC NandFlash方式存放的存儲(chǔ)結(jié)構(gòu)圖;
圖2為現(xiàn)有技術(shù)中存儲(chǔ)原子寫(xiě)操作的數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)圖;
圖3為本發(fā)明實(shí)施例提供的寫(xiě)入數(shù)據(jù)的方法流程圖;
圖4為本發(fā)明實(shí)施例提供的檢測(cè)數(shù)據(jù)的方法流程圖;
圖5為本發(fā)明實(shí)施例提供的通過(guò)原子寫(xiě)操作后的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)圖; 圖6本發(fā)明實(shí)施例提供的寫(xiě)入數(shù)據(jù)的裝置結(jié)構(gòu)圖;
圖7本發(fā)明實(shí)施例提供的檢測(cè)數(shù)據(jù)的裝置結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0013]為了使本【技術(shù)領(lǐng)域】的人員更好地理解本發(fā)明實(shí)施例中的技術(shù)方案,并使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖對(duì)本發(fā)明中技術(shù)方案作進(jìn)一步詳細(xì)的說(shuō)明。
[0014]本發(fā)明實(shí)施例提供的一種寫(xiě)入方法,如果是第一次寫(xiě)操作只需在本次寫(xiě)操作所需的存儲(chǔ)單元中寫(xiě)入下一次寫(xiě)操作所需的存儲(chǔ)單元的起始地址信息;如果不是第一次寫(xiě)操作,需在本次寫(xiě)操作所需的存儲(chǔ)單元中寫(xiě)入下一次寫(xiě)操作所需的存儲(chǔ)單元的起始地址信息,以及上一次寫(xiě)操作所需的存儲(chǔ)單元的起始地址信息;在本發(fā)明提供的寫(xiě)入方法的基礎(chǔ)上提供一種檢測(cè)方法,當(dāng)檢測(cè)出當(dāng)前數(shù)據(jù)有誤時(shí),找到在當(dāng)前存儲(chǔ)單元的起始頁(yè)中所保存的上次寫(xiě)操作所需的存儲(chǔ)單元的起始地址信息,同時(shí)丟棄當(dāng)前存儲(chǔ)單元中的數(shù)據(jù);然后檢測(cè)上次寫(xiě)操作所需的存儲(chǔ)單元的起始地址信息所對(duì)應(yīng)的數(shù)據(jù)是否正確,如果不正確則繼續(xù)進(jìn)行查找再上一級(jí)存儲(chǔ)單元的地址信息,丟棄當(dāng)前存儲(chǔ)單元的數(shù)據(jù),直到找到正確數(shù)據(jù)為止,可見(jiàn)該方法可以將錯(cuò)誤數(shù)據(jù)拋棄留下正確數(shù)據(jù),可避免由于突然斷電或者系統(tǒng)出錯(cuò)的情況下保留了錯(cuò)誤數(shù)據(jù)的問(wèn)題存在,而當(dāng)系統(tǒng)恢復(fù)正常時(shí)由于使用該錯(cuò)誤數(shù)據(jù)而導(dǎo)致的系統(tǒng)文件損壞不能正常運(yùn)行的情況出現(xiàn)。該方法更加適用于原子寫(xiě)操作等此類不可出現(xiàn)錯(cuò)誤數(shù)據(jù)的情況。
[0015]如圖3所示,寫(xiě)入數(shù)據(jù)的具體過(guò)程如下:
步驟31,步驟判斷是否為第一次寫(xiě)操作,如果是執(zhí)行步驟32 ;如果不是,執(zhí)行步驟33 ; 步驟32,在當(dāng)前存儲(chǔ)單元中的起始頁(yè)中寫(xiě)入下一存儲(chǔ)單元的起始地址信息;
步驟33,在所述起始頁(yè)中寫(xiě)入下一存儲(chǔ)單元的起始地址信息以及上一存儲(chǔ)單元的起始地址信息;
其中當(dāng)前存儲(chǔ)單元與所述下一存儲(chǔ)單元中的數(shù)據(jù)相對(duì)應(yīng)。
[0016]其中所述當(dāng)前存儲(chǔ)單元中包括多個(gè)連續(xù)的頁(yè);所述下一存儲(chǔ)單元中包括多個(gè)連續(xù)的頁(yè);且所述當(dāng)前存儲(chǔ)單元中的頁(yè)與所述下一存儲(chǔ)單元中的頁(yè)所存儲(chǔ)的數(shù)據(jù)一一對(duì)應(yīng)。
[0017]如圖4所示,檢測(cè)數(shù)據(jù)的具體過(guò)程如下:
步驟41,判斷當(dāng)前存儲(chǔ)單元中的數(shù)據(jù)是否正確,如果正確則確定文件未被損壞;如果不正確,執(zhí)行步驟42,
步驟42,找到當(dāng)前頁(yè)所在的當(dāng)前存儲(chǔ)單元的起始頁(yè),從該起始頁(yè)中提取上一存儲(chǔ)單元的起始地址信息,并丟棄當(dāng)前存儲(chǔ)單元中的數(shù)據(jù);
步驟43,判斷上一存儲(chǔ)單元的起始地址信息所指向的數(shù)據(jù)是否正確,如果正確則停止檢查;如果不正確,執(zhí)行步驟44 ;
步驟44,將所述上一存儲(chǔ)單元中的數(shù)據(jù)丟棄,并將所述上一存儲(chǔ)單元的上一級(jí)存儲(chǔ)單元作為當(dāng)前存儲(chǔ)單元并執(zhí)行步驟41。
[0018]具體的,判斷當(dāng)前存儲(chǔ)單元中的數(shù)據(jù)是否正確包括:
判斷當(dāng)前存儲(chǔ)單元中的每一頁(yè)所存儲(chǔ)的數(shù)據(jù)是否正確,并將存有錯(cuò)誤數(shù)據(jù)的頁(yè)標(biāo)記為錯(cuò)誤頁(yè)。[0019]具體的,判斷上一存儲(chǔ)單元的起始地址信息所指向的數(shù)據(jù)是否正確包括:
判斷上一存儲(chǔ)單元的起始地址信息所指向的連續(xù)頁(yè)中的與所述錯(cuò)誤頁(yè)相對(duì)應(yīng)的頁(yè)中
的數(shù)據(jù)是否正確。
[0020]以下以具體實(shí)施例進(jìn)行介紹:
實(shí)施例一:
參考圖5,本發(fā)明實(shí)施例提供一種寫(xiě)入數(shù)據(jù)的方法,該方法與后續(xù)的一種檢測(cè)數(shù)據(jù)的方法相結(jié)合使用,可避免由于突然斷電或者系統(tǒng)出錯(cuò)而導(dǎo)致寫(xiě)入的文件被破壞等問(wèn)題產(chǎn)生;原子寫(xiě)操作是一種不可被打斷的操作,該操作要么成功,要么失敗,所以當(dāng)系統(tǒng)突然斷電或者出錯(cuò)時(shí)將會(huì)對(duì)原子寫(xiě)操作產(chǎn)生致命的破壞,而本發(fā)明實(shí)施例提供的寫(xiě)入數(shù)據(jù)方法以及檢測(cè)數(shù)據(jù)的方法,對(duì)類似于原子寫(xiě)操作的操作能夠很好地避免文件因突發(fā)問(wèn)題而被破壞;具體的為了方便介紹此處以在MLC NandFlash中進(jìn)行原子寫(xiě)操作為例,寫(xiě)入數(shù)據(jù)方法的具體過(guò)程如下:
步驟一,判斷是否為第一次寫(xiě)操作,如果是執(zhí)行步驟二 ;否則執(zhí)行步驟三;
本步驟中當(dāng)開(kāi)始進(jìn)行原子寫(xiě)操作時(shí),文件系統(tǒng)自動(dòng)判斷本次原子寫(xiě)操作是否為第一次寫(xiě)操作;
步驟二,在當(dāng)前存儲(chǔ)單元中的起始頁(yè)中寫(xiě)入下一存儲(chǔ)單元的起始地址信息;
此時(shí)當(dāng)前存儲(chǔ)單元包括PageO至Page6,其中PageO作為起始頁(yè)用于存放下一存儲(chǔ)單元的起始地址信息;
此時(shí)下一存儲(chǔ)單元包括Page7至Pagel3,則起始地址信息為Page7的地址信息ID7 ;步驟三,在當(dāng)前存儲(chǔ)單元的起始頁(yè)中寫(xiě)入下一存儲(chǔ)單元的起始地址信息以及上一存儲(chǔ)單元的起始地址信息;
即在PageO中寫(xiě)入ID7以及上一存儲(chǔ)單元的起始地址信息IDN ;
步驟四,判斷是否寫(xiě)完所有數(shù)據(jù),如果不是繼續(xù)執(zhí)行步驟三直到完成寫(xiě)操作;
本實(shí)施例中當(dāng)前存儲(chǔ)單元中包括多個(gè)連續(xù)的頁(yè);下一存儲(chǔ)單元中也包括多個(gè)連續(xù)的頁(yè);且所述當(dāng)前存儲(chǔ)單元中的頁(yè)與所述下一存儲(chǔ)單元中的頁(yè)所存儲(chǔ)的數(shù)據(jù)一一對(duì)應(yīng)。即Pagel至Page8中的數(shù)據(jù)相對(duì)應(yīng),Page2至Page9中的數(shù)據(jù)相對(duì)應(yīng)以此類推。
[0021]實(shí)施例二:
本發(fā)明實(shí)施例提供一種檢測(cè)數(shù)據(jù)的方法,該方法在實(shí)施例一提供的寫(xiě)入數(shù)據(jù)的方法基礎(chǔ)之上,進(jìn)行數(shù)據(jù)正確性的檢測(cè),該方法尤其適合類似于原子寫(xiě)操作的操作,能夠很好地避免文件因突發(fā)問(wèn)題而被破壞;具體的為了方便介紹此處以在MLC NandFlash中進(jìn)行原子寫(xiě)操作為例,檢測(cè)數(shù)據(jù)方法的具體過(guò)程如下:
步驟A,在系統(tǒng)啟動(dòng)或者再次恢復(fù)正常時(shí)按序檢測(cè)上一次寫(xiě)操作中斷時(shí)所處的MLCNandFlash中每一頁(yè)的數(shù)據(jù)是否正確;即判斷當(dāng)前存儲(chǔ)單元中的數(shù)據(jù)是否正確,如果不正確執(zhí)行步驟B ;否則執(zhí)行步驟C ;此時(shí)當(dāng)前存儲(chǔ)單元為上一次寫(xiě)操作中斷時(shí)所在的存儲(chǔ)單元;判斷當(dāng)前存儲(chǔ)單元中的數(shù)據(jù)是否正確具體包括:
判斷當(dāng)前存儲(chǔ)單元中的每一頁(yè)所存儲(chǔ)的數(shù)據(jù)是否正確,并將存有錯(cuò)誤數(shù)據(jù)的頁(yè)標(biāo)記為錯(cuò)誤頁(yè);本步驟中以檢測(cè)上一次寫(xiě)操作中斷在Page9所在的存儲(chǔ)單元為例,系統(tǒng)依次檢查Page7至Pagel3中的數(shù)據(jù),此時(shí)發(fā)現(xiàn)Page9中保存了錯(cuò)誤數(shù)據(jù),則執(zhí)行步驟D ;
Page7中包括上一級(jí)存儲(chǔ)單元的起始地址信息IDO以及下一級(jí)存儲(chǔ)單元的起始地址信息 IDS ;
步驟C,則認(rèn)為至此為止的原子寫(xiě)操作所寫(xiě)入的文件未被破壞;
步驟D,找到當(dāng)前頁(yè)所在的當(dāng)前存儲(chǔ)單元的起始頁(yè),從該起始頁(yè)中提取上一存儲(chǔ)單元的起始地址信息,并丟棄當(dāng)前存儲(chǔ)單元中的數(shù)據(jù);
本步驟中,由于發(fā)現(xiàn)Page9中的數(shù)據(jù)是錯(cuò)誤的,則將Page9作為錯(cuò)誤頁(yè),并找到Page9所在的存儲(chǔ)單元的起始頁(yè)即Page7,并從中提取出IDO,并將Page7至Page 13中的數(shù)據(jù)丟棄;
步驟E,判斷上一存儲(chǔ)單元的起始地址信息所指向的數(shù)據(jù)是否正確,如果正確執(zhí)行步驟C,否則執(zhí)行步驟F ;
依次判斷以IDO為起始頁(yè)的PageO至Page6中的數(shù)據(jù)是否正確,正確執(zhí)行步驟C,否則執(zhí)行步驟F ;
步驟F,將上一存儲(chǔ)單元中的數(shù)據(jù)丟棄,即將PageO至Page6中的數(shù)據(jù)丟棄;并將該上一存儲(chǔ)單元的上一級(jí)存儲(chǔ)單元即PageN所在存儲(chǔ)單元作為當(dāng)前存儲(chǔ)單元并執(zhí)行步驟E,直到檢查不出錯(cuò)誤數(shù)據(jù)為止。
[0022]本實(shí)施例中,所述判斷上一存儲(chǔ)單元的起始地址信息所指向的數(shù)據(jù)是否正確包括:
判斷上一存儲(chǔ)單元的起始地址信息所指向的連續(xù)頁(yè)中的與所述錯(cuò)誤頁(yè)相對(duì)應(yīng)的頁(yè)中的數(shù)據(jù)是否正確,即判斷與Page9相對(duì)應(yīng)的Page2所包含的數(shù)據(jù)是否正確。
[0023]如圖6所示,本發(fā)明實(shí)施例的寫(xiě)入數(shù)據(jù)裝置如下:
一種寫(xiě)入數(shù)據(jù)的裝置,所述裝置包括:
寫(xiě)入判斷單元61,用于判斷是否為第一次寫(xiě)操作;
操作單元62,用于當(dāng)所述寫(xiě)入判斷單元61確定是第一次寫(xiě)操作時(shí),則在當(dāng)前存儲(chǔ)單元中的起始頁(yè)中寫(xiě)入下一存儲(chǔ)單元的起始地址信息;當(dāng)所述寫(xiě)入判斷單元61確定不是第一次寫(xiě)操作時(shí),在所述起始頁(yè)中寫(xiě)入下一存儲(chǔ)單元的起始地址信息以及上一存儲(chǔ)單元的起始地址信息。
[0024]所述當(dāng)前存儲(chǔ)單元中包括多個(gè)連續(xù)的頁(yè);
所述下一存儲(chǔ)單元中包括多個(gè)連續(xù)的頁(yè);
且所述當(dāng)前存儲(chǔ)單元中的頁(yè)與所述下一存儲(chǔ)單元中的頁(yè)所存儲(chǔ)的數(shù)據(jù)一一對(duì)應(yīng)。
[0025]如圖7所示,本發(fā)明實(shí)施例提供的檢測(cè)數(shù)據(jù)的裝置如下:
一種檢測(cè)數(shù)據(jù)的裝置,所述裝置包括:
檢測(cè)判斷單元71,用于判斷當(dāng)前存儲(chǔ)單元中的數(shù)據(jù)是否正確;以及,判斷上一存儲(chǔ)單元的起始地址信息所指向的數(shù)據(jù)是否正確;
處理單元72,用于當(dāng)所述檢測(cè)判斷單元71確定所述當(dāng)前存儲(chǔ)單元中的數(shù)據(jù)正確時(shí),找到當(dāng)前頁(yè)所在的當(dāng)前存儲(chǔ)單元的起始頁(yè),從該起始頁(yè)中提取上一存儲(chǔ)單元的起始地址信息,并丟棄當(dāng)前存儲(chǔ)單元中的數(shù)據(jù);當(dāng)所述檢測(cè)判斷單元71確定上一存儲(chǔ)單元的起始地址信息所指向的數(shù)據(jù)不正確時(shí),將所述上一存儲(chǔ)單元中的數(shù)據(jù)丟棄,并將所述上一存儲(chǔ)單元的上一級(jí)存儲(chǔ)單元作為當(dāng)前存儲(chǔ)單元。
[0026]所述檢測(cè)判斷單元71具體用于:
判斷當(dāng)前存儲(chǔ)單元中的每一頁(yè)所存儲(chǔ)的數(shù)據(jù)是否正確,并將存有錯(cuò)誤數(shù)據(jù)的頁(yè)標(biāo)記為錯(cuò)誤頁(yè)。
[0027]所述檢測(cè)判斷單元71具體用于:判斷上一存儲(chǔ)單元的起始地址信息所指向的連續(xù)頁(yè)中的與所述錯(cuò)誤頁(yè)相對(duì)應(yīng)的頁(yè)中的數(shù)據(jù)是否正確。
[0028]綜上所述,有£fL效果:
采用本發(fā)明實(shí)施例提供的一種寫(xiě)入方法,如果是第一次寫(xiě)操作只需在本次寫(xiě)操作所需的存儲(chǔ)單元中寫(xiě)入下一次寫(xiě)操作所需的存儲(chǔ)單元的起始地址信息;如果不是第一次寫(xiě)操作,需在本次寫(xiě)操作所需的存儲(chǔ)單元中寫(xiě)入下一次寫(xiě)操作所需的存儲(chǔ)單元的起始地址信息,以及上一次寫(xiě)操作所需的存儲(chǔ)單元的起始地址信息;在本發(fā)明提供的寫(xiě)入方法的基礎(chǔ)上提供一種檢測(cè)方法,當(dāng)檢測(cè)出當(dāng)前數(shù)據(jù)有誤時(shí),找到在當(dāng)前存儲(chǔ)單元的起始頁(yè)中所保存的上次寫(xiě)操作所需的存儲(chǔ)單元的起始地址信息,同時(shí)丟棄當(dāng)前存儲(chǔ)單元中的數(shù)據(jù);然后檢測(cè)上次寫(xiě)操作所需的存儲(chǔ)單元的起始地址信息所對(duì)應(yīng)的數(shù)據(jù)是否正確,如果不正確則繼續(xù)進(jìn)行查找再上一級(jí)存儲(chǔ)單元的地址信息,丟棄當(dāng)前存儲(chǔ)單元的數(shù)據(jù),直到找到正確數(shù)據(jù)為止,可見(jiàn)該方法可以將錯(cuò)誤數(shù)據(jù)拋棄留下正確數(shù)據(jù),可避免由于突然斷電或者系統(tǒng)出錯(cuò)的情況下保留了錯(cuò)誤數(shù)據(jù)的問(wèn)題存在,而當(dāng)系統(tǒng)恢復(fù)正常時(shí)由于使用該錯(cuò)誤數(shù)據(jù)而導(dǎo)致的系統(tǒng)文件損壞不能正常運(yùn)行的情況出現(xiàn)。該方法更加適用于原子寫(xiě)操作等此類不可出現(xiàn)錯(cuò)誤數(shù)據(jù)的情況。
[0029]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任 何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種寫(xiě)入數(shù)據(jù)的方法,其特征在于,所述方法包括: 判斷是否為第一次寫(xiě)操作,如果是,則在當(dāng)前存儲(chǔ)單元中的起始頁(yè)中寫(xiě)入下一存儲(chǔ)單元的起始地址信息;如果不是,在所述起始頁(yè)中寫(xiě)入下一存儲(chǔ)單元的起始地址信息以及上一存儲(chǔ)單元的起始地址信息。
2.如權(quán)利要求1中所述的方法,其特征在于,所述當(dāng)前存儲(chǔ)單元中包括多個(gè)連續(xù)的頁(yè); 所述下一存儲(chǔ)單元中包括多個(gè)連續(xù)的頁(yè); 且所述當(dāng)前存儲(chǔ)單元中的頁(yè)與所述下一存儲(chǔ)單元中的頁(yè)所存儲(chǔ)的數(shù)據(jù)一一對(duì)應(yīng)。
3.—種檢測(cè)數(shù)據(jù)的方法,其特征在于,所述方法包括: 步驟A,判斷當(dāng)前存儲(chǔ)單元中的數(shù)據(jù)是否正確,如果不正確,找到當(dāng)前頁(yè)所在的當(dāng)前存儲(chǔ)單元的起始頁(yè),從該起始頁(yè)中提取上一存儲(chǔ)單元的起始地址信息,并丟棄當(dāng)前存儲(chǔ)單元中的數(shù)據(jù); 步驟B,判斷上一存儲(chǔ)單元的起始地址信息所指向的數(shù)據(jù)是否正確,如果不正確,將所述上一存儲(chǔ)單元中的數(shù)據(jù)丟棄,并將所述上一存儲(chǔ)單元的上一級(jí)存儲(chǔ)單元作為當(dāng)前存儲(chǔ)單元并執(zhí)行步驟A。
4.如權(quán)利要 求3所述的方法,其特征在于,所述判斷當(dāng)前存儲(chǔ)單元中的數(shù)據(jù)是否正確包括: 判斷當(dāng)前存儲(chǔ)單元中的每一頁(yè)所存儲(chǔ)的數(shù)據(jù)是否正確,并將存有錯(cuò)誤數(shù)據(jù)的頁(yè)標(biāo)記為錯(cuò)誤頁(yè)。
5.如權(quán)利要求4所述的方法,其特征在于,所述判斷上一存儲(chǔ)單元的起始地址信息所指向的數(shù)據(jù)是否正確包括: 判斷上一存儲(chǔ)單元的起始地址信息所指向的連續(xù)頁(yè)中的與所述錯(cuò)誤頁(yè)相對(duì)應(yīng)的頁(yè)中的數(shù)據(jù)是否正確。
6.一種寫(xiě)入數(shù)據(jù)的裝置,其特征在于,所述裝置包括: 寫(xiě)入判斷單元,用于判斷是否為第一次寫(xiě)操作; 操作單元,用于當(dāng)所述寫(xiě)入判斷單元確定是第一次寫(xiě)操作時(shí),則在當(dāng)前存儲(chǔ)單元中的起始頁(yè)中寫(xiě)入下一存儲(chǔ)單元的起始地址信息;當(dāng)所述寫(xiě)入判斷單元確定不是第一次寫(xiě)操作時(shí),在所述起始頁(yè)中寫(xiě)入下一存儲(chǔ)單元的起始地址信息以及上一存儲(chǔ)單元的起始地址信肩、O
7.如權(quán)利要求6中所述的裝置,其特征在于,所述當(dāng)前存儲(chǔ)單元中包括多個(gè)連續(xù)的頁(yè); 所述下一存儲(chǔ)單元中包括多個(gè)連續(xù)的頁(yè); 且所述當(dāng)前存儲(chǔ)單元中的頁(yè)與所述下一存儲(chǔ)單元中的頁(yè)所存儲(chǔ)的數(shù)據(jù)一一對(duì)應(yīng)。
8.—種檢測(cè)數(shù)據(jù)的裝置,其特征在于,所述裝置包括: 檢測(cè)判斷單元,用于判斷當(dāng)前存儲(chǔ)單元中的數(shù)據(jù)是否正確;以及,判斷上一存儲(chǔ)單元的起始地址信息所指向的數(shù)據(jù)是否正確; 處理單元,用于當(dāng)所述檢測(cè)判斷單元確定所述當(dāng)前存儲(chǔ)單元中的數(shù)據(jù)正確時(shí),找到當(dāng)前頁(yè)所在的當(dāng)前存儲(chǔ)單元的起始頁(yè),從該起始頁(yè)中提取上一存儲(chǔ)單元的起始地址信息,并丟棄當(dāng)前存儲(chǔ)單元中的數(shù)據(jù);當(dāng)所述檢測(cè)判斷單元確定上一存儲(chǔ)單元的起始地址信息所指向的數(shù)據(jù)不正確時(shí),將所述上一存儲(chǔ)單元中的數(shù)據(jù)丟棄,并將所述上一存儲(chǔ)單元的上一級(jí)存儲(chǔ)單元作為當(dāng)前存儲(chǔ)單元。
9.如權(quán)利要求8所述的裝置,其特征在于,所述檢測(cè)判斷單元具體用于: 判斷當(dāng)前存儲(chǔ)單元中的每一頁(yè)所存儲(chǔ)的數(shù)據(jù)是否正確,并將存有錯(cuò)誤數(shù)據(jù)的頁(yè)標(biāo)記為錯(cuò)誤頁(yè)。
10.如權(quán)利要求9所述的裝置,其特征在于,所述檢測(cè)判斷單元具體用于:判斷上一存儲(chǔ)單元的起始地址 信息所指向的連續(xù)頁(yè)中的與所述錯(cuò)誤頁(yè)相對(duì)應(yīng)的頁(yè)中的數(shù)據(jù)是否正確。
【文檔編號(hào)】G06F12/02GK104035883SQ201410283450
【公開(kāi)日】2014年9月10日 申請(qǐng)日期:2014年6月23日 優(yōu)先權(quán)日:2014年6月23日
【發(fā)明者】邱東升 申請(qǐng)人:北京君正集成電路股份有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
惠东县| 莎车县| 嘉善县| 长顺县| 客服| 穆棱市| 略阳县| 交口县| 北川| 泉州市| 东兰县| 荃湾区| 长兴县| 鹰潭市| 荣昌县| 灵武市| 东乌| 偏关县| 英吉沙县| 天气| 南溪县| 成武县| 都安| 来凤县| 浮梁县| 湾仔区| 汤阴县| 淳化县| 黔西县| 武川县| 阳高县| 德兴市| 宁陵县| 旬邑县| 梁平县| 原平市| 郑州市| 华阴市| 彭阳县| 东城区| 九台市|