winceObject Storage Service(Object Store) by 斜風細雨 QQ:253786989
2011-10-16
對於Object Store的認識一直是模模糊糊,看了下微軟的文檔,不知道自己的理解是否貼切。
在構建wince作業系統的時候,可以選擇RAM and ROM File System作為內部檔案系統。這樣在系統啟動之後的根目錄(\),是作為基於RAM的檔案系統掛載的,所以儲存到\目錄下的檔案和資料在系統冷啟動之後會丟失。
那Object Store包含哪些內容呢?主要就是上面提到的RAM檔案系統,資料庫,還有基於RAM的註冊表,它們合在一起構成了Object Store。可以把Object Store想象成一個RAM盤,可以用來儲存、讀寫檔案。
在物理上,Object Store儲存在非易失性的RAM晶片中,而且會有備電電池,可以在主電源掉電的情況下供電,所以儲存在Object Store中的內容可以在系統Code Restart之後仍然儲存住。這是微軟的意思,但是通常我們的硬體板上都沒有這個RAM的backup power,所以在系統冷啟動之後,儲存在系統根目錄下的內容會丟失掉。現在很多wince系統為了放在根目錄下的內容能夠持久儲存,會選擇ROM-only File System + Hive註冊表,這樣最大的好處是使用者通過cab包安裝的軟體在系統冷啟動之後仍然不會丟失,仍然可以使用。
對於作業系統來說,它使用Object Store主要完成以下任務:
1 管理stack和memory heap。
2 在需要時壓縮或者擴充檔案。
3 無縫整合(Seamlessly integrate)基於ROM的應用程式和基於RAM的資料。
Object Store中的資料存放區機制是基於事務(transaction-based)的,這裡是借用了一個資料庫中的概念。事務具有4個屬性:原子性、一致性、隔離性、持久性。這四個屬性通常稱為ACID特性。也就是說,如果系統突然掉電了,那麼正在向Object Store中執行的寫操作,要麼將資料全部寫入,要麼恢複到寫之前的狀態,以保證Object Store中儲存的內容不被破壞。