一種實(shí)時多任務(wù)系統(tǒng)軟件設(shè)計(jì)方法
發(fā)布時間:2007/8/28 0:00:00 訪問次數(shù):568
摘要:從進(jìn)程和線程調(diào)度的角度出發(fā),介紹了一種規(guī)范化的實(shí)時多任務(wù)系統(tǒng)軟件設(shè)計(jì)方法,提出了“前向分支”的設(shè)計(jì)原則,給出了完整的系統(tǒng)模型。
關(guān)鍵詞:線程拆分 前向分支 實(shí)時多任務(wù) 單片機(jī)
在機(jī)電產(chǎn)品研制開發(fā)中,經(jīng)常要涉及到基于嵌入式系統(tǒng)或基于單片機(jī)系統(tǒng)的程序設(shè)計(jì)。實(shí)時多任務(wù)是這類系統(tǒng)最基于的要求之一。在實(shí)踐中通常采用以下兩種解決方案:一是在商業(yè)化時操作系統(tǒng)的基礎(chǔ)上進(jìn)行二次開發(fā);二是用戶自動設(shè)計(jì)系統(tǒng)軟件。前者設(shè)計(jì)工作量小,設(shè)計(jì)周期短,系統(tǒng)的設(shè)計(jì)質(zhì)量也容易得到保證。但由于商業(yè)實(shí)時操作系統(tǒng)往往較多地考慮通用性,缺乏靈活性,對于一些特定的應(yīng)用場合,其性能往往不能令人滿意。同時,這種方案還存在著成本高,依賴于特定硬件等缺點(diǎn)。第二種方案可以從系統(tǒng)的實(shí)際要求和硬件的實(shí)際情況出發(fā)靈活地進(jìn)行系統(tǒng)設(shè)計(jì),易于滿足一些特定場合的性能要求,成本也較低。但是,由于缺乏系統(tǒng)化、規(guī)范化的設(shè)計(jì)方法,缺少高層次抽象工具,使得系統(tǒng)的設(shè)計(jì)質(zhì)量不容易得到保證,你嚴(yán)重地依賴于程序員的水平和經(jīng)驗(yàn)。
本文針對上述第三種方案的高限,從進(jìn)程和線程調(diào)度的角度出發(fā),介紹了一種系統(tǒng)化、規(guī)范化和易于工程化實(shí)施的實(shí)時多任務(wù)系統(tǒng)軟件設(shè)計(jì)方法,提出了“前向分支”的設(shè)計(jì)原則,并給出了完整的系統(tǒng)模型。
1 進(jìn)程的劃分
對復(fù)雜的系統(tǒng)需求進(jìn)行模塊化和層次化的劃分是軟件設(shè)計(jì)的基本方法。在實(shí)踐中復(fù)雜的系統(tǒng)需求通常被劃分為一些功能相對獨(dú)立的任務(wù)模塊,每個任務(wù)模塊被視作一個進(jìn)程(process)。系統(tǒng)中如有多個進(jìn)程并發(fā)(concurrent)運(yùn)行,該系統(tǒng)就是一個多任務(wù)的系統(tǒng)。在圖1所示的例子中,n個任務(wù)模塊構(gòu)成了宏觀上并發(fā)運(yùn)行的一組進(jìn)程(即Proc_1~Proc-n)。Proc_5和Proc_9是兩個具有代表性的進(jìn)程結(jié)構(gòu)。Proc_5是斷續(xù)進(jìn)行的進(jìn)程,表示了某一順序邏輯控制的流程。Proc_9是LCD漢字顯示程序,其結(jié)構(gòu)是典型的多重循環(huán)。其功能是將數(shù)組aDisplay中所描述的24×24點(diǎn)陣中文字符串送至LCD顯示屏。ADisplay的結(jié)構(gòu)參幾圖3(e)。Proc_9的基本工作原理如下:當(dāng)cDispiay不為0時,依次從aDlsplay中取出每個待顯示漢字的點(diǎn)陣位置及其在LCD內(nèi)部顯存中的地址,根據(jù)這兩個參數(shù)將一個漢字的點(diǎn)陣順序發(fā)送到LCD內(nèi)部顯存中。直至全部漢字顯示完,cDisplay減為0,Proc_9轉(zhuǎn)入空檔狀態(tài),等待新的顯示請求。
系統(tǒng)程序的主要任務(wù)之一就是對進(jìn)程進(jìn)行調(diào)度,包括啟動和終止進(jìn)程、管理進(jìn)程之間的通訊、處理進(jìn)程之間的優(yōu)先級等。但是如果按圖1的結(jié)構(gòu)順序調(diào)度進(jìn)程、以進(jìn)程為基本單位分配CPU時間的話,顯然存在嚴(yán)重的問題。例如在Proc_5中,當(dāng)程序處于等待K1閉合的狀態(tài)時,其它任何進(jìn)程都無法得到服務(wù),尤其當(dāng)K1出現(xiàn)故障時,系統(tǒng)將處于“掛起”狀態(tài)。如果一個進(jìn)程過多地占據(jù)了CPU時間,其他進(jìn)程將不能得到公平、均勻的服務(wù),響應(yīng)時間無法得到保證,系統(tǒng)效率會降低?傊,只有將CPU時間的分配單位減小,才能解決上述問題。
2 線程的拆分
線程(Thread)是CPU的基本執(zhí)行單位。一個進(jìn)程可以由一個或多個線程構(gòu)成。如前所述,單一線程的進(jìn)程可能會存在諸多問題,而將一進(jìn)程拆分為多個線程是解決上述問題的有效手段。由圖1的Proc_5和Proc_9可以看出,一個進(jìn)程過多地占據(jù)CPU時間,是因?yàn)槠渲泻写螖?shù)不確定的等待循環(huán)、純延時和較為耗時的多重循環(huán)。其中,純延時可以用軟件延和中斷定時兩種方法實(shí)現(xiàn),這兩種方法在進(jìn)程中又都可以歸結(jié)為循環(huán)。因此,在拆分線程時應(yīng)盡量遵循“前向分支”原則,使線程中不含有或少含有循環(huán)。
循環(huán)結(jié)構(gòu)本質(zhì)上是由一個分支判斷和一個“反向
摘要:從進(jìn)程和線程調(diào)度的角度出發(fā),介紹了一種規(guī)范化的實(shí)時多任務(wù)系統(tǒng)軟件設(shè)計(jì)方法,提出了“前向分支”的設(shè)計(jì)原則,給出了完整的系統(tǒng)模型。
關(guān)鍵詞:線程拆分 前向分支 實(shí)時多任務(wù) 單片機(jī)
在機(jī)電產(chǎn)品研制開發(fā)中,經(jīng)常要涉及到基于嵌入式系統(tǒng)或基于單片機(jī)系統(tǒng)的程序設(shè)計(jì)。實(shí)時多任務(wù)是這類系統(tǒng)最基于的要求之一。在實(shí)踐中通常采用以下兩種解決方案:一是在商業(yè)化時操作系統(tǒng)的基礎(chǔ)上進(jìn)行二次開發(fā);二是用戶自動設(shè)計(jì)系統(tǒng)軟件。前者設(shè)計(jì)工作量小,設(shè)計(jì)周期短,系統(tǒng)的設(shè)計(jì)質(zhì)量也容易得到保證。但由于商業(yè)實(shí)時操作系統(tǒng)往往較多地考慮通用性,缺乏靈活性,對于一些特定的應(yīng)用場合,其性能往往不能令人滿意。同時,這種方案還存在著成本高,依賴于特定硬件等缺點(diǎn)。第二種方案可以從系統(tǒng)的實(shí)際要求和硬件的實(shí)際情況出發(fā)靈活地進(jìn)行系統(tǒng)設(shè)計(jì),易于滿足一些特定場合的性能要求,成本也較低。但是,由于缺乏系統(tǒng)化、規(guī)范化的設(shè)計(jì)方法,缺少高層次抽象工具,使得系統(tǒng)的設(shè)計(jì)質(zhì)量不容易得到保證,你嚴(yán)重地依賴于程序員的水平和經(jīng)驗(yàn)。
本文針對上述第三種方案的高限,從進(jìn)程和線程調(diào)度的角度出發(fā),介紹了一種系統(tǒng)化、規(guī)范化和易于工程化實(shí)施的實(shí)時多任務(wù)系統(tǒng)軟件設(shè)計(jì)方法,提出了“前向分支”的設(shè)計(jì)原則,并給出了完整的系統(tǒng)模型。
1 進(jìn)程的劃分
對復(fù)雜的系統(tǒng)需求進(jìn)行模塊化和層次化的劃分是軟件設(shè)計(jì)的基本方法。在實(shí)踐中復(fù)雜的系統(tǒng)需求通常被劃分為一些功能相對獨(dú)立的任務(wù)模塊,每個任務(wù)模塊被視作一個進(jìn)程(process)。系統(tǒng)中如有多個進(jìn)程并發(fā)(concurrent)運(yùn)行,該系統(tǒng)就是一個多任務(wù)的系統(tǒng)。在圖1所示的例子中,n個任務(wù)模塊構(gòu)成了宏觀上并發(fā)運(yùn)行的一組進(jìn)程(即Proc_1~Proc-n)。Proc_5和Proc_9是兩個具有代表性的進(jìn)程結(jié)構(gòu)。Proc_5是斷續(xù)進(jìn)行的進(jìn)程,表示了某一順序邏輯控制的流程。Proc_9是LCD漢字顯示程序,其結(jié)構(gòu)是典型的多重循環(huán)。其功能是將數(shù)組aDisplay中所描述的24×24點(diǎn)陣中文字符串送至LCD顯示屏。ADisplay的結(jié)構(gòu)參幾圖3(e)。Proc_9的基本工作原理如下:當(dāng)cDispiay不為0時,依次從aDlsplay中取出每個待顯示漢字的點(diǎn)陣位置及其在LCD內(nèi)部顯存中的地址,根據(jù)這兩個參數(shù)將一個漢字的點(diǎn)陣順序發(fā)送到LCD內(nèi)部顯存中。直至全部漢字顯示完,cDisplay減為0,Proc_9轉(zhuǎn)入空檔狀態(tài),等待新的顯示請求。
系統(tǒng)程序的主要任務(wù)之一就是對進(jìn)程進(jìn)行調(diào)度,包括啟動和終止進(jìn)程、管理進(jìn)程之間的通訊、處理進(jìn)程之間的優(yōu)先級等。但是如果按圖1的結(jié)構(gòu)順序調(diào)度進(jìn)程、以進(jìn)程為基本單位分配CPU時間的話,顯然存在嚴(yán)重的問題。例如在Proc_5中,當(dāng)程序處于等待K1閉合的狀態(tài)時,其它任何進(jìn)程都無法得到服務(wù),尤其當(dāng)K1出現(xiàn)故障時,系統(tǒng)將處于“掛起”狀態(tài)。如果一個進(jìn)程過多地占據(jù)了CPU時間,其他進(jìn)程將不能得到公平、均勻的服務(wù),響應(yīng)時間無法得到保證,系統(tǒng)效率會降低?傊,只有將CPU時間的分配單位減小,才能解決上述問題。
2 線程的拆分
線程(Thread)是CPU的基本執(zhí)行單位。一個進(jìn)程可以由一個或多個線程構(gòu)成。如前所述,單一線程的進(jìn)程可能會存在諸多問題,而將一進(jìn)程拆分為多個線程是解決上述問題的有效手段。由圖1的Proc_5和Proc_9可以看出,一個進(jìn)程過多地占據(jù)CPU時間,是因?yàn)槠渲泻写螖?shù)不確定的等待循環(huán)、純延時和較為耗時的多重循環(huán)。其中,純延時可以用軟件延和中斷定時兩種方法實(shí)現(xiàn),這兩種方法在進(jìn)程中又都可以歸結(jié)為循環(huán)。因此,在拆分線程時應(yīng)盡量遵循“前向分支”原則,使線程中不含有或少含有循環(huán)。
循環(huán)結(jié)構(gòu)本質(zhì)上是由一個分支判斷和一個“反向
熱門點(diǎn)擊
- 一種基于CPLD的偽隨機(jī)序列發(fā)生器
- 基于PIC18F系列單片機(jī)的嵌入式系統(tǒng)設(shè)計(jì)
- 嵌入式Email發(fā)送模塊
- 基于Xtensa LX處理器實(shí)現(xiàn)RRC濾波器
- 在S3C4510B評估板上移植uclinux
- 一種實(shí)時多任務(wù)系統(tǒng)軟件設(shè)計(jì)方法
- 基于ARM核的音頻解碼器單芯片系統(tǒng)
- 基于S7600A的嵌入式系統(tǒng)Internet
- 使用基于模型的設(shè)計(jì)來開發(fā)和驗(yàn)證安全關(guān)鍵系統(tǒng)軟
- 在應(yīng)用系統(tǒng)中嵌入WWW服務(wù)功能的實(shí)現(xiàn)方法
推薦技術(shù)資料
- 羅盤誤差及補(bǔ)償
- 造成羅盤誤差的主要因素有傳感器誤差、其他磁材料干擾等。... [詳細(xì)]
- 超低功耗角度位置傳感器參數(shù)技術(shù)
- 四路輸出 DC/DC 降壓電源
- 降壓變換器和升降壓變換器優(yōu)特點(diǎn)
- 業(yè)界首創(chuàng)可在線編程電源模塊 m
- 可編程門陣列 (FPGA)智能 電源解決方案
- 高效先進(jìn)封裝工藝
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究