張 帆,求 偉,韓大鵬
ZHANG Fan1,QIU Wei1,HAN Da-peng2
(1.武警杭州指揮學院 信息技術教研室,杭州 310023;2.浙江省女子監(jiān)獄 信息技術科,杭州 310012)
實時系統(tǒng)是指系統(tǒng)能夠在限定的響應時間內(nèi)提供所需水平的服務。一般的說,實時系統(tǒng)是能及時響應外部發(fā)生的隨機事件,并以足夠快的速度完成對事件處理的計算機應用系統(tǒng)。一個實時系統(tǒng)計算的正確性不僅取決于程序的邏輯正確性,也取決于結果產(chǎn)生的時間,如果系統(tǒng)的時間約束條件得不到滿足,將會發(fā)生系統(tǒng)出錯。實時系統(tǒng)有反應式和嵌入式兩種類型。反應式實時系統(tǒng)會與環(huán)境發(fā)生連續(xù)的互作用,而嵌入式實時系統(tǒng)主要用于控制大型系統(tǒng)中安裝的特殊硬件。
一般來講,性能是一個軟件系統(tǒng)或組件對時間要求滿足程度的一種指示。這里的時間指標可以用響應時間和吞吐量來衡量,該時間值是指響應某種要求所需的時間,而吞吐量用以指示系統(tǒng)在特定時間間隔內(nèi)能夠處理的請求數(shù)量。實時操作系統(tǒng)與一般商用多任務操作系統(tǒng)如Unix、Windows有共同的特點,也有不同的特點。對于商用多任務操作系統(tǒng),其目的是方便用戶管理計算機資源,追求吞吐量;而實時操作系統(tǒng)要求在限定的響應時間內(nèi)提供所需水平的服務,追求實時性、可確定性、可靠性。
評價一個實時操作系統(tǒng)一般可以從任務調(diào)度、內(nèi)存管理、任務通訊、內(nèi)存開銷、任務切換時間、最大中斷禁止時間等幾個方面來衡量。其中最大中斷禁止時間和任務切換時間是評價一個實時操作系統(tǒng)實時性的最重要的兩個技術指標。
由于Linux系統(tǒng)本身是一個面向桌面的系統(tǒng),其主要設計標準的是方便用戶管理計算機資源,追求系統(tǒng)資源最大利用率,而不是有確定可預測的實時性能。所以將它應用于實時應用中時存在響應時間不可預測、時鐘粒度粗糙等問題。
2.1 響應時間
響應時間是指從系統(tǒng)接到即時處理程序的中斷(interrupt)請求,到開始執(zhí)行該處理程序間的時間差,如圖1所示。
圖1 響應時間
影響系統(tǒng)響應時間的因素包括:中斷延遲(interrupt Latency)、中斷服務例程運行時間(Interrupt handler duration)、調(diào)度延遲(Scheduler Latency)和調(diào)度程序運行時間(Scheduling duration)。
2.1.1 中斷延遲
中斷延遲即中斷響應時間,是指從產(chǎn)生中斷請求到相應中斷服務程序的第一條指令被執(zhí)行之間的這段時間。由于中斷具備有優(yōu)先級而且可以嵌套產(chǎn)生,因此可以測知優(yōu)先級最高的中斷在執(zhí)行時的延遲時間。然而產(chǎn)生中斷延遲的原因除了處理器響應時間外,更重要的是操作系統(tǒng)往往會大大增加中斷被延遲的時間。在操作系統(tǒng)運行過程中,存在著一些關鍵的操作,這些操作在執(zhí)行時,操作系統(tǒng)會禁止在其間插入任何中斷。因此如果一個中斷請求在操作系統(tǒng)禁止中斷的這段時間里產(chǎn)生,那么對它的處理就會始終保持在掛起狀態(tài),直到操作系統(tǒng)重新允許中斷插入。最終,中斷延遲在最壞情況下的數(shù)值是和操作系統(tǒng)關鍵操作中的指令序列在中斷請求產(chǎn)生后繼續(xù)執(zhí)行的時間緊密相關,實時系統(tǒng)就是要確保系統(tǒng)中的關鍵事件能夠在限定的時間段內(nèi)被處理。
2.1.2 調(diào)度延遲
較長時間的調(diào)度延遲有許多原因。其一是驅(qū)動在入口處或中斷服務例程進行了許多操作;其二是由于缺乏調(diào)度點,內(nèi)核長時間執(zhí)行一部分代碼,這些都導致了內(nèi)核長時間內(nèi)沒有得到機會去進行調(diào)度運算。簡單的解決方法是使調(diào)度程序運行得更加頻繁。但實際上這個問題并不那么簡單。首先,如果調(diào)度程序運行過于頻繁,將引發(fā)頻繁的進程切換,導致過多的CPU和內(nèi)存資源的浪費;其次會影響中斷服務時機的選擇和服務的質(zhì)量,再次影響進程IPC。引發(fā)過多的資源協(xié)調(diào)問題,從而導致系統(tǒng)性能的降低。因此讓調(diào)度器保持一個有規(guī)律的運行節(jié)拍,但是又不能過于頻繁的運行很重要。正確的解決方法是,讓調(diào)度器在需要的時候盡快運行,例如:中斷發(fā)生以后,需要重新調(diào)度,從就緒隊列中選擇下一個進程。
2.2 時鐘問題
操作系統(tǒng)環(huán)境建立之后,任務的執(zhí)行和中止在很多情況下都是由時鐘直接或間接喚起的,時鐘也是操作系統(tǒng)活動的基準。為了提高系統(tǒng)的平均吞吐率,Linux 2.6將時鐘中斷的最小間隔設置為1毫秒,雖然相比2.4內(nèi)核的10毫秒有了很大的提高,但是實時應用一般都需要微秒級的響應精度,1ms的時鐘粒度顯然不能滿足實時應用的需求。如果要把時鐘的間隔縮小以滿足周期性的實時任務的需要,但是Linux的進程切換比較費時,時鐘中斷越頻繁,而花在中斷處理上的時間就越多,系統(tǒng)的大部分時間是調(diào)用進程調(diào)度程序進行進程調(diào)度而不能進行正常的處理。
3.1 增加kernel可搶占性。
一般內(nèi)核的不可搶占性使實時任務無法提供任務的調(diào)度權,可以通過修改源碼,將系統(tǒng)調(diào)用的過程細分,縮小禁止中斷、內(nèi)核加鎖的范圍。增加調(diào)度器運行的時機。
3.2 對中斷進行軟件模擬
采用軟件對中斷模擬,在Linux內(nèi)核下增加一個軟件層,來控制中斷和處理器關鍵操作。對cli(關中斷)和sti(開中斷)命令進行封裝,在調(diào)用cli或者sti時,只是更改中斷的標記位,并不真正的去開、關中斷。例如:RT-Linux,由兩個子內(nèi)核構成,一個用于Linux環(huán)境,一個用于實時環(huán)境,可以有效改善系統(tǒng)中斷延遲時間的問題。
3.3 采用高精度定時器
一般內(nèi)核無法提供高精度時鐘,也即無法高精度分辨實時任務的到來。采用高精度定時器,為系統(tǒng)提供更多的剝奪點。通過系統(tǒng)硬件提供的高精度時鐘,可以解決時鐘粒度過大的問題。
3.4 改進調(diào)度算法
雖然Linux進程調(diào)度也支持實時優(yōu)先級,但缺乏有效的實時任務的調(diào)度機制和調(diào)度算法,無法滿足HRT、QoS等的任務需求,可以通過向調(diào)度器增加hook或改造調(diào)度器來改善。目前有很多新穎的操作系統(tǒng)調(diào)度框架和調(diào)度算法都有Linux實現(xiàn),比如RED-Linux所定義的一個通用的實時調(diào)度框架;QLinux所采用的分層式的CPU調(diào)度框架,及新穎的調(diào)度算法如H-SFQ,以及Cello磁盤調(diào)度算法等;SILK所使用的將對一個包的網(wǎng)絡處理抽象成PATH,然后在PATH之間進行調(diào)度。
3.5 采用微內(nèi)核結構
微內(nèi)核結構的設計有很大的好處。調(diào)試用戶進程要比調(diào)試內(nèi)核進程要容易許多,用戶進程在獨立的地址空間運行,不同模塊間的內(nèi)存管理錯誤不會互相影響,驅(qū)動程序可以充分利用內(nèi)核提供的多線程機制。另一好處是系統(tǒng)的可擴展性,既可以小到100K,可以放入ROM,也可以大到足以適應多機系統(tǒng)的需要。移植及維護微內(nèi)核結構的系統(tǒng)都很方便。切換上下文速度快,由于內(nèi)核很小,可以方便的計算出最差的時間參數(shù),如中斷響應時間。微內(nèi)核的一個弱點是性能不好,因為內(nèi)核需要大量的進程通信和上下文切換。只能提供簡單的服務,相同的任務微內(nèi)核系統(tǒng)要調(diào)用較多的系統(tǒng)調(diào)用。
隨著應用的復雜化和硬件的發(fā)展,一個嵌入式控制器系統(tǒng)可能要同時控制和監(jiān)視很多外設,要求有實時響應,有很多處理任務,各個任務之間有多種信息傳遞,因此嵌入式操作系統(tǒng)在嵌入式系統(tǒng)中將會發(fā)揮更大的作用,實時性是絕大多數(shù)嵌入式系統(tǒng)的需求,研究嵌入式操作系統(tǒng)內(nèi)核的實時化技術及其在典型嵌入式實時系統(tǒng)中的應用技術具有重要的意義。Linux以其諸多的優(yōu)勢不但在桌面操作系統(tǒng)中獲得了巨大的成功,通過對其實時性能等方面的改造,必將在嵌入式領域發(fā)揮巨大的作用。
[1]鄒思軼.嵌入式Linux設計與應用.清華大學出版社,2002.
[2]Daniel P.Bovet,Marco Cesati.深入理解LINUX內(nèi)核.第二版[M].中國電力出版社,2004.
[3]李小群,趙慧斌.Linux 實時調(diào)度方案的設計與實現(xiàn)[J].計算機研究與發(fā)展,2003,5.
[4]趙慧斌,李小群.改善Linux 核心可搶占性方法的研究與實現(xiàn)[J].計算機學報,2004,2.