本文主要講述智能卡系統(tǒng)的斷電保護(hù)和數(shù)據(jù)備份相關(guān)知識(shí),主要內(nèi)容如下圖,包括數(shù)據(jù)的備份、備份區(qū)的設(shè)計(jì)、均衡磨損技術(shù)以及數(shù)據(jù)恢復(fù)的時(shí)機(jī)等等。
一、數(shù)據(jù)備份的原因
在數(shù)據(jù)的一次寫(xiě)過(guò)程中,由于Flash物理特性,需要先擦除要改寫(xiě)的地址空間所在的頁(yè)面,每次擦除的物理頁(yè)面大小為512 Byte(假設(shè)一頁(yè)大小為512Byte)。智能卡由外部供電,如果在寫(xiě)過(guò)程中突然掉電,導(dǎo)致卡內(nèi)數(shù)據(jù)的丟失,就有可能導(dǎo)致COS崩潰或者用戶數(shù)據(jù)寫(xiě)入不正確。因此,COS必須提供掉電保護(hù)機(jī)制保證卡內(nèi)數(shù)據(jù)的讀寫(xiě)安全。
數(shù)據(jù)備份就是COS的掉電保護(hù)機(jī)制,在寫(xiě)入數(shù)據(jù)時(shí),將整個(gè)頁(yè)面?zhèn)浞莺笤俨脸龑?xiě)入,防止在改寫(xiě)過(guò)程中出現(xiàn)突然掉電,導(dǎo)致數(shù)據(jù)丟失。
二、數(shù)據(jù)備份的作用
備份機(jī)制設(shè)計(jì)的目的是采取一種措施,使COS在進(jìn)行寫(xiě)操作時(shí)將其作為一個(gè)原子操作來(lái)完成,不因突然掉電或者惡意拔出而丟失數(shù)據(jù),保證卡內(nèi)數(shù)據(jù)的一致性和安全性。
掉電保護(hù)的軟件措施主要包括兩部分:
一是設(shè)計(jì)系統(tǒng)的數(shù)據(jù)備份算法,在系統(tǒng)突然斷電之后,能有效地保存系統(tǒng)在數(shù)據(jù)更新前的正確運(yùn)行狀態(tài);
二是在供電復(fù)位之后根據(jù)備份的運(yùn)行狀態(tài)和數(shù)據(jù)及時(shí)恢復(fù),避免整個(gè)COS因關(guān)鍵數(shù)據(jù)丟失而崩潰。
三、數(shù)據(jù)備份區(qū)的位置
為了保證數(shù)據(jù)備份區(qū)的安全性,數(shù)據(jù)備份區(qū)一般選擇通過(guò)文件系統(tǒng)不能訪問(wèn)到的位置。
四、數(shù)據(jù)備份的時(shí)機(jī)
數(shù)據(jù)備份要在寫(xiě)操作之前進(jìn)行,這樣無(wú)論掉電發(fā)生在什么位置,備份區(qū)數(shù)據(jù)或者將要寫(xiě)入的地址區(qū)總有一個(gè)位置的數(shù)據(jù)時(shí)正確的。
五、備份的數(shù)據(jù)
有兩種備份數(shù)據(jù)的方式:
一是舊數(shù)據(jù)備份方式,優(yōu)點(diǎn)如果寫(xiě)時(shí)發(fā)生掉電,系統(tǒng)的數(shù)據(jù)丟失,可以通過(guò)備份將系統(tǒng)恢復(fù)到?jīng)]更新以前的狀態(tài)。
二是新數(shù)據(jù)備份方式,因?yàn)閭浞莸氖羌磳?xiě)入的新數(shù)據(jù),所以當(dāng)寫(xiě)時(shí)發(fā)生掉電導(dǎo)致系統(tǒng)的數(shù)據(jù)丟失,不可能將系統(tǒng)的狀態(tài)恢復(fù)到掉電之前的狀態(tài),只能到更新數(shù)據(jù)之后的狀態(tài)。
六、備份的關(guān)鍵
備份的關(guān)鍵是保證備份操作的原子性。
七、備份的種類
備份有兩種機(jī)制,一種是頁(yè)備份,另一種是日志備份(也有其他稱呼,如字節(jié)備份),這是兩種完全不同的機(jī)制。詳見(jiàn)第八條。
八、備份與恢復(fù)的原理
FLASH具有寫(xiě)入前必須整塊擦除的物理特性,所以在寫(xiě)之前必須對(duì)目標(biāo)地址和備份區(qū)進(jìn)行擦除。
在改寫(xiě)文件的數(shù)據(jù)時(shí)會(huì)遇到以下兩種情況(如圖):
一是需要寫(xiě)入的數(shù)據(jù)剛好在一