+ dISR_Current + sum(dISR_Higher)value1=由內(nèi)核處理過程獲得響應(yīng)值 dISR_Current=中斷到達(dá)時(shí)程序中 ISR 持續(xù)時(shí)間。這個(gè)值范圍由0到系統(tǒng)中最長的 ISR 持續(xù)時(shí)間 sum(dISR_Higher)=所有在 ISR 開始前的較高級(jí)ISRS 持續(xù)時(shí)間總和,即在時(shí)間 vahe1+dISR-cumeneu間到達(dá)的中斷
例如,考慮一個(gè)擁有關(guān)鍵優(yōu)先權(quán) ISR 的嵌入式系統(tǒng),因?yàn)?ISR 被設(shè)成*********,這有樣 ISRS dISR-Higher 值為0。當(dāng)沒有其它 ISRS 最低響應(yīng),在程序中,即為value1 最低響應(yīng)即為value1加系統(tǒng)中最長 ISR 周期,當(dāng)中斷到達(dá)時(shí),正是系統(tǒng)中最長的 ISR 開始執(zhí)行。
IST 響應(yīng)周期定義如下:
IST開始時(shí)間 = value2 + sum(dIST) + sum(dISR) value2=由內(nèi)核處理的響應(yīng)值 sum(dIST)=所有的出現(xiàn)在 ISR 和 IST ,開始的優(yōu)先級(jí) ISTS 和線程上下文轉(zhuǎn)換時(shí)間總和。 sum(dISR)=在中斷(?) ISR 和它的 IST 之間運(yùn)行的其它 ISRS 持續(xù)時(shí)間總和。
最簡單的例子——具有一個(gè)關(guān)鍵級(jí) ISR 和一個(gè)關(guān)鍵級(jí)線程(無其它0優(yōu)先級(jí)的線程)的嵌入式系統(tǒng)——沒有其它的 ISTS 能夠在ISR 和 IST 之間中斷,然而在關(guān)鍵級(jí)的 ISR 和它相關(guān)的 IST 開始間其它的 ISRS 能被處理。
因?yàn)?ISRS 一旦能夠獲得,即可被處理,很容易想象成病態(tài)情況,涉及產(chǎn)生一個(gè)持續(xù)的 ISRS 流,從而產(chǎn)生不確定的推遲。 IST 的開始不可能出現(xiàn),因?yàn)?OEM對(duì)系統(tǒng)中的中斷完成控制。因?yàn)?OEM (原始設(shè)備制造商)為特定操作系統(tǒng)設(shè)計(jì)傳統(tǒng) Windows CE 版本。 OCM 利用目標(biāo)操作環(huán)境限制使系統(tǒng)設(shè)計(jì)******化。
為減少響應(yīng)時(shí)間,OEM 控制 ISR 和IST 處理時(shí)間中斷優(yōu)先級(jí)線程優(yōu)先級(jí)。公式中的 value1 和 walue2 代表,Windows CE 內(nèi)核中處理時(shí)間,這是 OEM 不能控制的目前的在分時(shí),研究工作涉及這些確認(rèn)值。
確保Windows CE的實(shí)時(shí)操作
兩種不同途徑被用來確保Windows CE操作: - 由Windows CE開發(fā)組進(jìn)行內(nèi)部的檢查或分析內(nèi)核代碼,
- OEM和ISV(獨(dú)立軟件銷售商)利用一些將在未來的Windows CE版本嵌入式工具包(for VCFT)提供工具來確保特定配置。
Windows CE關(guān)于VC++的嵌入工具包包括以下工具: - (一個(gè)對(duì)于分時(shí)研究的內(nèi)核的工具版本和Intrtinrt.ext應(yīng)用軟件來觀察,中斷過程的******、最小、平均時(shí)間。
- 微軟也能開發(fā)其它的針對(duì)顧客需要的分時(shí)工具。
Windows CE開發(fā)組,已經(jīng)檢查了內(nèi)核代碼以證實(shí)它能由最差的情況時(shí)間表征,它是獨(dú)立于系統(tǒng)對(duì)象數(shù)目的。
為了利用這個(gè)檢查,內(nèi)核被表征成一套KCALLS或系統(tǒng)調(diào)用,在內(nèi)核關(guān)閉優(yōu)先權(quán)是它們是內(nèi)核程序,并且不允許其它的線程運(yùn)行,最差事件時(shí)間,此時(shí),實(shí)時(shí)進(jìn)程、標(biāo)止運(yùn)行,它能在內(nèi)核中表征成最差事件KCALL時(shí)間(注意:這些時(shí)間不影響ISRS,只影響線程,例如ISTS)。
開發(fā)組通過檢查發(fā)現(xiàn)這沒有非持久的循環(huán)在KCALLS,這意味著:并所有的KCALLS能夠表示成單向分支,代碼路徑,并確保通過KCALL并獨(dú)立于輸入?yún)?shù)發(fā)現(xiàn)最差事件時(shí)間成為可能。
查找實(shí)際的最差事件時(shí)間包括使用In strum ented kemal,這僅是一個(gè)內(nèi)核版本,它在設(shè)定應(yīng)用環(huán)境后編輯使用,KCALL_PROFICE=1,以保證額外的分時(shí)功能,這個(gè)instrumented kemel 與debug kemel不同,Instrument ted是為一個(gè)零售的內(nèi)核使用,它用來獲得分時(shí)值,這常對(duì)于裝運(yùn)產(chǎn)品常常諱之莫深,在retail kernal和instrumented kernel唯一區(qū)別是它的裝備。
Instrumentted kernel記錄所有的KCALL時(shí)間,這些值,包括最小、******和平均時(shí)間,并能夠通過調(diào)用專用的API函數(shù)Dum Pk call profile打印到調(diào)試接口,Instrumented kernel通常運(yùn)行在強(qiáng)狀態(tài)下,然后調(diào)用Dumpkcall prefile來獲得時(shí)間。
中斷測(cè)試應(yīng)用軟件Intrtime.exe,在Windows CE標(biāo)準(zhǔn)版本收集中斷分時(shí)延遲信息,應(yīng)用軟件在測(cè)試中控制系統(tǒng)時(shí)間。因此,當(dāng)系統(tǒng)需要時(shí)間控制器時(shí),是不合適使用的。例如,此應(yīng)用程序不能與內(nèi)核instrumented版本一起使用,因?yàn)樗残枰獣r(shí)間控制。
在Windows CE 2版(Beta版)測(cè)試響應(yīng),
Intertime應(yīng)用軟件在odoSH3參考平臺(tái)上運(yùn)行1000次中斷測(cè)試,內(nèi)部運(yùn)行58.98Mhz,外部為14.745Mhz外部頻率,這個(gè)測(cè)試在一個(gè)標(biāo)準(zhǔn)的H/PC配置,它包括Windows CE所有模式和組合。僅有主操作系統(tǒng)進(jìn)程進(jìn)行(NK.exe, Filesys.exe, Gwes.exe, Device. EXE, Shell.EXE和Explover.EXE),在測(cè)試中無用戶初始中斷(觸摸屏、鍵盤或其它應(yīng)用),應(yīng)用軟件可報(bào)告下面的ISR和IST開始、最小和******時(shí)間:
響應(yīng) ******、最小值(1000次測(cè)試) ISR開始 1.3-7.5微秒 IST開始 93-275微秒
大多數(shù)測(cè)試結(jié)果,分布在最小值數(shù)值附近,當(dāng)測(cè)試ISR開始時(shí)間時(shí),最小值1.3和1.6微秒,出現(xiàn)了293和549次,共占測(cè)試的84%,類似的超過90%的(1000次中923)start-of-IST測(cè)試出******響應(yīng)為102微秒或少一些。
Intertime應(yīng)用軟件也使用一個(gè)用戶指定數(shù)目的系統(tǒng)對(duì)象來測(cè)試ISR和IST開始時(shí)間。雖然工作十分初級(jí),但它驗(yàn)證了ISR開始時(shí)間與系統(tǒng)對(duì)象數(shù)目無關(guān),測(cè)試設(shè)為1000次(除了特別更改)并且線程優(yōu)先權(quán)為5或7。 ISR開始******值 | 后臺(tái)線程、數(shù)目(每個(gè)線程一個(gè)事件) | 優(yōu)先級(jí) | 8.4 | 0 | 7 | 8.6 | 5(注:僅100次) | 7 | 9.0 | 10(注:僅100次) | 5 | 14.8 | 10 | 5 | 19.2 | 10 | 5 | 17.0 | 10 | 7 | 12.8 | 20 | 5 | 11.0 | 20(注:僅100次) | 7 | 10.0 | 50 | 7 | 15.0 | 100 | 5 | 15.6 | 100 | 7 |
這數(shù)值不是系統(tǒng)對(duì)象數(shù)目的函數(shù),不同的值可能由于中斷出現(xiàn)時(shí)內(nèi)核狀態(tài),開發(fā)組目前正在研究以鑒定ISR開始最差時(shí)間值。
由這些結(jié)果向回推,假定ISR開始最小值代表最好情況。此時(shí),dISR_Current和Sum(dISR_Htgbor)為0,最小的value 1=ISR開始值=1.3微秒,類似的設(shè)定最好情況時(shí),Sum(dIST)和Sum(dISR)為0,Value最小值=.IST開始值=93微秒,單從測(cè)驗(yàn)結(jié)果看,它是不能確定,valume 1或value 2******值。
附加的分時(shí)信息能夠由instrumented kernel 收集,對(duì)于一個(gè)最差情況在IST開始前花費(fèi)時(shí)間valume2,能由下列公式計(jì)算:
Value2=dkCall+dNextThread dKcall=.內(nèi)核調(diào)用時(shí)間;當(dāng)消除優(yōu)先級(jí)時(shí),花費(fèi)在內(nèi)核的一部分時(shí)間量。 DNextThread=Next.Thread內(nèi)核調(diào)用時(shí)期?;ㄙM(fèi)在IST中時(shí)間量。
實(shí)際上,在0級(jí)別線程調(diào)度要比Next Thread調(diào)用快,但此公式能估計(jì)出上限。
下面表格顯示了用instrumented Kernel進(jìn)行初步測(cè)試時(shí)最差事件結(jié)果,這些測(cè)試條件與Intrtime測(cè)試相同。
內(nèi)核調(diào)用模型 | ******值(ad-hoc.testing) | ******時(shí)間值(所用內(nèi)核調(diào)用) | 266微秒(Learecrite) | Next Thread | 237微秒 | 總值 | 503微秒 |
Instrumented kernel顯示這些條件下value 2上限為500微秒。這個(gè)值為兩個(gè)最差事件總時(shí)間,遠(yuǎn)遠(yuǎn)超過了由Intritime應(yīng)用程序得到的結(jié)果,也大于實(shí)際最差事件時(shí)間。例如:通過Nextthread調(diào)度一個(gè)優(yōu)先級(jí)為0的線程,不會(huì)導(dǎo)致最差事件,這意味著500微秒是一個(gè)高于實(shí)際的最差事件值的保守值。
Intertime Utility對(duì)于從總體上觀察最差事件值十分有用,Instrumentted Kemel對(duì)于獲得可能最差事件的值,通過內(nèi)核描繪出所有響應(yīng)原因——一個(gè)IST在這些事件運(yùn)行,但在內(nèi)核非優(yōu)先部分運(yùn)行執(zhí)行時(shí),將受阻礙,系統(tǒng)的最差事件響應(yīng)可由每一部分的最差事件總和計(jì)算。
注意本論文中所有測(cè)試結(jié)果均基于內(nèi)部Windows CE的beta版,目前存在的操作系統(tǒng)和應(yīng)用將繼續(xù)得到修正,并且進(jìn)行附加測(cè)試以獲得在不同操作條件下系統(tǒng)操作,這些數(shù)值將繼續(xù)被更新并出版,以反思目前的操作系統(tǒng)版本。
總結(jié) 微軟Windows CE內(nèi)核設(shè)計(jì)以達(dá)到RTOS最小要求,以使Windows CE用在許多不同類型的嵌入式和實(shí)時(shí)系統(tǒng)作為操作系統(tǒng); - Windows CE的多線程和優(yōu)先級(jí),Windows CE支持個(gè)人線程優(yōu)先級(jí);
- Windows CE支持優(yōu)先權(quán)繼承程序,以便調(diào)整優(yōu)銜級(jí)別以修改優(yōu)先權(quán)顛倒;
- Windows CE支持一個(gè)可預(yù)測(cè)的線程同步機(jī)理,包括等待對(duì)象,如互斥體關(guān)鍵部分,命名或未命名的事件對(duì)象,它基于線程優(yōu)先權(quán)排序。
Windows CE也支持與系統(tǒng)控制器的聯(lián)連: - OEM能夠控制類由系統(tǒng)支持的中斷處理,即通過執(zhí)行ISRS和ISTS,它可彌補(bǔ)中斷處理軟件;
- OEM完成在所有映射到中斷ID號(hào)的IRQS,并且它與中斷處理軟件相聯(lián)系(ISR和IST),描繪工具和應(yīng)用軟件可以利用記錄處理中斷******時(shí)間。
- 中斷響應(yīng)是可預(yù)測(cè)和有限制的,當(dāng)優(yōu)先權(quán)取消時(shí),上限即為花費(fèi)在內(nèi)核中時(shí)間總量,匹配轉(zhuǎn)化時(shí)間,和由OEM執(zhí)行的ISRS和ISTS申請(qǐng)?zhí)幚頃r(shí)間。
- 每個(gè)系統(tǒng)調(diào)用的時(shí)間是可預(yù)測(cè)的,并與系統(tǒng)對(duì)象數(shù)目無關(guān),
利用 instrumentted kernel系統(tǒng)調(diào)用時(shí)間能夠保證Windows CE內(nèi)核設(shè)計(jì)保證中斷和它們相關(guān)線 |