一種智能卡寫保護機制的實現(xiàn)
加入鏡像讀寫機制后,對存儲區(qū)的讀寫流程如下:
本文引用地址:http://m.butianyuan.cn/article/266050.htm 卡片的一般寫入流程如圖1所示,圖2為業(yè)務向文件中寫重要數(shù)據(jù)時的寫入流程。
業(yè)務應用中會有一些文件的寫操作,其中有一些數(shù)據(jù)比較重要,需要確保數(shù)據(jù)寫入的安全可靠。此時應用應該采用以下操作:
(1)設置鏡像寫保護標志位,此標志為全局變量。
(2)業(yè)務數(shù)據(jù)的寫入,這些業(yè)務可能分若干次寫入不同的文件。
(3)完成鏡像保護。該操作由三個過程組成,首先清除寫保護標志位,然后設置鏡像數(shù)據(jù)恢復標志,最后提交鏡像區(qū)數(shù)據(jù)將數(shù)據(jù)寫入實際物理地址并清除鏡像數(shù)據(jù)恢復標志。
應用在寫操作1、寫操作2和寫操作3過程中隨時可以放棄此次寫操作,已經(jīng)完成的寫操作不會對系統(tǒng)產(chǎn)生任何影響。這種寫操作的處理方法為系統(tǒng)實現(xiàn)事務回滾提供了基礎。
卡片在上電后會檢查鏡像數(shù)據(jù)恢復標志,決定是否回寫鏡像區(qū)數(shù)據(jù)。
現(xiàn)分析卡片斷電對系統(tǒng)的影響。
假設斷電發(fā)生在寫操作1和寫操作2之間,重新上電檢查鏡像數(shù)據(jù)恢復標志后,沒有數(shù)據(jù)需要恢復,系統(tǒng)對鏡像區(qū)初始化后正常工作。雖然數(shù)據(jù)寫入失敗但是保證了業(yè)務數(shù)據(jù)的不會混亂。
如果斷電發(fā)生在數(shù)據(jù)提交階段,此時鏡像數(shù)據(jù)恢復標志已經(jīng)置位,重新上電后系統(tǒng)會重新提交,成功后清除標志并初始化鏡像區(qū)。這樣保證數(shù)據(jù)在斷電情況下寫入成功。
以上描述了鏡像寫及掉電后數(shù)據(jù)恢復的過程。考慮這種情況,在業(yè)務進行中,如果數(shù)據(jù)寫了兩次,還沒有從鏡像區(qū)提交到實際地址區(qū),此時如果應用需要讀取文件內(nèi)容,該內(nèi)容如果恰好在鏡像區(qū)尚未提交,直接從對應物理地址讀數(shù)則會產(chǎn)生錯誤。所以鏡像機制還需要提供鏡像讀功能。
對于鏡像讀,根據(jù)目標數(shù)據(jù)的地址在數(shù)據(jù)讀取分三種情況處理:
(1)數(shù)據(jù)全部都在實際地址,直接從目標地址讀取數(shù)據(jù)。
(2)數(shù)據(jù)全部在鏡像區(qū),在鏡像區(qū)讀取數(shù)據(jù)。
(3)數(shù)據(jù)部分在鏡像區(qū),部分在實際地址。分別在不同位置讀取數(shù)據(jù)。
為了分辨數(shù)據(jù)所處位置,需要遍歷表2中所定義的寫保護管理表。
以上討論了鏡像讀寫的實現(xiàn)機制。下面說明加入該機制對系統(tǒng)性能的影響。
評論