| 嵌入式軟件系統(tǒng)的實(shí)時(shí)性設(shè)計(jì) 電子科技大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院陳麗蓉熊光澤雷 航 摘要實(shí)時(shí)性是嵌入式軟件系統(tǒng)的一個(gè)重要特性,在軟件設(shè)計(jì)階段就應(yīng)該給予足夠的重視。在基于優(yōu)先級(jí)的可搶占調(diào)度方式下,如何安排任務(wù)的優(yōu)先級(jí)是影響系統(tǒng)實(shí)時(shí)性的一個(gè)重要因素,本文對(duì)此作了詳細(xì)論述。 關(guān)鍵詞嵌入式軟件系統(tǒng)實(shí)時(shí)性任務(wù)優(yōu)先級(jí) 引言 近幾十年來,嵌入式實(shí)時(shí)軟件系統(tǒng)的應(yīng)用越來越廣泛,有關(guān)其設(shè)計(jì)、評(píng)價(jià)方面的研究工作也獲得了長足的發(fā)展。實(shí)時(shí)軟件的評(píng)價(jià)主要包括可靠性評(píng)價(jià)和實(shí)時(shí)性評(píng)價(jià)兩方面。對(duì)應(yīng)的可靠性設(shè)計(jì)方法、實(shí)時(shí)性設(shè)計(jì)方法的研究也很重要。本文討論的是有關(guān)嵌入式軟件系統(tǒng)的實(shí)時(shí)性設(shè)計(jì)方法。所有的討論與分析基于這樣一個(gè)前提:實(shí)時(shí)應(yīng)用以一定的實(shí)時(shí)操作系統(tǒng)為運(yùn)行平臺(tái)。該操作系統(tǒng)基于任務(wù)的靜態(tài)優(yōu)先級(jí),采用可搶占式調(diào)度算法。 如圖1所示,如果將實(shí)時(shí)軟件系統(tǒng)看成是1個(gè)黑匣子,這個(gè)黑匣子接受外部環(huán)境的各種輸入信息,在一定時(shí)間內(nèi)完成相應(yīng)的處理過程,輸出處理結(jié)果。本文所論述的“實(shí)時(shí)性”主要是指輸出與輸入的時(shí)間差圖1圖2是否滿足規(guī)定的時(shí)限要求。即不管該實(shí)時(shí)軟件系統(tǒng)的內(nèi)部結(jié)構(gòu)或?qū)崿F(xiàn)方法如何,對(duì)于特定的輸入信息,它不僅要能作出正確的處理,還要在預(yù)先設(shè)定的時(shí)限范圍內(nèi)輸出結(jié)果。設(shè)系統(tǒng)對(duì)某信號(hào)的處理延遲為tz,tz=t2-t1,則tz不能超過時(shí)限要求。 在實(shí)踐經(jīng)驗(yàn)與理論分析過程中我們發(fā)現(xiàn),將應(yīng)用系統(tǒng)劃分為多個(gè)異步、并發(fā)的實(shí)時(shí)任務(wù)之后,各任務(wù)優(yōu)先級(jí)高低的設(shè)置策略將對(duì)系統(tǒng)的實(shí)時(shí)性能產(chǎn)生較大的影響。優(yōu)先級(jí)設(shè)置如果合理,可為已設(shè)計(jì)好的系統(tǒng)提供更好的實(shí)時(shí)性保障,反之則有可能產(chǎn)生不良影響。后面的討論將從一個(gè)已經(jīng)設(shè)計(jì)好的多任務(wù)系統(tǒng)出發(fā),進(jìn)一步討論各任務(wù)優(yōu)先級(jí)的設(shè)置問題。 一、 單條任務(wù)鏈的任務(wù)優(yōu)先級(jí)設(shè)置 雖然整個(gè)系統(tǒng)由多個(gè)任務(wù)組成,但是對(duì)于某個(gè)特定輸入來講,并不是所有任務(wù)都要參與它的處理過程。我們可以將與各個(gè)輸入有關(guān)的任務(wù)提取出來,構(gòu)成一個(gè)個(gè)子系統(tǒng)。這些子系統(tǒng)的最簡單結(jié)構(gòu)即如圖2所示的任務(wù)鏈。 對(duì)同一個(gè)信息,各任務(wù)按順序進(jìn)行處理。每個(gè)任務(wù)的功能結(jié)構(gòu)大體是一樣的,如圖3所示。 圖3對(duì)數(shù)據(jù)進(jìn)行計(jì)算和處理的過程因應(yīng)用不同、任務(wù)不同而異,一旦功能和算法確定,其最大執(zhí)行時(shí)間也是一定的。數(shù)據(jù)的申請(qǐng)和發(fā)送涉及任務(wù)間的通信問題,與操作系統(tǒng)提供的相應(yīng)機(jī)制有關(guān)。設(shè)有任務(wù)a1和a2,任務(wù)a1調(diào)用通信原語向任務(wù)a2發(fā)送消息,如果任務(wù)a2的優(yōu)先級(jí)高于任務(wù)a1的優(yōu)先級(jí),則它一旦獲得任務(wù)a1的消息就搶占任務(wù)a1,反之,則要等到任務(wù)a1阻塞(或掛起)后才能占用CPU。因此,對(duì)同一條處理鏈,就有兩種基本的任務(wù)優(yōu)先級(jí)設(shè)置方式: (1) 對(duì)任意2個(gè)任務(wù)ai和aj(ipj,如圖4(b)所示:輸出最終結(jié)果和達(dá)到穩(wěn)定狀態(tài)的時(shí)刻分別為t22和t23。 t12=t1+∑n[]i=1(tig+tic+tis)+(n-1)(tif+tsw)(1) t13=t1+∑n[]i=1(tig+tic+tis+tif)+(n-1)tsw(2) t22=t1+∑n[]i=1(tig+tic+tis)+(n-1)tsw(3) t23=t1+∑n[]i=1(tig+tic+tis+tif)+2(n-1)tsw(4)圖4(a)圖4(b) 可見,在第2種任務(wù)優(yōu)先級(jí)設(shè)置情況下,任務(wù)鏈能夠盡快輸出處理結(jié)果,但回到穩(wěn)定狀態(tài)的時(shí)延較長。如果外部事件周期性地到達(dá),周期為T,則在這2種設(shè)置情況下,對(duì)任務(wù)鏈實(shí)時(shí)性的基本要求是:t1z=t13-t1 |