WINCE6.0操作系统---内核(kernel)学习
********************************LoongEmbedded********************************
作者:LoongEmbedded(kandi)
時間:2012.02.20
類別:WINCE系統開發
********************************LoongEmbedded********************************
?
備注:這里的內核指kernel,其表現形式為kernel.dll,OS指操作系統,core指核心。
?
圖1 WINCE6.0體系結構
1.????? kernel的組成和功能
WINCE6.0操作系統內(kernel)在代碼中的表現形式是kernel.dll(也就是kern.dll), WINCE5.0中內核的表現形式為NK.exe,而WINCE6.0中的NK.exe中僅僅包含一些OAL代碼和保持兼容性的程序了。
內核提供任何WINCE6.0設備的基本OS功能,這些基本功能包括進程、線程和內存管理,另外內核也提供一些文件管理功能、線程調度、實時性能、裝載器(loader)、系統調用、電源管理和OS提供的多種多樣的服務。內核服務(service)使應用程序可以使用這些核心(core)功能。
NK.exe是OAL層的進程,在OAL層啟動的過程中加載kernel.dll。使用內核進程和線程函數可以創建、終止、同步進程和線程,并且可以調度和掛起線程。進程是正在運行的程序(比如iexplore.exe)的單個實例,這樣使得同時可以運行多個程序,對于WINCE5.0來說能夠同時運行的進程是32個,假如我們同時打開多個Internet Explorer瀏覽器(對應一個iexplore.exe),那這時內存中就相應有多個瀏覽器的進程,所以WINCE5.0操作系統如果要應用在網絡系統,尤其是同時運行多進程的系統中并不是很好的選擇。WINCE6.0支持同時運行的進程數達到32000個,就基本不存在這方面應用的限制。線程使得程序一次可以執行多個任務,因為一個程序可以創建多個線程。線程優先等級、優先級繼承、中斷支持、和計時(timing)與調用也都是內核包含的功能。內核的所有功能共同為對時間要求很嚴格的系提供實時應用。
WINCE內核基于頁式虛擬內存系統(virtual-memory system)來管理和分配應用內存,虛擬內存系統提供連續的大小為64KB內存塊,每塊的大小為4KB,所以應用程序不需要管理內存的分配。如果一個應用程序需要使用小于64KB的內存,那么它可以使用局部堆(local heap)或是創建獨立的堆來提供內存空間。內核也要為每個新的進程或線程分配棧(stack)空間。
?
內核使用內存函數來分配和釋放虛擬內存,可以使用local堆和獨立堆的內存,可以從棧中分配內存,也可以使用裝載應用程序所需要分配但又沒有使用的靜態數據庫內存。而且進程可以使用內存映射對象(memory-mapped object)來共享數據。
?
2.????? Kernel.dll的編譯生成
在common.bib文件中可以找到下面的內容:
IF IMGPROFILER !
??? kernel.dll????? $(_FLATRELEASEDIR)\kern.dll???????????????? NK? SHZ
ENDIF IMGPROFILER !
可知kernel.dll實際就是kern.dll,那kern.dll在哪里生成的呢?沒有找到和kern.dll相關的sources文件,但在\WINCE600\PUBLIC\COMMON\CESYSGEN\makefile文件中,從下面的內容可以看到kern.dll是如何編譯生成的
圖2 指示生成kern.dll的makefile內容
總結
以上是生活随笔為你收集整理的WINCE6.0操作系统---内核(kernel)学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WINCE6.0体系结构学习
- 下一篇: WINCE---内核(kernel)--