劉懿嶙 謝長睿
摘要:Windows CE作為系統是為Windows家族中的新成員,是設計給掌上型電腦所使用的電腦環境。這樣的系統可以使完整的可攜式技術與現在擁有的Windows桌面技術整合工作。Windows CE被設計成為針對小型設備的通用操作系統。為了足夠的方便來能夠適應廣泛產品的需求,Windows CE采用標準模式,這樣就可以讓某些模式的來通過這樣的一套工作利用便捷做出選擇。
關鍵詞:Windows CE;可攜式技術;通用操作系統
前言
Windows CE是一個32位、多任務、多線程的操作系統,其開放式的設計結構適用于各種各樣的設備,它這樣的系統擁有這很多獨特的特點。例如,它是一種可以壓縮和升級的軟件系統,如果在小內存條件下,也能夠完美的提供比較高的性能。CE還擁有著攜帶方便和能夠運行在多種微處理器。它的高效和完美的電源系統能夠讓移動設備的電池壽命延長很久。因為它本身支持的是標準系統,所以就可以很方便地去進入Internet來發送和接受電子郵件。
一、Windows CE的歷史背景
最早的系統版本是在1996年之后才發布的,從這開始,微軟就開始不停的更新版本,一直到現在的最新版,來適應市場用戶的不同需求。1997年,帶有網絡支持的CE2.0被微軟發布。Windows中標準的網絡功能和通用的NE2000網卡驅動支持隨之到了1998年的8月份,再次發布了H/PC配套的操作系統2.11版本。該系統更新了它的存儲功能,文件大于4M。命令解釋器的cmd.exe來支持MS-DOS的命令,以至于后續的Fast IR來維持紅外線的運行。這套版本的最完美表現在它的IP多點傳送。隨后2000年的3.0版本隨之問世,微軟大大的提高了這個系統的內核來更好的支持256個線程調整線程周期的優先級。2003年的第二個季度的4.2版本發布,其中API的菜單條和輸入法等精簡框架都被完美構筑在中。2004年的7月份,5.0版本正是發行,能夠處理多媒體和Web瀏覽的功能,其他設備與其互聯的時候加強操作性。2006年的6.0上市操作支持著NDIS miniport驅動模式。當然了也就是這個6.0讓微軟不但擁有了自己獨特的新版系統還讓其的資源共享發表它所屬的核心源代碼。使很多的IDE成為VS2005的嵌入式開發廠商擁有的一個基本插件。2011年的7.0系統則是盡善盡美地適用于很多醫療設備,工業設備,零售系統和平板電腦。
二、Windows CE的中斷處理
(一)中斷體系結構
中斷過程被其分為了兩個部分,其中當出現中斷時,相應的ISR被內核相應的調用,來盡可能保存短的內核模式為中斷處理模式。內核收到一個最小處理的ISR來返回一個合適的IST上,然后檢查ID號來等待事件服務線程的發生。IST開始執行等待停止然后中斷的發生處理程序。
(二)中斷延遲
這里的中斷延遲也能夠分為兩個部分,其中從開始發生中斷時算起,到ISR把命令開始執行時的間隔成為第一個延遲被稱作ISR延遲。當然了發生延遲就得存在著原因,其中因素涵蓋很多,首先是中斷系統被關閉,處理器不會產生異常狀態而且機器指令都被中斷處理器檢查來調用移動指令長字符鎖定中斷。然而第二個是從發生中斷開始計算最后到IST的第一行代碼存在執行時的時間間隔稱作是第二個IST延遲。
三、Windows CE的進程和線程
(一)CE的進程
一個正在運行的一個進程應用基本是兩個部分組成的。其中操作系統的管理內核對象和地址空間擁有的進程。其中地址空間的存在讓代碼靜態數據段都要從執行方面來看的話,應用程序的一個或者多個線程都是一個完美的執行單元,基本的線程操作系統都是來進行一個線程地址空間來訪問分配的。而控制執行CPU的基本單位則是一種能夠單元的執行代碼。
(二)CE的線程
任務操作在調度過程中的CE. NET是一個搶占系統。搶占多任務多,系統優先級列表是一個當前所有線程的,所有的線程的優先級排列顧序是當內核的調度中斷發生時,排列順序會被調度線程所有系統重新安排的。其中256個優先級的線程高度是0的優先級最高,255則是最低。實時性的調度系統CE. NET具有保證髙優先級線程時間片先運行的機智。所以低優先級線程才能得到阻塞必須在前者才能夠終止占有CPU相同優先級。其中的線程一旦發生中斷,內核會終止程序死鎖和阻塞低線程的暫停,來讓髙優先級線程其他相同占有時間時的共同隨機運行,直到具有使用完了 設置為0的時間片內阻塞。睡眠OEM可以更改優先級的線程。內核限制線程占有CPU的時間,那么CPU時間片其他相同會占有時間片這個值,甚至CPU時間片設置為0會出現程序死鎖的情況。臨界區鎖定線程2這次進入了一個臨界區內的資源是運行的機智不會被其他線程訪問的,當臨界區正運行時,線程1時間片釋放在中運行狀態,阻塞狀態的資源被線程2來放開。
四、Windows CE的內存管理
(一)進程空間地址結構
CE系統又把從0x80000000?0x80000000的2G用戶空間分為64個槽(Slot),一個槽(Slot)占用32MB的地址空間,其中前33個Slot(0x00000000?0x42000000)作為進程空司:當一個進程啟動時,內核選擇一個沒有被占用的槽作為這個進程的地址空間。當前運行進程(Currendy Running Process)其中0x0000000?CxOlFFFFFF這個槽稱為Slot 0,Slot 0作為當前運行進程的地址空間。當一個進程即將得到CPU控制權時,將其整個地址映射到Slot0。這個進程被分配一個槽后,槽內按由低地址到高地址順序依次存放的數據位代碼段、靜態數據段、堆、棧,棧之后的空間為所有DLL保留。
(二)堆和棧的內存分配
連續的較大的地址堆是一段虛擬空間。應用程序內存頁為單位在堆中可以動態地分配,釋放在堆內分配內存塊可以是任意大小的,而直接分配內存就必須以每個內存頁所需大小的內存塊。可能是ikb、4kb或并且保留頂部2KB更多。棧和堆相比空間要小的多,它是專為函數使用的。棧的大小和CPU有關,一般為64KB,為了防止溢出。實際開發中,不要在一段連續的虛擬地址空間棧中分配很大和很多的內存塊。因為分配的內存塊超過了默認棧的限制,就會引起非法訪問進程的異、常中止并且造成。
參考文獻:
[1]? 金亮,張學杰.《3種嵌入式操作系統內核的關鍵技術分析》.云南大學,2006。
[2]? 林濤.《嵌入式操作系統WindowsCE的研究》.微計算機信息,2006。
[3]? 鄧亞明.《嵌入式操作系統比較研究中國髙新技術企業》,2008。
(作者單位:華北水利水電大學)