Linux操作系統(tǒng)實(shí)時(shí)性分析及改進(jìn)策略
掃描二維碼
隨時(shí)隨地手機(jī)看文章
電子論壇 您現(xiàn)在的位置:FIFO 的貨源和報(bào)價(jià) FIFO 的相關(guān)技術(shù)信息 其他型號(hào) 香港天龍國(guó)際貿(mào)易有限公司聯(lián)系人:龍生 高生 james lung
電話:0755-82235138 >>更多供應(yīng)商 Linux操作系統(tǒng)實(shí)時(shí)性分析及改進(jìn)策略 1前言
實(shí)時(shí)系統(tǒng)可以定義為"一個(gè)能夠在事先指定或確定的時(shí)間內(nèi)完成系統(tǒng)功能和對(duì)外部或內(nèi)部、同步或異步事件作出響應(yīng)的系統(tǒng)"。實(shí)時(shí)操作系統(tǒng) (Realtime OS)是實(shí)時(shí)系統(tǒng)中使用的操作系統(tǒng)。實(shí)時(shí)操作系統(tǒng)的任務(wù)不只是要求完成每一個(gè)工作,并且要按照給定的時(shí)限按時(shí)完成每一個(gè)工作,所以實(shí)時(shí)操作系統(tǒng)必須能夠確保其任務(wù)對(duì)時(shí)間的要求。
實(shí)時(shí)有硬實(shí)時(shí)和軟實(shí)時(shí)之分。硬實(shí)時(shí)和軟實(shí)時(shí)的區(qū)別就在于對(duì)外界的事件做出反應(yīng)的時(shí)間。硬實(shí)時(shí)系統(tǒng)必須是及時(shí)對(duì)事件做出反應(yīng),絕對(duì)不能錯(cuò)過(guò)事件處理的deadline情況。在硬實(shí)時(shí)系統(tǒng)中如果出現(xiàn)了這樣的情況就意味著巨大的損失和災(zāi)難。比如說(shuō)核電站中的堆芯溫度控制系統(tǒng),如果沒(méi)有對(duì)堆芯過(guò)熱做出及時(shí)的處理,后果不堪想象。軟實(shí)時(shí)系統(tǒng)是指,如果在系統(tǒng)負(fù)荷較重的時(shí)候,允許發(fā)生錯(cuò)過(guò)deadline的情況而且不會(huì)造成太大的危害。比如說(shuō)程控電話系統(tǒng)允許在105個(gè)電話中有一個(gè)接不通。
現(xiàn)有的Linux是一個(gè)通用的操作系統(tǒng),它是按照分時(shí)系統(tǒng)的目標(biāo)設(shè)計(jì)的,進(jìn)程調(diào)度強(qiáng)調(diào)平衡各進(jìn)程之間的響應(yīng)時(shí)間來(lái)保證公平的CPU時(shí)間占用。雖然采用了許多技術(shù)來(lái)加快系統(tǒng)運(yùn)行和反應(yīng)速度,但它本質(zhì)上不是一個(gè)實(shí)時(shí)操作系統(tǒng)。為了保證其實(shí)時(shí)性,必須采用一定的策略加以改進(jìn)。
2影響Linux實(shí)時(shí)性能的主要因素
在Linux系統(tǒng)中,響應(yīng)中斷的過(guò)程如下:設(shè)備產(chǎn)生一個(gè)中斷、中斷處理函數(shù)開(kāi)始執(zhí)行、喚醒任務(wù)并在運(yùn)行隊(duì)列排隊(duì)、任務(wù)獲取CPU并開(kāi)始執(zhí)行、任務(wù)執(zhí)行完畢。圖1為事件處理過(guò)程各個(gè)階段圖以及影響響應(yīng)時(shí)間的因素(每個(gè)階段下面的字母A~J表示這個(gè)階段中影響響應(yīng)時(shí)間的因素):
由圖中可以分析出導(dǎo)致Linux系統(tǒng)不能滿足實(shí)時(shí)系統(tǒng)短的響應(yīng)時(shí)間和確定的執(zhí)行行為的要求的主要因素有以下方面:
(1)Linux操作系統(tǒng)存在關(guān)中斷的機(jī)制。導(dǎo)致的結(jié)果是:如果低優(yōu)先級(jí)的進(jìn)程由于進(jìn)入臨界區(qū)或者為了盡快完成任務(wù)而關(guān)閉了中斷,那么即使有高優(yōu)先級(jí)實(shí)時(shí)進(jìn)程的中斷發(fā)生系統(tǒng)也無(wú)法響應(yīng)。這種情況在實(shí)時(shí)系統(tǒng)中是不允許發(fā)生的。
(2)Linux操作系統(tǒng)內(nèi)核是禁止搶占的。一個(gè)進(jìn)程一旦進(jìn)入內(nèi)核,它將運(yùn)行直到系統(tǒng)調(diào)用結(jié)束或進(jìn)程被阻塞。這時(shí)候一個(gè)高優(yōu)先級(jí)的實(shí)時(shí)進(jìn)程只能等待。這樣的設(shè)計(jì)是為了簡(jiǎn)化任務(wù)調(diào)度,但對(duì)實(shí)時(shí)進(jìn)程來(lái)說(shuō)這樣的時(shí)間等待是不允許的。
FIFO技術(shù)。當(dāng)insmod將rtl_FIFO.o驅(qū)動(dòng)程序插入Linux內(nèi)核時(shí),該驅(qū)動(dòng)程序?qū)⒆约鹤?cè)為RTLinux的一部分,并成為L(zhǎng)inux驅(qū)動(dòng)程序。一旦插入Linux內(nèi)核,用戶空間進(jìn)程和實(shí)時(shí)任務(wù)都可使用實(shí)時(shí)FIFO,如圖2所示。
任何硬實(shí)時(shí)任務(wù)都是在RTLinux的控制下運(yùn)行的,該任務(wù)一般可執(zhí)行周期性任務(wù)、處理中斷并與I/O設(shè)備驅(qū)動(dòng)程序通信,以采集或輸出模擬和數(shù)字信息。當(dāng)實(shí)時(shí)任務(wù)需要告訴用戶進(jìn)程有一個(gè)事件將發(fā)生時(shí),它便將這一消息送給實(shí)時(shí)FIFO。每一個(gè)FIFO都是在一