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