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