摘 要:嵌入式實時操作系統(tǒng)是嵌入式應用軟件的開發(fā)基礎和平臺,為應用軟件的開發(fā)人員提供了統(tǒng)一的用戶接口,簡化了應用軟件的開發(fā)難度和代碼工程化管理的難度。與傳統(tǒng)的操作系統(tǒng)不同的是,嵌入式實時操作系統(tǒng)要求具有更好的實時性能,能對外部時間做出準確、實時的響應。Linux操作系統(tǒng)的源代碼開放、內核模塊化設計及內核的高度可裁減性使其在嵌入式實時操作系統(tǒng)研究領域備受重視。
關鍵詞:嵌入式系統(tǒng);實時性;調度策略
中圖分類號:TP316 文獻標識碼:A 文章編號:1674-7712 (2014) 22-0000-01
一、嵌入式系統(tǒng)概念
嵌入式系統(tǒng)是一個計算機軟件與硬件的集合體,它為完成某種特定的功能而設計。此定義側重于將嵌入式系統(tǒng)和通用的計算機系統(tǒng)相區(qū)別。嵌入式系統(tǒng)也可理解為嵌入到對象體系中的專用計算機應用系統(tǒng),它有三個要素:嵌入性、專用性和有CPU。嵌入式系統(tǒng)的眾多特點都可以從這三個要素出發(fā)來理解。
二、嵌入式實時系統(tǒng)的分類
(一)硬實時系統(tǒng)。要求可確定性強,具有明確的實時約束,在某個限定的時刻之前不能完成任務將造成災難性的后果。
(二)軟實時系統(tǒng)。對時間敏感,當某些應用雖然提出了時間要求,但偶爾發(fā)生不能滿足嚴格實時要求的情況也是允許的。因此,某些應用雖然提出了時間需求,但實時任務偶爾違反這種需求對系統(tǒng)的運行以及環(huán)境不會造成嚴重影響。
三、Linux實時性分析
系統(tǒng)的實時性是指系統(tǒng)能夠在限定的響應時間內提供所需水平的服務,它要求一個特定任務的執(zhí)行時間必須是確定的、可預測的,并且在任何情況下都能保證任務的時限(最大執(zhí)行時間限制)。實時又分軟實時和硬實時。實時性應用要求有一個確定的操作環(huán)境,而實時操作系統(tǒng)恰恰能夠提供這樣的確定操作環(huán)境。然而,Linux卻不是一個實時操作系統(tǒng),因為不具備這種確定性,并且它的平均響應時間和最壞響應時間距離很多實時應用的要求還相差甚遠。從本質上來說,Linux是類Unix系統(tǒng),因此也是分時系統(tǒng)。
四、提高Linux系統(tǒng)實時性的方法
(一)RTLinux。RTLinux是FSMLab研發(fā)的一款實時Linux。
(二)TimeSys Linux。它通過消除Linux內核的實時限制來達到實時性的,把中斷(IRQ)和軟中斷(softIRQ)全部線程化并賦予不同的優(yōu)先級,實時任務可以有比中斷線程更高的優(yōu)先級,使用Mutex替代spinlock來使得自旋鎖完全可搶占。
(三)可搶占式內核和低延遲內核。這兩種方法都是通過給Linux標準內核打上不同補丁的方法,從而使Linux內核變成可搶占式內核或低延遲內核。
(四)中斷軟件模擬響應時間的分析及解決方法。任務的響應時間被定義為一個事件的發(fā)生和任務響應這一事件開始執(zhí)行之間的間隔時間,通常有以下幾個因素影響任務的響應時間。(1)中斷分配時間IDT:當一個中斷產生時,在調用中斷處理程序占用CPU以前,操作系統(tǒng)用來保存所有的寄存器中的內容和系統(tǒng)中其他的關于這一任務狀態(tài)的時間;(2)中斷服務時間IST:中斷服務程序用來從硬件設備讀取信息或從操作系統(tǒng)收集信息所用的時間;(3)內核搶占時間KPT:在操作系統(tǒng)意欲搶占當前進程與搶占實際上發(fā)生之間的時間間隔;(4)調度延遲SD:調度程序用來調度另一個線程投入運行的時間;(5)進程切換時間CST:當前線程用來保存寄存器和系統(tǒng)狀態(tài)的時間與將要運行的線程恢復寄存器中的內容和系統(tǒng)狀態(tài)的時間總和;(6)系統(tǒng)調用返回時間RST:處于內核態(tài)的線程在它返回用戶態(tài)之前檢查一些狀態(tài)所用的時間。其中,SD、CST和RST總是固定不變的,如果Linux內核設計得當的話,IDT、IST和KPT可以有效的減少。在實時應用的環(huán)境中,若干個中斷同時發(fā)生的情況是完全可能存在的。這時任務的響應時間最多將包含N(IDT+IST),N為中斷數。中斷軟件模擬被用來解決多個中斷同時發(fā)生的情形。當一個硬件中斷發(fā)生時,系統(tǒng)只是簡單的在時間表中報告這一時間的發(fā)生,然后立即將CPU的控制權返回給操作系統(tǒng),完全略過查中斷向量表并執(zhí)行相應的中斷服務程序。系統(tǒng)在Linux內核之前截獲了所有硬中斷信號,并根據當前實時任務的需要,由軟中斷模擬機制處理或掛起該中斷。采用這個方法,可以減少當多個中斷同時發(fā)生時任務的響應時間,最長的延遲時間為N*IST’。
(五)改善Linux內核實時任務的調度策略。常用的實時調度算法有:(1)基于優(yōu)先級的調度算法?;趦?yōu)先級的調度算法調度器以優(yōu)先級作為尋求下一個任務執(zhí)行的依據。可分為兩種類型:1)靜態(tài)優(yōu)先級調度算法:該算法給系統(tǒng)中所有進程都靜態(tài)的分配一個優(yōu)先級。靜態(tài)優(yōu)先級的分配可以根據應用的屬性來進行;2)動態(tài)優(yōu)先級調度算法:該算法根據任務的資源需求來動態(tài)的分配任務的優(yōu)先級。EDF算法是一種典型的動態(tài)優(yōu)先級調度算法,該算法根據就緒隊列中各個任務的截止期限來分配優(yōu)先級,具有最近截止期限的任務的優(yōu)先級最高;(2)基于時間驅動的調度算法。該算法本質上是一種設計時就確定下來的離線的靜態(tài)調度方法。在系統(tǒng)的設計階段,在明確系統(tǒng)中所有處理的情況下,對于各個任務的開始、切換以及結束時間等事先組出明確的安排和設計;(3)基于比例共享的調度算法。這是一種越來越受到關注的實時調度模式,基于GPS的算法。其基本思想就是按照一定的權重(CPU使用的比例)對一組需要調度的任務進行調度,使其執(zhí)行時間與權重完全成正比。可以通過兩種方法實現:1)調節(jié)各個就緒進程出現在當前調度隊列隊首的頻率,并調度隊首的進程執(zhí)行;2)逐次調度就緒隊列中的各個進程投入運行,但根據分配的權重調節(jié)分配給每個進程的運行時間片。
五、結束語
嵌入式技術具有廣闊的應用前景,滲透于社會生活的諸多領域,把Linux應用于嵌入式系統(tǒng),將其自身固有的優(yōu)越性融入嵌入式技術,是嵌入式技術發(fā)展的一個重要方向。Linux實時性能的逐步完善和應用,需要我們及時跟蹤國內外Linux發(fā)展動態(tài),積累開發(fā)經驗,走出自己的路。
參考文獻:
[1]駱耀祖.Linux操作系統(tǒng)分析教程[M].北京:清華大學出版社,2004.
[2]董曉峰,顧新.關于Linux內核可搶占性的研究[J].計算機工程,2005.
[作者簡介]龍增東(1991.08-),男,苗族,貴州人,現就讀于信息管理與信息系統(tǒng)專業(yè),研究方向:計算機應用。