MS Windows CE的實時系統(tǒng)
由WindowsCE開發(fā)組進行內部的檢查或分析內核代碼,
OEM和ISV(獨立軟件銷售商)利用一些將在未來的WindowsCE版本嵌入式工具包(forVCFT)提供工具來確保特定配置。
WindowsCE關于VC++的嵌入工具包包括以下工具:
(一個對于分時研究的內核的工具版本和Intrtinrt.ext應用軟件來觀察,中斷過程的最大、最小、平均時間。
微軟也能開發(fā)其它的針對顧客需要的分時工具。
WindowsCE開發(fā)組,已經(jīng)檢查了內核代碼以證實它能由最差的情況時間表征,它是獨立于系統(tǒng)對象數(shù)目的。
為了利用這個檢查,內核被表征成一套KCALLS或系統(tǒng)調用,在內核關閉優(yōu)先權是它們是內核程序,并且不允許其它的線程運行,最差事件時間,此時,實時進程、標止運行,它能在內核中表征成最差事件KCALL時間(注意:這些時間不影響ISRS,只影響線程,例如ISTS)。
開發(fā)組通過檢查發(fā)現(xiàn)這沒有非持久的循環(huán)在KCALLS,這意味著:并所有的KCALLS能夠表示成單向分支,代碼路徑,并確保通過KCALL并獨立于輸入?yún)?shù)發(fā)現(xiàn)最差事件時間成為可能。
查找實際的最差事件時間包括使用Instrumentedkemal,這僅是一個內核版本,它在設定應用環(huán)境后編輯使用,KCALL_PROFICE=1,以保證額外的分時功能,這個instrumentedkemel與debugkemel不同,Instrumentted是為一個零售的內核使用,它用來獲得分時值,這常對于裝運產(chǎn)品常常諱之莫深,在retailkernal和instrumentedkernel唯一區(qū)別是它的裝備。
Instrumenttedkernel記錄所有的KCALL時間,這些值,包括最小、最大和平均時間,并能夠通過調用專用的API函數(shù)DumPkcallprofile打印到調試接口,Instrumentedkernel通常運行在強狀態(tài)下,然后調用Dumpkcallprefile來獲得時間。
中斷測試應用軟件Intrtime.exe,在WindowsCE標準版本收集中斷分時延遲信息,應用軟件在測試中控制系統(tǒng)時間。因此,當系統(tǒng)需要時間控制器時,是不合適使用的。例如,此應用程序不能與內核instrumented版本一起使用,因為它也需要時間控制。
在WindowsCE2版(Beta版)測試響應,
Intertime應用軟件在odoSH3參考平臺上運行1000次中斷測試,內部運行58.98Mhz,外部為14.745Mhz外部頻率,這個測試在一個標準的H/PC配置,它包括WindowsCE所有模式和組合。僅有主操作系統(tǒng)進程進行(NK.exe,Filesys.exe,Gwes.exe,Device.EXE,Shell.EXE和Explover.EXE),在測試中無用戶初始中斷(觸摸屏、鍵盤或其它應用),應用軟件可報告下面的ISR和IST開始、最小和最大時間:
響應最大、最小值(1000次測試)
ISR開始1.3-7.5微秒
IST開始93-275微秒
大多數(shù)測試結果,分布在最小值數(shù)值附近,當測試ISR開始時間時,最小值1.3和1.6微秒,出現(xiàn)了293和549次,共占測試的84%,類似的超過90%的(1000次中923)start-of-IST測試出最大響應為102微秒或少一些。
Intertime應用軟件也使用一個用戶指定數(shù)目的系統(tǒng)對象來測試ISR和IST開始時間。雖然工作十分初級,但它驗證了ISR開始時間與系統(tǒng)對象數(shù)目無關,測試設為1000次(除了特別更改)并且線程優(yōu)先權為5或7。
ISR開始最大值后臺線程、數(shù)目(每個線程一個事件)優(yōu)先級
8.407
8.65(注:僅100次)7
9.010(注:僅100次)5
14.8105
19.2105
17.0107
12.8205
11.020(注:僅100次)7
10.0507
15.01005
15.61007
這數(shù)值不是系統(tǒng)對象數(shù)目的函數(shù),不同的值可能由于中斷出現(xiàn)時內核狀態(tài),開發(fā)組目前正在研究以鑒定ISR開始最差時間值。
由這些結果向回推,假定ISR開始最小值代表最好情況。此時,dISR_Current和Sum(dISR_Htgbor)為0,最小的value1=ISR開始值=1.3微秒,類似的設定最好情況時,Sum(dIST)和Sum(dISR)為0,Value最小值=.IST開始值=93微秒,單從測驗結果看,它是不能確定,valume1或value2最大值。
附加的分時信息能夠由instrumentedkernel收集,對于一個最差情況在IST開始前花費時間valume2,能由下列公式計算:
Value2=dkCall+dNextThread
dKcall=.內核調用時間;當消除優(yōu)先級時,花費在內核的一部分時間量。
DNextThread=Next.Thread內核調用時期?;ㄙM在IST中時間量。
實際上,在0級別線程調度要比NextThread調用快,但此公式能估計出上限。
下面表格顯示了用instrumentedKernel進行初步測試時最差事件結果,這些測試條件與Intrtime測試相同。
內核調用模型最大值(ad-hoc.testing)
最大時間值(所用內核調用)266微秒(Learecrite)
NextThread237微秒
總值503微秒
Instrumentedkernel顯示這些條件下value2上限為500微秒。這個值為兩個最差事件總時間,遠遠超過了由Intritime應用程序得到的結果,也大于實際最差事件時間。例如:通過Nextthread調度一個優(yōu)先級為0的線程,不會導致最差事件,這意味著500微秒是一個高于實際的最差事件值的保守值。
IntertimeUtility對于從總體上觀察最差事件值十分有用,InstrumenttedKemel對于獲得可能最差事件的值,通過內核描繪出所有響應原因——一個IST在這些事件運行,但在內核非優(yōu)先部分運行執(zhí)行時,將受阻礙,系統(tǒng)的最差事件響應可由每一部分的最差事件總和計算。
注意本論文中所有測試結果均基于內部WindowsCE的beta版,目前存在的操作系統(tǒng)和應用將繼續(xù)得到修正,并且進行附加測試以獲得在不同操作條件下系統(tǒng)操作,這些數(shù)值將繼續(xù)被更新并出版,以反思目前的操作系統(tǒng)版本。
總結
微軟WindowsCE內核設計以達到RTOS最小要求,以使WindowsCE用在許多不同類型的嵌入式和實時系統(tǒng)作為操作系統(tǒng);
WindowsCE的多線程和優(yōu)先級,WindowsCE支持個人線程優(yōu)先級;
WindowsCE支持優(yōu)先權繼承程序,以便調整優(yōu)銜級別以修改優(yōu)先權顛倒;
WindowsCE支持一個可預測的線程同步機理,包括等待對象,如互斥體關鍵部分,命名或未命名的事件對象,它基于線程優(yōu)先權排序。
評論