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