<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > Linux分時操作系統(tǒng)的實時性分析

          Linux分時操作系統(tǒng)的實時性分析

          作者: 時間:2010-12-12 來源:網(wǎng)絡(luò) 收藏

          一、引言

          本文引用地址:http://www.ex-cimer.com/article/151227.htm


          本身為,其系統(tǒng)目標(biāo)為較好的平均響應(yīng)時間和較高的吞吐量,而實時系統(tǒng)則主要考慮任務(wù)的按時完成、盡量減少進(jìn)程運行的不可預(yù)測性等。但與商業(yè)嵌入式相比遵循GPL,具有源代碼開放、定制方便、支持廣泛的計算機(jī)硬件等優(yōu)點,所以,近年來嵌入式成為嵌入式系統(tǒng)方向上的一個研究熱點。

          本文首先了實時系統(tǒng)的特點和Linux內(nèi)核在實時應(yīng)用方面的不足,然后針對影響能的若干方面進(jìn)行研究,提出解決方案,最后總結(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):要求可確定性強(qiáng),具有明確的實時約束,在某個限定的時刻之前不能完成任務(wù)將造成災(zāi)難性的后果。

          (2) 軟實時系統(tǒng):也對時間敏感,但偶爾發(fā)生不能滿足嚴(yán)格實時要求的情況也是允許的。

          三、Linux在實時方面存在的不足

          Linux雖然符合POSIX1003.1b關(guān)于實時擴(kuò)展部分的標(biāo)準(zhǔn),例如:支持SCHED_FIFO和SCHED_RR實時調(diào)度策略,鎖內(nèi)存機(jī)制(memorylocking),實時信號等功能,但是由于其最初的設(shè)計目標(biāo)為通用操作系統(tǒng),因此作為一個實時操作系統(tǒng),Linux仍然存在如下缺陷:

          (1) Linux的內(nèi)核本身是非搶占的。Linux下分用戶態(tài)和核心態(tài)兩種模式,當(dāng)進(jìn)程運行在用戶態(tài)時,可被優(yōu)先級更高的進(jìn)程搶占,但當(dāng)它進(jìn)入核心態(tài)時,其他用戶態(tài)進(jìn)程優(yōu)先級再高也不能搶占它。

          (2) Linux雖然給實時進(jìn)程提供了較高的優(yōu)先級,但是沒有加入時間限制。例如:完成的最后期限、應(yīng)在多長時間內(nèi)完成、執(zhí)行周期等等。同時,其他大量的非實時進(jìn)程也可能對實時進(jìn)程造成阻塞,無法確保實時進(jìn)程的響應(yīng)時間。

          (3) 時鐘粒度粗糙。時鐘管理是操作系統(tǒng)的脈搏,任務(wù)的執(zhí)行和中止在很多情況下都是由時鐘直接或間接喚起的,它還是進(jìn)程調(diào)度的重要依據(jù)。Linux的周期模式定時器頻率僅為100Hz,遠(yuǎn)不能滿足實時應(yīng)用的要求。

          四、改進(jìn)內(nèi)核實時性的與研究

          從中斷軟件模擬、可搶占式內(nèi)核體系結(jié)構(gòu)、實時任務(wù)的調(diào)度策略這三個方面對嵌入式Linux內(nèi)核進(jìn)行研究,并給出了相應(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)前進(jìn)程與搶占實際上發(fā)生之間的時間間隔。

          (4) 調(diào)度延遲SD(scheduledelay):調(diào)度程序用來調(diào)度另一個線程投入運行的時間。

          (5) 進(jìn)程切換時間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ù)脑?,IDT、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ù)的需要,由軟中斷模擬機(jī)制處理或掛起該中斷(例如:IBMPC中的8259中斷控制器)。

          采用這個方法,可以減少當(dāng)多個中斷同時發(fā)生時任務(wù)的響應(yīng)時間,最長的延遲時間為N*IST’,其中N為中斷數(shù)。在這里之所以是IST’,而不是IST,是因為采用軟中斷軟件模擬的方法使得在IST時間段內(nèi)只執(zhí)行一些簡單的操作。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();