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