備忘:這裡object
store應該理解為Object Storage Service區區比Object Storage Service區更為合適
1.
Object Storage Service區概述
WINCE裝置在更換主電池的時候,只要備用電池為RAM提供電源,那麼WINCEObject Storage Service區就能夠為應用程式和其資料提供持久儲存,在物理上,Object Storage Service區是儲存在非易失性RAM晶片中,這是微軟設計的目標。但是我們的WINCE裝置只有主電池,也沒有非易失性RAM晶片,所以在更換電池或是冷啟動的時候,儲存在根目錄下的檔案和資料都會丟失。
從概念上講,Object Storage Service區包含檔案系統、資料庫和系統註冊表這三種類型的持久性儲存,雖然檔案系統、資料庫和系統註冊表共用一個記憶體堆,從物理的角度上,但它們不一定儲存(reside)在Object Storage Service區上。它們可以儲存在ROM中,在獨立安裝的系統中,或是一個外部裝置中,比如flash存放裝置。資料的建立和檢索是通過儲存類型來實現的,這獨立於實際的存放裝置。
OS使用Object Storage Service區來執行下面任務:
⑴管理堆和記憶體棧
⑵必要時,壓縮和擴充檔案。
⑶無縫整合基於ROM的應用程式和基於RAM的資料。
Object Storage Service區中資料的儲存機制是互動的(transaction-based),如果在向Object Storage Service區中寫資料的時候,電源中斷了,WINCE要麼通過在系統重啟的時候完成此操作,要麼在中斷前通過恢複到最後已知的狀態,這樣WINCE確保Object Storage Service區沒有被損壞。對於系統檔案,包括註冊表設定,如果被定義用來儲存當前設定的系統沒有備份,這種機制意味著可以從ROM中重新載入原始的設定。
RAM檔案系統最大大小為128MB,單個檔案的最大大小是是32MB,在Object Storage Service區中支援最多大約為400萬個對象。
2.
對象和對象標示符(objects and objects identifiers)
一個對象被定義為以下類型之一:
⑴註冊表中的一個鍵
比如,[HKEY_CURRENT_USER\ControlPanel\PowerControl]
⑵註冊表中的一個值
比如[HKEY_CURRENT_USER\ControlPanel\PowerControl]
"PowerControlSelect"=dword:0
⑶一個檔案
⑷一個4KB塊大小的檔案資料,比如,一個包含12KB的檔案,它有一個檔案對象和3個4KB資料區塊的12KB的檔案,它們都是對象。
⑸資料庫中的一條記錄,最多可容納4KB的資料
⑹資料庫中一條記錄的擴充資訊,它可以是一個4KB的額外資料。
⑺一個資料庫
⑻一個資料庫卷(A
database volume)
WINCE為Object Storage Service區中每個對象指定一個唯一的CE標示符(CEOID),CEOID最主要的作用是用來訪問對象資料和擷取對象資料,比如訪問資料庫記錄。因為CEOID只是保證一個卷(volume)而不是在多個卷中對象標示符的唯一性,WINCE還需要為每個資料庫卷一個預定義的CE全球唯一標示符(CEGUID),使用CEGUID連同CEOID作為Object Storage Service區和資料庫卷中每個對象唯一標示符,訪問或是控制對象的任何資訊的第一步是要擷取一個對象的標示符。
3.
Object Storage Service區大小
Object Storage Service區最大為128MB,這Block Storage區可壓縮、非易失性和RAM儲存,Object Storage Service區的大小可以以用於應用程式和相關資料持久儲存的需求來定製大小,有下面三種的調整方式:
⑴在冷啟動的時候,通過使用config.bib設定檔的配置項FSRAMPERCENT來設定Object Storage Service區的預設大小。
⑵使用者可以通過使用控制台system下面移動滑動條來重新分配儲存記憶體(也就是Object Storage Service區)和程式記憶體的大小。
圖1
⑶一個信任的應用程式能夠調用SetSystemMemoryDivision函數來設定Object Storage Service區的大小。
對於暖開機,Object Storage Service區大小沒有改變,而只能被一個特權的運行時應用程式或是使用者通過控制台的應用來修改Object Storage Service區的大小。對於冷啟動,只有FSRAMPERCENT的設定沒變,那是因為它被編譯到ROM的鏡像檔案中,就算是一個持久的註冊表或是一個持久的檔案系統已經被掛載作為根檔案系統,也不會改變。比如,使用者使用控制台設定Object Storage Service區大小,接著使用者關閉裝置,然後重啟,如果持久化被使用,那麼所有使用者資料就存在。但是,Object Storage Service區還是被設定為預設的大小。