




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
改善嵌入式Linux實時性能的方法研究
摘要:分析了Linux的實時性,針對其在實時應用中的技術障礙,在參考了與此相關研究基礎上,從三方面提出了改善Linux實時性能的改進措施。為提高嵌入式應用響應時間精度,提出兩種細化Linux時鐘粒度方法;為增強系統(tǒng)內核對實時任務的響應能力,采用插入搶占點和修改內核法增強Linux內核的可搶占性;為保證硬實時任務的時限要求,把原Linux的單運行隊列改為雙運行隊列,硬實時任務單獨被放在一個隊列中,并采用MLF調度算法代替原內核的FIFO調度算法。
關鍵詞:Linux;實時性;調度策略;搶占
1引言
目前,無論是在日常生活,還是在工業(yè)控制,航空航天,軍事等方面,嵌入式系統(tǒng)都有著非常廣泛的應用。嵌入式系統(tǒng)目前主要有:WindowsCE、VxWorks、QNX等,它們都具有較好的實時性、系統(tǒng)可靠性、任務處理隨機性等優(yōu)點,但是它們的價格普遍偏高。而嵌入式Linux以其非常低廉的價格,可以大大的降低成本,逐漸成為嵌入式操作系統(tǒng)的首選。但是,作為通用操作系統(tǒng)的Linux,由于其在實時應用領域的技術障礙,要應用在嵌入式領域,還必須對Linux內核作必要的改進。許多嵌入式設備都要求與外部環(huán)境有硬實時的交互能力,將最初按照分時系統(tǒng)目標設計的Linux改造成能支持硬實時性的操作系統(tǒng)顯得十分重要。幸運的是,Linux及其相關項目的開放源碼特征為深入研究其內核并加以改造提供了可行性,可以修改Linux內核中的各個模塊以達到滿足嵌入式應用的需求,提高軟件方面的開發(fā)速度。目前,改善Linux內核的設計與實現(xiàn),使其適用于實時領域吸引了許多研究和開發(fā)人員的注意力[1-4]。常用的實時性改造方法是采用雙核方法,這種方法的弊端在于實時任務的開發(fā)是直接面向提供精確實時服務的小實時核心的,而不是功能強大的常規(guī)Linux核心?;诖?,近年來修改核的方法越來越受到科研人員的重視,這種方法是基于已有Linux系統(tǒng)對于軟件開發(fā)的支持,進行源代碼級修改而使Linux變成一個真正的實時操作系統(tǒng)。本文分析了標準Linux在實時應用中的技術障礙,參考了修改核方法的思想,從內核時鐘管理、內核的搶占性、內核調度算法三方面論述了改善標準Linux實時性能的方法。
Linux作為一個通用操作系統(tǒng),主要考慮的是調度的公平性和吞吐量等指標。然而,在實時方面它還不能很好地滿足實時系統(tǒng)方面的需要,其本身僅僅提供了一些實時處理的支持,這包括支持大部分POSIX標準中的實時功能,支持多任務、多線程,具有豐富的通信機制等;同時也提供了符合POSIX標準的調度策略,包括FIFO調度策略、時間片輪轉調度策略和靜態(tài)優(yōu)先級搶占式調度策略。Linux區(qū)分實時進程和普通進程,并采用不同的調度策略。
為了同時支持實時和非實時兩種進程,Linux的調度策略簡單講就是優(yōu)先級加上時間片。當系統(tǒng)中有實時進程到來時,系統(tǒng)賦予它最高的優(yōu)先級。體現(xiàn)在實時性上,Linux采用了兩種簡單的調度策略,即先來先服務調度和時間片輪轉調度。具體是將所有處于運行狀態(tài)的任務掛接在一個run-queue隊列中,并將任務分成實時和非實時任務,對不同的任務,在其任務控制塊task-struct中用一個policy屬性來確定其調度策略。對實時性要求較嚴的硬實時任務采用SCHED-FIFO調度,使之在一次調度后運行完畢。對普通非實時進程,Linux采用基于優(yōu)先級的輪轉策略。
盡管Linux本身提供了一些支持實時性的機制,然而,由于Linux系統(tǒng)是以高的吞吐量和公平性為追求目標,基本上沒有考慮實時應用所要滿足的時間約束,它只是提供了一些相對簡單的任務調度策略。因此,實時性問題是將Linux應用于嵌入式系統(tǒng)開發(fā)的一大障礙,無法在硬實時系統(tǒng)中得到應用。Linux在實時應用中的技術障礙具體表現(xiàn)在:
Linux系統(tǒng)時鐘精度太過粗糙,時鐘中斷周期為10ms,使得其時間粒度過大,加大了任務響應延遲。
Linux的內核是不可搶占的,當一個任務通過系統(tǒng)調用進入內核態(tài)運行時,一個具有更高優(yōu)先級的進程,只有等待處于核心態(tài)的系統(tǒng)調用返回后方能執(zhí)行,這將導致優(yōu)先級逆轉。實時任務執(zhí)行時間的不確定性,顯然不能滿足硬實時應用的要求。
Linux采用對臨界區(qū)操作時屏蔽中斷的方式,在中斷處理中是不允許進行任務調度的,從而抑制了系統(tǒng)及時響應外部操作的能力。
缺乏有效的實時任務調度機制和調度算法。
針對這些問題,利用Linux作為底層操作系統(tǒng),必須增強其內核的實時性能,從而構建出一個具有實時處理能力的嵌入式系統(tǒng),適應嵌入式領域應用的需要。
近年來,人們對于Linux內核實時性改造提出了一些方法和設想,它們采用了不同的思路和技術方案。歸納總結,支持Linux的硬實時性一般有兩種策略:一種是直接修改Linux內核,重新編寫一個由優(yōu)先級驅動的實時調度器,替換原有內核中的進程調度器,KURT是采用這一方案較為成功的實時Linux操作系統(tǒng);另外一種是在Linux內核之外,以可加載內核模塊的形式添加實時內核,確保其高響應特性,實時內核接管來自硬件的所有中斷,并依據是否是實時任務決定是否直接響應。新墨西哥科技大學的RT-Linux,就是基于這種策略而開發(fā)的。以上兩種策略有其借鑒之處,但如果綜合考慮任務響應、內核搶占性、實時調度策略等幾個影響操作系統(tǒng)實時性能的重要方面,它們還不能很好的滿足實時性問題。為了增強嵌入式Linux實時性能,下文將就內核時鐘精度、內核的搶占性以及內核調度算法等相關問題重點研究相應的解決方法。針對Linux在實時應用中的技術障礙,將Linux改造成為支持實時任務的嵌入式操作系統(tǒng),主要從下面三個方面進行著手。
精確的計時是實時調度器正確操作所必須的,調度器通常要求在一個特定的時刻進行任務切換,計時的錯誤將導致背離計劃的調度,引起任務釋放抖動。標準Linux系統(tǒng)時鐘精度太過粗糙,時鐘中斷周期為10ms,不能滿足特定嵌入式應用領域中對于響應時間精度的要求。因此,在實時Linux應用中,需要細化其時鐘粒度,具體有兩種方式可以解決時鐘粒度問題:一是通過直接修改內核定時參數HZ的初值來細化時鐘粒度,如將標準Linux中內核定時參數HZ改為10000,則時鐘粒度可以達到100us,這種方式雖然會增加一些系統(tǒng)開銷,但在強周期性環(huán)境下,對定時器的設置只需初始化一次,在一定程度上保證了處理效率;二是通過對可編程中斷定時器8254或先進的可編程中斷控制器進行編程來改進Linux時鐘機制,以提高其時鐘的分辨率,使毫秒級的粗粒度定時器變成微秒級的細粒度定時器。
標準Linux內核是不可搶占的,導致較大的延遲,增強內核的可搶占性能,可提高系統(tǒng)內核對實時任務的響應能力。目前,有兩種方法修改Linux內核以提高實時任務搶占非實時任務的能力:一是在內核中增加搶占點的方法;二是直接將Linux內核改造成可搶占式內核。插入搶占點方法是在Linux內核中插入一些搶占點,當一個系統(tǒng)調用執(zhí)行到搶占點時,如果有更高優(yōu)先級的實時進程正在等待運行,那么正在執(zhí)行系統(tǒng)調用的內核進程將會把CPU的控制權轉交給等待運行的實時進程;如果沒有更高優(yōu)先級的實時進程等待,則當前進程將繼續(xù)執(zhí)行,此時系統(tǒng)增加的開銷僅僅是檢測一下調度標志。將Linux內核改造成可搶占式內核方法的基本思想是產生運行調度器的機會,縮短任務發(fā)生到調度函數運行的時間間隔。這種方法修改了Linux源代碼中的自旋鎖宏以避免競爭,并在其中引入一個稱作搶占鎖計數器的新的計數信號允許內核代碼搶占,當它為0時,允許搶占;當其為大于0的任何值時,禁止搶占。目前,針對這兩種修改Linux內核的方法,已經有兩種比較成熟的Linux內核補丁被研制出來:搶占式補丁和低時延補丁。其中,搶占式補丁是MontaVista開發(fā)的,它修改了內核代碼中的spinlock宏和中斷返回代碼,使得當前進程可被安全搶占,當自旋鎖釋放或者中斷線程完成時,調度器就有機會執(zhí)行調度;低時延補丁是由IngoMalnor提出,該方法只是在執(zhí)行時間長的代碼塊上搶占,不采用強制式搶占,因此,如何找到延時長的代碼塊是解決問題的關鍵。將進入系統(tǒng)的所有任務按實時性分成三類:硬實時、軟實時、非實時任務。硬實時要求系統(tǒng)確保任務執(zhí)行最壞情況下的執(zhí)行時間,即必須滿足實時事件的響應時間的截止期限,否則,將引發(fā)致命的錯誤;軟實時是指統(tǒng)計意義上的實時,一般整體吞吐量大或整體響應速度快,但不能保證特定任務在指定時期內完成。針對不同的實時性任務,分別采用不同的調度方法進行處理。
為了嚴格保證硬實時任務的時限要求,改善的Linux內核實時調度器采用了優(yōu)先級調度算法,目前最小松弛時間優(yōu)先調度算法MLF是動態(tài)優(yōu)先級調度最常見的實時調度策略。它在系統(tǒng)中為每一個任務設定松弛時間即:laxity=deadline―current_time―CPU_time_needed,系統(tǒng)優(yōu)先執(zhí)行具有最小松弛時間的任務。根據就緒隊列的各任務的松弛時間來分配優(yōu)先級,松弛時間最小的任務具有最高的優(yōu)先級。為了提高Linux的實時性,我們設計了MLF調度器,并把它作為可加載模塊加入Linux內核中,在實現(xiàn)中需對內核進行相應的修改。為了區(qū)分任務的類型,對基本Linux的task_struct屬性進行改進,在其中增加SCHED_MLF調度策略,并按task_struct中的policy的取值來進行區(qū)分,分別用SCHED_MLF,SCHED_RR,SCHED_OTHER來標識硬實時、軟實時、非實時任務。將處于運行狀態(tài)的三類任務放入兩個隊列,硬實時任務放入hard_real_queue隊列,采用MLF調度算法,軟實時和非實時任務放入non_real_queue隊列,沿用原內核的RR調度算法。這兩個隊列可以用一個run_queue的指針數組來指向,如圖1所示。圖1雙對列任務運行
雙隊列任務運行過程與原內核的單運行隊列執(zhí)行流程的主要區(qū)別在:首先,各硬實時任務采用了MLF調度算法代替原內核的FIFO調度,提高了Linux系統(tǒng)的實時性能。其次,在判斷是否有軟中斷需要處理之前需判斷硬實時任務隊列是否為空,如果不為空,即使存在中斷的后半部分需要處理,也要先調度硬實時任務投入運行,在硬實時隊列為空的條件下才去處理中斷的后半部分(因為中斷的后半部分沒有硬實時任務緊急)。最后,如果沒有硬實時任務存在,則說明只有run_queue[1]隊列中有軟實時或非實時任務存在,這時的處理方法和原內核對單運行隊列的處理方法相同。這樣改進后,可以明顯提高硬實時任務的調度效率,而在沒有硬實時任務時,系統(tǒng)性能沒有變化。
嵌入式技術具有廣闊的應用前景,滲透于社會生活的諸多領域,把Linux應用于嵌入式系統(tǒng),把Linux自身固有的優(yōu)越性融入嵌入式技術,是嵌入式技術發(fā)展的一個重要方向。然而,由于Linux在實時應用領域的技術障礙,要將其應用在嵌入式領域還必須修改Linux內核中的各個模塊以達到滿足嵌入式實時應用的需求。本文在分析Linux實時性的同時,探討了其本身提供的一些支持實時性的機制以及在實時應用中的技術障礙。而后,基于增強Linux內核實時性的主流技術,從細化時鐘粒度、增強內核搶占性及實時調度策略三方面入手,提出了改善Linux實時性能的優(yōu)化方法。
[1]趙慧斌,李小群,孫玉芳.改善Linux核心可搶占性方法的研究與實現(xiàn).計算機學報,2004,27(2):244-251
蔣溢,李琳皓,陳龍.Linux系統(tǒng)實時性探討.重慶大學學報,2005,28(3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國合式放大鏡數據監(jiān)測研究報告
- 2025至2030年中國PVC地毯保護地墊數據監(jiān)測研究報告
- 郵政面試筆試題及答案
- 專題5 功和簡單機械 2021年和2022年江蘇省南通市中考物理模擬試題匯編
- 2019-2025年消防設施操作員之消防設備基礎知識自我檢測試卷A卷附答案
- 2019-2025年軍隊文職人員招聘之軍隊文職管理學真題練習試卷A卷附答案
- 酒店合同范本(2篇)
- 2023年黑龍江公務員《行政職業(yè)能力測驗》試題真題及答案
- 環(huán)境保護與可持續(xù)發(fā)展知識點測試
- 語文課本里的經典詩文賞析
- GB/T 14410.1-2008飛行力學概念、量和符號第1部分:坐標軸系和運動狀態(tài)變量
- 合格供應商準入資料清單
- 醫(yī)學課件-耳穴壓豆教學課件
- 4.1.4公正性風險評價記錄表
- 電力拖動自動控制系統(tǒng)-運動控制系統(tǒng)(第5版)習題答案
- 關于印發(fā)《臨床輸血技術規(guī)范》的通知
- 高考語文復習:虛實結合手法 課件23張
- 離婚調查取證申請書
- 家庭電路故障分析-課件
- 設備學習電子圍欄g5tk400說明書
- 外研版一起五年級英語下冊全冊教案教學設計版
評論
0/150
提交評論