技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 嵌入式Linux操作系統(tǒng)實時性的分析與研究

嵌入式Linux操作系統(tǒng)實時性的分析與研究

時間:2008-09-26 17:33:00來源:dujing

導(dǎo)語:?通過分析嵌入式Linux在實時應(yīng)用中的不足,從軟中斷模擬技術(shù)、可搶占式內(nèi)核機制和實時調(diào)度策略等方面給出了改善系統(tǒng)實時性能的方法,同時提出了宏觀調(diào)度結(jié)構(gòu),拓展了實時系統(tǒng)的應(yīng)用范圍。
摘要:通過分析嵌入式Linux在實時應(yīng)用中的不足,從軟中斷模擬技術(shù)、可搶占式內(nèi)核機制和實時調(diào)度策略等方面給出了改善系統(tǒng)實時性能的方法,同時提出了宏觀調(diào)度結(jié)構(gòu),拓展了實時系統(tǒng)的應(yīng)用范圍。 一、引言 Linux本身為分時操作系統(tǒng),其系統(tǒng)目標(biāo)為較好的平均響應(yīng)時間和較高的吞吐量,而實時系統(tǒng)則主要考慮任務(wù)的按時完成、盡量減少進程運行的不可預(yù)測性等。但與商業(yè)嵌入式操作系統(tǒng)相比Linux遵循GPL,具有源代碼開放、定制方便、支持廣泛的計算機硬件等優(yōu)點,所以,近年來嵌入式Linux成為嵌入式系統(tǒng)方向上的一個研究熱點。本文首先分析了實時系統(tǒng)的特點和Linux內(nèi)核在實時應(yīng)用方面的不足,然后針對影響操作系統(tǒng)實時性能的若干方面進行研究,提出解決方案,最后總結(jié)全文。 二、實時系統(tǒng)的分類 實時系統(tǒng)最重要的特點就是實時性,即系統(tǒng)的正確性不僅僅依賴于計算的邏輯結(jié)果的正確性,還取決于輸出結(jié)果時間的及時性。從這個角度看,實時系統(tǒng)是“一個能夠在指定或者確定的時間內(nèi)完成系統(tǒng)功能和對外部環(huán)境做出響應(yīng)的系統(tǒng)”。按對實時性能要求的程度,實時系統(tǒng)可分為兩類: (1) 硬實時系統(tǒng):要求可確定性強,具有明確的實時約束,在某個限定的時刻之前不能完成任務(wù)將造成災(zāi)難性的后果。 (2) 軟實時系統(tǒng):也對時間敏感,但偶爾發(fā)生不能滿足嚴格實時要求的情況也是允許的。 三、Linux在實時方面存在的不足 Linux雖然符合POSIX1003.1b關(guān)于實時擴展部分的標(biāo)準(zhǔn),例如:支持SCHED_FIFO和SCHED_RR實時調(diào)度策略,鎖內(nèi)存機制(memorylocking),實時信號等功能,但是由于其最初的設(shè)計目標(biāo)為通用分時操作系統(tǒng),因此作為一個實時操作系統(tǒng),Linux仍然存在如下缺陷: (1) Linux的內(nèi)核本身是非搶占的。Linux下分用戶態(tài)和核心態(tài)兩種模式,當(dāng)進程運行在用戶態(tài)時,可被優(yōu)先級更高的進程搶占,但當(dāng)它進入核心態(tài)時,其他用戶態(tài)進程優(yōu)先級再高也不能搶占它。 (2) Linux雖然給實時進程提供了較高的優(yōu)先級,但是沒有加入時間限制。例如:完成的最后期限、應(yīng)在多長時間內(nèi)完成、執(zhí)行周期等等。同時,其他大量的非實時進程也可能對實時進程造成阻塞,無法確保實時進程的響應(yīng)時間。 (3) 時鐘粒度粗糙。時鐘管理是操作系統(tǒng)的脈搏,任務(wù)的執(zhí)行和中止在很多情況下都是由時鐘直接或間接喚起的,它還是進程調(diào)度的重要依據(jù)。Linux的周期模式定時器頻率僅為100Hz,遠不能滿足實時應(yīng)用的要求。 四、改進內(nèi)核實時性的分析與研究 從中斷軟件模擬、可搶占式內(nèi)核體系結(jié)構(gòu)、實時任務(wù)的調(diào)度策略這三個方面對嵌入式Linux內(nèi)核進行研究,并給出了相應(yīng)的提高實時性的方法。 1. 響應(yīng)時間的分析及解決方法 任務(wù)的響應(yīng)時間被定義為一個事件的發(fā)生和任務(wù)響應(yīng)這一事件開始執(zhí)行之間的間隔時間,通常有以下幾個因素影響任務(wù)的響應(yīng)時間。 (1) 中斷分配時間IDT(interruptdispatchtime):當(dāng)一個中斷產(chǎn)生時,在調(diào)用中斷處理程序占用CPU以前,操作系統(tǒng)用來保存所有的寄存器中的內(nèi)容和系統(tǒng)中其他的關(guān)于這一任務(wù)狀態(tài)的時間。 (2) 中斷服務(wù)時間:IST(interruptservicetime):中斷服務(wù)程序用來從硬件設(shè)備讀取信息或從操作系統(tǒng)收集信息所用的時間。 (3) 內(nèi)核搶占時間KPT(kernelpreemptiontime):在操作系統(tǒng)意欲搶占當(dāng)前進程與搶占實際上發(fā)生之間的時間間隔。 (4) 調(diào)度延遲SD(scheduledelay):調(diào)度程序用來調(diào)度另一個線程投入運行的時間。 (5) 進程切換時間CST(contestswitchingtime):當(dāng)前線程用來保存寄存器和系統(tǒng)狀態(tài)的時間與將要運行的線程恢復(fù)寄存器中的內(nèi)容和系統(tǒng)狀態(tài)的時間總和。 (6) 系統(tǒng)調(diào)用返回時間RST(returnfromsystemcall):處于內(nèi)核態(tài)的線程在它返回用戶態(tài)之前檢查一些狀態(tài)所用的時間。 以上這些時間中,SD、CST和RST總是固定不變的,如果Linux內(nèi)核設(shè)計得當(dāng)?shù)脑挘琁DT、IST和KPT可以有效的減少。在實時應(yīng)用的環(huán)境中,若干個中斷同時發(fā)生的情況是完全可能存在的。這時任務(wù)的響應(yīng)時間最多將包含N(IDT+IST),N為中斷數(shù)。 中斷軟件模擬被用來解決多個中斷同時發(fā)生的情形。當(dāng)一個硬件中斷發(fā)生時,系統(tǒng)只是簡單的在時間表中報告這一時間的發(fā)生,然后立即將CPU的控制權(quán)返回給操作系統(tǒng),完全略過了查中斷向量表并執(zhí)行相應(yīng)的中斷服務(wù)程序。系統(tǒng)在Linux內(nèi)核之前截獲了所有應(yīng)中斷信號,并根據(jù)當(dāng)前實時任務(wù)的需要,由軟中斷模擬機制處理或掛起該中斷(例如:IBMPC中的8259中斷控制器)。 采用這個方法,可以減少當(dāng)多個中斷同時發(fā)生時任務(wù)的響應(yīng)時間,最長的延遲時間為N*IST’,其中N為中斷數(shù)。在這里之所以是IST’,而不是IST,是因為采用軟中斷軟件模擬的方法使得在IST時間段內(nèi)只執(zhí)行一些簡單的操作。 2. 搶占式內(nèi)核體系結(jié)構(gòu)的設(shè)計 為了解決Linux實現(xiàn)硬實時的最大障礙,使Linux內(nèi)核成為完全可被搶占實時內(nèi)核,典型的實現(xiàn)方案是雙核結(jié)構(gòu)。使用實時核來運行實時任務(wù),Linux內(nèi)核來運行非實時任務(wù)。例如:對于實時數(shù)據(jù)采樣分析而言,利用實時內(nèi)核運行一個實時任務(wù)來完成數(shù)據(jù)采集,另一個實時任務(wù)完成數(shù)據(jù)分析和控制輸出功能;同時利用Linux內(nèi)核上運行的界面來進行數(shù)據(jù)顯示。如圖1所示。 [align=center][img=307,202]http://www.e-works.net.cn/images/127886737032031250.GIF[/img] 圖1 雙內(nèi)核結(jié)構(gòu)[/align]
在Linux內(nèi)核和硬件之間加個小的實時核,由它管理中斷,提供一些必要的功能,如底層任務(wù)創(chuàng)建、中斷服務(wù)程序,并且為底層任務(wù)、ISR和Linux進程之間進行通信排隊;而Linux內(nèi)核本身則成為優(yōu)先級最低的Idletask。 對實時性要求強的應(yīng)用編寫成實時任務(wù),在實時內(nèi)核上直接運行。Linux內(nèi)核可以被優(yōu)先級更高的實時任務(wù)搶占。對于Linux內(nèi)核的修改主要集中在三方面:(1) 在Linux內(nèi)核中影響實時性的地方增加控制點,使內(nèi)核在控制點可以被搶占,減少內(nèi)核搶占延遲;(2) 將執(zhí)行時間較長的系統(tǒng)劃分為幾個甚至是十幾個較小的塊分別執(zhí)行,使實時任務(wù)隨時中斷非實時任務(wù);(3) 根據(jù)實際需要,增加部分功能。 隨著嵌入式應(yīng)用的深入,特別是在數(shù)字通信和網(wǎng)絡(luò)中的應(yīng)用,多核結(jié)構(gòu)的處理器也陸續(xù)上市。如:Motorola公司研發(fā)的MPC8260PowerQUICC||融合了兩個CPU-嵌入式PowerPC內(nèi)核和通信處理模塊(CPM);Infineon公司推出的TC10GP和增強型TC1130都是三核(TriCore)結(jié)構(gòu)的微處理器,這些處理器的產(chǎn)生對于Linux應(yīng)用中的實時性都大有幫助。 3. 實時調(diào)度的算法研究 常用的實時調(diào)度算法有:基于優(yōu)先級的調(diào)度算法(priority-drivenscheduling,PD);基于時間驅(qū)動的調(diào)度算法(time-drivenscheduling,TD);基于比例共享的調(diào)度算法(share-drivensched2uling,SD)。
    [*]基于優(yōu)先級的調(diào)度算法
調(diào)度器以優(yōu)先級作為尋求下一個任務(wù)執(zhí)行的依據(jù)??煞譃槿缦聝煞N類型: (1) 靜態(tài)優(yōu)先級調(diào)度算法:該算法給系統(tǒng)中所有進程都靜態(tài)的分配一個優(yōu)先級。靜態(tài)優(yōu)先級的分配可以根據(jù)應(yīng)用的屬性來進行,例如任務(wù)的周期、用戶優(yōu)先級或者其他預(yù)先確定的策略。RM(RateMonotonic)是一種典型的靜態(tài)優(yōu)先級調(diào)度算法,它根據(jù)任務(wù)執(zhí)行周期的長短來決定調(diào)度優(yōu)先級,執(zhí)行周期小的任務(wù)具有較高的優(yōu)先級。 (2) 動態(tài)優(yōu)先級調(diào)度算法:這種算法根據(jù)任務(wù)的資源需求來動態(tài)的分配任務(wù)的優(yōu)先級。EDF(earliestdeadlinefirst)算法是一種典型的動態(tài)優(yōu)先級調(diào)度算法,該算法根據(jù)就緒隊列中各個任務(wù)的截止期限來分配優(yōu)先級,具有最近截止期限的任的優(yōu)先級最高。
    [*]基于時間驅(qū)動的調(diào)度算法
該算法本質(zhì)上是一種設(shè)計時就確定下來的離線的靜態(tài)調(diào)度方法。在系統(tǒng)的設(shè)計階段,在明確系統(tǒng)中所有處理的情況下,對于各個任務(wù)的開始、切換以及結(jié)束時間等事先組出明確的安排和設(shè)計。
    [*]基于比例共享的調(diào)度算法
這是一種越來越受到關(guān)注的實時調(diào)度模式,基于GPS(generalprocessorscheduling)的算法,其基本思想就是按照一定的權(quán)重(CPU使用的比例)對一組需要調(diào)度的任務(wù)進行調(diào)度,使其執(zhí)行時間與權(quán)重完全成正比??梢酝ㄟ^兩種方法來實現(xiàn)比例共享調(diào)度算法:(1)是調(diào)節(jié)各個就緒進程出現(xiàn)在當(dāng)前調(diào)度隊列隊首的頻率,并調(diào)度隊首的進程執(zhí)行;(2)是逐次調(diào)度就緒隊列中的各個進程投入運行,但根據(jù)分配的權(quán)重調(diào)節(jié)分配給每個進程的運行時間片。比例共享算法包括輪轉(zhuǎn)法、公平共享法、公平隊列法和彩票調(diào)度法等幾類。 每一種調(diào)度策略都有自己的優(yōu)越性和不足。在這里我們提出了一種宏觀調(diào)度結(jié)構(gòu),通過設(shè)計和構(gòu)造多屬性和多調(diào)度器的選擇機制,使三種實時調(diào)度策略的應(yīng)用都得到支持,相對于只對單種調(diào)度策略提供支持的方案,拓展了系統(tǒng)的可使用范圍。宏觀調(diào)度結(jié)構(gòu)如圖2所示。 [align=center][img=462,389]http://www.e-works.net.cn/images/127886737201406250.GIF[/img] 圖2 宏觀調(diào)度結(jié)構(gòu)[/align]
我們給每一個實時任務(wù)定義了4個調(diào)度屬性:priority(優(yōu)先級:限制該任務(wù)比相關(guān)聯(lián)的其他任務(wù)的優(yōu)先權(quán))、starttime(起始時間:任務(wù)開始執(zhí)行時間)、finishtime(截止時間:任務(wù)停止時間)和budget(預(yù)設(shè)值:任務(wù)允許執(zhí)行時間),不同屬性的數(shù)據(jù)對應(yīng)不同的調(diào)度策略。宏觀調(diào)度結(jié)構(gòu)分為兩個模塊:屬性分配模塊和調(diào)度器選擇模塊。屬性分配模塊給每一個實時任務(wù)分配多個屬性值,并通過其中的一兩個屬性值決定哪個屬性優(yōu)先,這樣調(diào)度器選擇模塊就可以根據(jù)屬性的優(yōu)先級別選擇不同的調(diào)度器。例如:如果優(yōu)先級屬性優(yōu)先,則調(diào)度器就變成了一個純粹的PD調(diào)度器;如果截止時間優(yōu)先,那么調(diào)度器就作為EDF調(diào)度器來工作。 實驗時采用Pentium-||400處理器,128MB內(nèi)存,運行環(huán)境Linux2.0.35(以RED-Linux0.5為補?。?,以RM調(diào)度策略為例,分別測量每一次系統(tǒng)請求消耗的時間。數(shù)據(jù)整理如下:宏觀調(diào)度結(jié)構(gòu)下屬性分配模塊消耗的時間大部分不到40Ls,平均約35Ls,調(diào)度器選擇模塊平均消耗時間約85Ls,消耗時間總計為118Ls,約占0.118%的CPU時間;單一調(diào)度策略的情況平均消耗時間約為25Ls,約占0.025%的CPU時間。宏觀調(diào)度結(jié)構(gòu)的延遲時間為傳統(tǒng)調(diào)度方式的5倍,對于大多數(shù)的嵌入式系統(tǒng)來講內(nèi)核的靈活性和可配置性比調(diào)度的延時更為重要,而宏觀結(jié)構(gòu)和單一調(diào)度結(jié)構(gòu)的CPU可用時間分別為99.88%和99.97%,差別極小,符合嵌入式系統(tǒng)實時性要求。 五、結(jié)論與展望 Linux雖然為分時操作系統(tǒng),但由于其功能強大、源代碼開放以及可移植性強等優(yōu)勢,已成為日益流行的嵌入式實時操作系統(tǒng)的解決方案。本文從軟中斷模擬技術(shù)、可搶占式內(nèi)核和實時調(diào)度策略三個方面給出了改善系統(tǒng)實時性能的方法,并提出了通過采用宏觀調(diào)度結(jié)構(gòu)實現(xiàn)的混合調(diào)度,拓展了實時系統(tǒng)的應(yīng)用范圍。Linux實時性能的逐步完善,必將大大促進嵌入式Linux在工業(yè)控制、后PC時代信息電器等領(lǐng)域的廣泛應(yīng)用,應(yīng)用的需要也會進一步促進大量新型控制算法的出現(xiàn)。

標(biāo)簽:

點贊

分享到:

上一篇:嵌入式Linux系統(tǒng)的設(shè)計與應(yīng)用

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(m.u63ivq3.com)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負版權(quán)法律責(zé)任。

網(wǎng)站簡介|會員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網(wǎng)-工業(yè)自動化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網(wǎng)安備 44030402000946號