MS Windows CE的實時系統(tǒng)
例如,如果一個線程在最高優(yōu)先權(quán)運行試圖蕕取由低級優(yōu)先權(quán)占有的互斥體,低級優(yōu)先權(quán)的線程變成高級優(yōu)先權(quán),并且運行直到它釋放互斥體。優(yōu)先權(quán)倒置適用于系統(tǒng)的所有線程。例如,甚至在優(yōu)先級別1運行的內(nèi)核線程能轉(zhuǎn)成級別0,如果優(yōu)先級0線程運行內(nèi)存分頁代碼,將引起塊失誤。
本文引用地址:http://m.butianyuan.cn/article/149161.htm基于優(yōu)先級的多任務(wù)設(shè)計,保證運行在最低級的線程在一個預(yù)所知時間段執(zhí)行。本論文在后面討論設(shè)定響應(yīng),對于指定的平臺和公式,并由其它的平臺獲取數(shù)字。在DAK和SDK的工具,顯示了線程狀態(tài)和優(yōu)先級別,并描繪指定實時系統(tǒng)操作輪廓。
線程同步
實時系統(tǒng)必須保證進程和線程同步,例如,如果實時應(yīng)用的一部分在另一部分獲得最多當(dāng)前數(shù)據(jù)前即完成,此應(yīng)用的管理進程可能不穩(wěn)定,同步將確保在應(yīng)用線程間交換正確。
如同其它的Windows操作系統(tǒng)一樣,WindowsCE為線程同步提供了一個豐富的“等待對象”,這包括關(guān)鍵部門、事件、互斥體,些等待對象,允許一個線程減緩它的運行并且等待直到指定事件發(fā)生。
WindowsCE將互斥體、關(guān)鍵部分、事件請求按“先入先出,優(yōu)先級(FIFO)”順序排列:不同的先入先出順序序列定義成八個不同的優(yōu)先級,在給定的優(yōu)稱級的線程請求,將被放在優(yōu)先級列表末尾,當(dāng)優(yōu)先級倒置出現(xiàn)時,調(diào)度程序調(diào)整這些序列。
除了等待對象,WindowsCE支持標(biāo)準(zhǔn)的Win32時間API函數(shù),這些來自內(nèi)核的應(yīng)用,軟件中斷將獲得時間間隔,它被用來管理實時應(yīng)用。通過調(diào)用GetTickCont函數(shù),它能夠返回幾毫秒,線程能夠使用系統(tǒng)間隔時間。關(guān)于更詳細的分時信息,WindowsCE內(nèi)核也支持Win32API函數(shù)QueryPerformanreCounter和QueryPerFormanteFrequency。OEM必須為這些調(diào)用提供硬件和軟件支持,它提供一個較高的時間分辨力和OAL界面其它方面。
其它方面考慮
WindowsCE提供了一個重要的存儲系統(tǒng),例如,當(dāng)目前某些運行WindowsCE的平臺提供4MB的物理內(nèi)存,WindowsCE支持一個重要的2GB的地址空間,每個進程聯(lián)接在它自己的32MB物理空間上,當(dāng)它需要產(chǎn)生內(nèi)存分頁中斷(這可能影響線程執(zhí)行時間),物理內(nèi)存進行線程代碼或數(shù)據(jù)內(nèi)存分頁。
內(nèi)存分頁輸入輸出,將比實時進程優(yōu)先級低。在實時進程中內(nèi)存分頁仍可自由出現(xiàn),但這要確保后臺的實際內(nèi)存管理贏得實時系統(tǒng)優(yōu)先權(quán)。
實時線程應(yīng)該鎖存在內(nèi)存中,以防止這些無關(guān)緊要的內(nèi)存分頁阻礙其運行,它們可能會占用實際內(nèi)存管理系統(tǒng)。
WindowsCE允許映射,這將陰止多個進程共享同一物理內(nèi)存,結(jié)果將會導(dǎo)致協(xié)同進程間或驅(qū)動器與映射快速的數(shù)據(jù)傳送,內(nèi)存映射能夠戲劇性的增強實時操作。
中斷處理:IRQSISRS和ISTS
實時應(yīng)用被設(shè)立在指定的時間間隔內(nèi),對外部事件做出反應(yīng),實時應(yīng)用使用中斷做為一種確保外部事件由操作系統(tǒng)獲知的方式。在Windows中,內(nèi)核和OEM適應(yīng)層(OAL)被設(shè)定成使系統(tǒng)其它部分的中斷和調(diào)度最優(yōu)化。WindowsCE平衡操作,并通過把中斷過程分成兩部分而使執(zhí)行更加容易:它分為中斷服務(wù)程序(ISR)和中斷服務(wù)線程(IST)兩部分。
每條硬件中斷申請線(IRQ),與一個ISR相連。當(dāng)中斷成立和中斷出現(xiàn)時,內(nèi)核為此調(diào)用寄存的ISR,ISR為中斷處理的內(nèi)核模式部分盡可能短的保存。它首先將內(nèi)核放在適合的IST上。
ISR執(zhí)行它的最小處理并返回一個ID號到內(nèi)核,內(nèi)核檢查返回的中斷ID號,并設(shè)置相關(guān)事件,中斷服務(wù)線程等待事件。當(dāng)內(nèi)核設(shè)置事件時,IST停止等待并開始執(zhí)行,附加的中斷進程,中斷處理大部分實際上出現(xiàn)在IST中,兩個最高的線程優(yōu)先權(quán)(級別0和1),通常指定為ISTS,保證這些線程運行得足夠快。
正如前面所說,處在最高級的ISTS不能被其它的線程占用,這些線程持續(xù)執(zhí)行直到它們截止或放棄。
WindowsCE不能支持群體中斷,這就意味著當(dāng)以前一個中斷處理中,另一個不同接受服務(wù),也就是當(dāng)內(nèi)核位于ISR時如果中斷出現(xiàn),在為新的IRQ開始ISR前它將一直執(zhí)行直到ISR結(jié)束,這將引起硬件中斷和ISR開始之間的延遲,拖延和響應(yīng)時間中斷響應(yīng)。
中斷響應(yīng)
本論文中,IntervuptLatency詞組主要指的是較件中斷,處理響應(yīng),也即是從處部中斷到達處理器到中斷開始處理間的時間。
WindowsCE中斷響應(yīng)時間是針對鎖存在內(nèi)存上的線程(當(dāng)內(nèi)存響應(yīng)不存在時)。這使得計算最差事件響應(yīng)成為可能——中斷服務(wù)程序(ISR)開始和中斷服務(wù)線程(IST)開始D的總時間,直到中斷處理的總時間能夠通ISR和IST中所需時間計算決定。
ISR響應(yīng)通用公式定義如下:
ISR開始時間=value1+dISR_Current+sum(dISR_Higher)
value1=由內(nèi)核處理過程獲得響應(yīng)值
dISR_Current=中斷到達時程序中ISR持續(xù)時間。這個值范圍由0到系統(tǒng)中最長的ISR持續(xù)時間
sum(dISR_Higher)=所有在ISR開始前的較高級ISRS持續(xù)時間總和,即在時間vahe1+dISR-cumeneu間到達的中斷
例如,考慮一個擁有關(guān)鍵優(yōu)先權(quán)ISR的嵌入式系統(tǒng),因為ISR被設(shè)成最高級,這有樣ISRSdISR-Higher值為0。當(dāng)沒有其它ISRS最低響應(yīng),在程序中,即為value1最低響應(yīng)即為value1加系統(tǒng)中最長ISR周期,當(dāng)中斷到達時,正是系統(tǒng)中最長的ISR開始執(zhí)行。
IST響應(yīng)周期定義如下:
IST開始時間=value2+sum(dIST)+sum(dISR)
value2=由內(nèi)核處理的響應(yīng)值
sum(dIST)=所有的出現(xiàn)在ISR和IST,開始的優(yōu)先級ISTS和線程上下文轉(zhuǎn)換時間總和。
sum(dISR)=在中斷(?)ISR和它的IST之間運行的其它ISRS持續(xù)時間總和。
最簡單的例子——具有一個關(guān)鍵級ISR和一個關(guān)鍵級線程(無其它0優(yōu)先級的線程)的嵌入式系統(tǒng)——沒有其它的ISTS能夠在ISR和IST之間中斷,然而在關(guān)鍵級的ISR和它相關(guān)的IST開始間其它的ISRS能被處理。
因為ISRS一旦能夠獲得,即可被處理,很容易想象成病態(tài)情況,涉及產(chǎn)生一個持續(xù)的ISRS流,從而產(chǎn)生不確定的推遲。IST的開始不可能出現(xiàn),因為OEM對系統(tǒng)中的中斷完成控制。因為OEM(原始設(shè)備制造商)為特定操作系統(tǒng)設(shè)計傳統(tǒng)WindowsCE版本。OCM利用目標(biāo)操作環(huán)境限制使系統(tǒng)設(shè)計最佳化。
為減少響應(yīng)時間,OEM控制ISR和IST處理時間中斷優(yōu)先級線程優(yōu)先級。公式中的value1和walue2代表,WindowsCE內(nèi)核中處理時間,這是OEM不能控制的目前的在分時,研究工作涉及這些確認值。
評論