讀書筆記----深入理解WinCE

 張冬泉老師的《wince 實用開發技術》讀書筆記。

1、系統架構

CE被設計爲一種分層結構,從底層向上分別爲硬件層、OEM層、操作系統層和應用層。

OEM層由如下模塊組成:OALOEM適配層)、啓動加載程序(Bootloader)、配置文件和驅動程序。

OEM層的代碼構成中主要由CSPBSP代碼組成。CSP支持不同的微處理器體系結構,而BSP支持不同的微處理器擴展和外設,它由BootloaderOAL和驅動程序組成。

2、文件系統

CE的文件系統和數據存儲都指的是對象存儲,對象存儲是CE的默認文件系統,它相當於CE設備上的硬盤。

對象存儲是由共享一個內存堆的文件系統、數據庫和註冊表組成的。

CE下沒有盤符的概念,每個存儲設備或存儲設備分區都是根(/)下的一個目錄。

 

對象存儲大小限制爲256MRAM,對象存儲具有壓縮屬性,所以實際能夠包含的數據量可以達到512M

對象存儲大小是可調整的。

 

CE提供三種類型的文件系統:

基於ROM的文件系統

基於RAM的文件系統

FAT文件系統

另外開發者也可以創建和註冊屬性文件系統。

 

CE的註冊表是一個系統數據庫,用來存儲關於應用程序、驅動程序、用戶配置及其它配置的數據。

CE文件系統和所有與文件相關的操作都是通過Filesys.exe進程進行管理的,通常將它稱爲文件管理器。

文件管理器實現了對象存儲和存儲管理,並將所有文件系統統一到一個根“/”下面的單個系統中。

3、內存管理

CE是一個保護模式的32位操作系統,它的程序訪問只能使用虛擬內存。

CE中有兩種類型的地址:物理地址和映射的虛擬地址。

 

用戶地址空間被分爲6432Mslot,所能進程分享這個地址空間。

CE內核中,slot是虛擬地址維護的基本單元。在從slot0slot6364slot中,前面的33個用於進程,剩下的slot用於對象存儲、內存映射和資源映射。Slot0是一個特殊的slot,它對應當前正在運行的進程。Slot1slot33每一個都代表一個當前正在運行的進程。

4、系統調度

CE支持兩種類型的模塊:應用程序(以.exe爲擴展名)和動態鏈接庫(以.dll爲擴展名)。

CE加載一個應用程序時,它就產生了一個進程,一個進程就是一個應用程序的實例。

每個進程都有自己受保護的32M地址空間。

每個進程至少有一個線程,但也可能有多個線程,線程是執行在一個進程之內的代碼。

多個進程使用戶可以同時工作於多個應用程序,而多個線程可以使一個應用程序同時完成多個任務。

CE是一個搶佔式實時多任務的操作系統。

 

 

CE下的模塊由EXE文件和DLL文件組成。EXE是可以獨立加載的模塊;DLL不能獨立加載,它必須由一個正在運行的EXE模塊或另一個DLL模塊加載。

DLL有兩種加載方式:隱式加載方式和顯式加載方式。

 

CE是一個多進程操作系統,並支持最多32個進程。

CE啓動時會加載4個進程:NK.exeFilesys.exeGWESDevice.exe。在實際使用時還會加載幾個別的進程,如shell進程等,所以用戶可加載的實際進程數約爲24個左右。若不夠用可以考慮使用多線程代替使用多進程。

一個進程可以創建若干進程,這是沒有上限的,但它也受設備實際可用RAM及線程棧可用進程地址空間的約束。

啓動一個進程的方式:

第一種:系統啓動時由系統自動加載。

第二種:系統啓動後通過操作鍵盤或鼠標可視地去進行加載。

第三種:是隱式加載方式,即通過一個正在運行的進程加載啓動另一個進程。

 

一個進程就是一個可執行單元,當操作系統創建一個進程時,同時也會創建一個線程,使用線程是爲了儘可能有效地利用CPU時間。

線程有5種狀態,分別爲:運行、掛起、休眠、阻塞和終止。

CE支持0~255256個優先級,其中0優先級最高,255優先級最低。

每個線程都有自己的優先級。

CE系統是根據線程的優先級和線程量來調度每一個線程的。

線程量是分配給線程運行一次佔用的CPU時間片。

爲了設置和獲得一個線程的優先級,可以使用CeSetThreadPriority函數和CeGetThreadPriority函數。

當創建一個線程而沒有設置優先級時,其優先級默認爲251

CE支持線程優先級倒置。

線程量是線程在一個CPU時間片的持續時間。

每個CE系統都有一個默認的線程量,通常是100ms,但是OEM可以改這個默認值。通過在OALOemInit函數中設置dwDefaultThreadQuantum全局變量的值來達到。默認線程量必須大於0

每個線程都可以通過調用CeSetThreadQuantum函數設置自己的線程量。

 

纖程是另一個可以在應用程序中使用的多線程對象。

爲了協調各個線程的活動CE中引入了同步對象,它包括:關鍵區、信號量、互斥體、事件、互鎖函數及點對點消息隊列。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章