第15章 實時系統(tǒng)的設(shè)計
實時計算系統(tǒng)的設(shè)計是一個軟件工程師所能從事的最有挑戰(zhàn)性和最為復(fù)雜的任務(wù)。由于這個特點(diǎn),用于實時系統(tǒng)的軟件需要其他應(yīng)用領(lǐng)域沒有涉及到的分析、設(shè)計和測試技術(shù)。
實時軟件是外部世界高度耦合的,也就是說,實時軟件必須在問題域規(guī)定的時間框架內(nèi)對該問題域(現(xiàn)實世界)作出響應(yīng)。由于實時軟件必須在嚴(yán)格的性能約束下操作,因此軟件的設(shè)計常常是被硬件及軟件體系結(jié)構(gòu)、操作系統(tǒng)特性、應(yīng)用需求和編程語言的變化所驅(qū)動的。
Robert Glass[GLA83]在他關(guān)于實時軟件的書中,對實時系統(tǒng)主題給出了一段很有幫助的介紹:
數(shù)字計算機(jī)在我們所有人的日常生活中正變得日益普及。計算機(jī)不但可以讓我們玩游戲,還可以報時、優(yōu)化最新一代汽車的汽油里程以及控制我們的家用電器……[在工業(yè)上,計算機(jī)可以控制機(jī)器、協(xié)調(diào)過程,并逐漸用自動化系統(tǒng)和“人工智能”來代替手工操作和人的參與。]
所有上述的計算——不論是有幫助的還是強(qiáng)行引入的——都是實時計算的例子。計算機(jī)正在控制著某些東西與外部世界的實時交互,事實上,時間是交互的核心……反應(yīng)遲鈍的實時系統(tǒng)比完全沒有系統(tǒng)還要糟糕。
就在十年前,實時軟件開發(fā)還被認(rèn)為是一種黑色的藝術(shù),它的從事者是那些充滿嫉妒地保衛(wèi)著他們封閉世界的巫師們。如今,巫師們已經(jīng)供不應(yīng)求了!然而,實時軟件的開發(fā)毫無疑問需要特殊的技能。在本章里我們將對實時軟件進(jìn)行研究,并討論建造實時軟件所需的某些開發(fā)技能。
15.1系統(tǒng)考慮
與其他任何基于計算機(jī)的系統(tǒng)一樣,一個實時系統(tǒng)必須將硬件、軟件、人力和數(shù)據(jù)庫元素集成起來,以恰當(dāng)?shù)貙崿F(xiàn)一組功能和性能需求。在第10章中,我們探討了基于計算機(jī)的系統(tǒng)任務(wù)分配,并指出,系統(tǒng)工程師必須對系統(tǒng)元素分配功能和性能。實時系統(tǒng)的問題在于恰當(dāng)?shù)姆峙?。實時性能常常與功能一樣重要,但卻很難有把握地作出與性能相關(guān)的分配決策。一個處理算法能滿足嚴(yán)格的時間約束嗎,或者說我們應(yīng)該建造特殊的硬件來完成這個工作?一個購買來的操作系統(tǒng)能夠滿足我們進(jìn)行高效的中斷處理、多任務(wù)和通信的需求嗎,或者說我們應(yīng)該使用自定義的執(zhí)行程序?與推薦的軟件配對的特定硬件能夠滿足性能標(biāo)準(zhǔn)嗎?所有這些以及其他許多問題都需要由實時系統(tǒng)工程師來回答。
對實時系統(tǒng)所有成分的詳細(xì)討論已經(jīng)超出了本書的范圍,在[SAV85]、[ELL94]和[SEL94]等文獻(xiàn)中有大量好的有關(guān)這方面的信息,但是,在討論軟件分析和設(shè)計問題前我們對實時系統(tǒng)的各個元素能有所理解還是非常重要的。
Everett[EVE95]定義了實時軟件開發(fā)不同于其他軟件工程的三個特征:
·實時系統(tǒng)的設(shè)計是受資源約束的。時間是實時系統(tǒng)的首要資源,關(guān)鍵是要在指定數(shù)目的CPU周期內(nèi)完成一個定義好的任務(wù),除此以外,其他系統(tǒng)資源,如內(nèi)存大小等,在實現(xiàn)系統(tǒng)目標(biāo)時都有可能和時間進(jìn)行折衷。
·實時系統(tǒng)是緊湊而復(fù)雜的。盡管一個復(fù)雜的實時系統(tǒng)可能包含上百萬行的代碼,但軟件中有關(guān)時間標(biāo)準(zhǔn)的代碼一般只占很小一部分。這一小部分代碼是最為復(fù)雜的(從算法的角度來說)。
·實時系統(tǒng)的運(yùn)行常常不需要用戶的參與。因此,實時軟件必須能檢測到導(dǎo)致故障的問題,并在對數(shù)據(jù)和控制環(huán)境造成破壞前改正這些問題。
在下面一節(jié)中,我們將探討一下實時系統(tǒng)不同于其他類型計算機(jī)軟件的一些關(guān)鍵性屬性。
15.2 實時系統(tǒng)
實時系統(tǒng)產(chǎn)生某種動作以響應(yīng)外部世界。為了完成這個功能,它們能高速地獲取數(shù)據(jù),并在嚴(yán)格的時間和可靠性約束控制下。由于這些約束是如此苛刻,實時系統(tǒng)通常只用于滿足單個的應(yīng)用。
實時系統(tǒng)廣泛地用于各種應(yīng)用領(lǐng)域,包括軍用的命令與控制系統(tǒng)、消費(fèi)者電器、過程控制、工業(yè)自動化、醫(yī)療和科學(xué)研究、計算機(jī)圖形、局域和廣域通信、航天系統(tǒng)、計算機(jī)輔助測試以及大量的工業(yè)儀器。
15.2.1集成和性能問題
為了將一個實時系統(tǒng)組織在一起,系統(tǒng)工程師需要作出困難的硬件和軟件決策。(實時系統(tǒng)與硬件相關(guān)的分配問題超出了本書的范圍;更多的信息請參閱文獻(xiàn)[SAV85]。)一旦分配好軟件成分,就要建立詳細(xì)的軟件需求,并必須開發(fā)出一個基本的軟件設(shè)計。許多實時設(shè)計關(guān)心的是實時任務(wù)間的協(xié)調(diào)、系統(tǒng)中斷的處理、保證不丟失數(shù)據(jù)的I/O處理、指定系統(tǒng)的內(nèi)部和外部時間約束、以及確保數(shù)據(jù)庫的準(zhǔn)確度等。
實時設(shè)計關(guān)注的每個部分都必須應(yīng)用到系統(tǒng)性能這個語境中。在大多數(shù)情況下,一個實時系統(tǒng)的性能是由一個或多個與時間相關(guān)的特征來測度的,但也可能用容錯性之類的指標(biāo)來測度。
某些實時系統(tǒng)是設(shè)計來用于那些只關(guān)注反應(yīng)時間或數(shù)據(jù)傳輸率的應(yīng)用中,其他實時應(yīng)用還需要對峰值負(fù)載條件下的這兩個參數(shù)進(jìn)行優(yōu)化,而且,實時系統(tǒng)必須在執(zhí)行一系列并發(fā)任務(wù)時處理它們的峰值負(fù)載。
由于一個實時系統(tǒng)的性能主要由系統(tǒng)響應(yīng)時間和它的數(shù)據(jù)傳輸率決定,所以理解這兩個參數(shù)是很重要的。系統(tǒng)的響應(yīng)時間是從系統(tǒng)檢測到一個內(nèi)部或外部事件到發(fā)出響應(yīng)動作這段時間,事件檢測和反應(yīng)生成常常是很簡單的,對事件信息進(jìn)行處理以判斷合適的反應(yīng)往往會涉及到復(fù)雜耗時的算法。
實時計算系統(tǒng)的設(shè)計是一個軟件工程師所能從事的最有挑戰(zhàn)性和最為復(fù)雜的任務(wù)。由于這個特點(diǎn),用于實時系統(tǒng)的軟件需要其他應(yīng)用領(lǐng)域沒有涉及到的分析、設(shè)計和測試技術(shù)。
實時軟件是外部世界高度耦合的,也就是說,實時軟件必須在問題域規(guī)定的時間框架內(nèi)對該問題域(現(xiàn)實世界)作出響應(yīng)。由于實時軟件必須在嚴(yán)格的性能約束下操作,因此軟件的設(shè)計常常是被硬件及軟件體系結(jié)構(gòu)、操作系統(tǒng)特性、應(yīng)用需求和編程語言的變化所驅(qū)動的。
Robert Glass[GLA83]在他關(guān)于實時軟件的書中,對實時系統(tǒng)主題給出了一段很有幫助的介紹:
數(shù)字計算機(jī)在我們所有人的日常生活中正變得日益普及。計算機(jī)不但可以讓我們玩游戲,還可以報時、優(yōu)化最新一代汽車的汽油里程以及控制我們的家用電器……[在工業(yè)上,計算機(jī)可以控制機(jī)器、協(xié)調(diào)過程,并逐漸用自動化系統(tǒng)和“人工智能”來代替手工操作和人的參與。]
所有上述的計算——不論是有幫助的還是強(qiáng)行引入的——都是實時計算的例子。計算機(jī)正在控制著某些東西與外部世界的實時交互,事實上,時間是交互的核心……反應(yīng)遲鈍的實時系統(tǒng)比完全沒有系統(tǒng)還要糟糕。
就在十年前,實時軟件開發(fā)還被認(rèn)為是一種黑色的藝術(shù),它的從事者是那些充滿嫉妒地保衛(wèi)著他們封閉世界的巫師們。如今,巫師們已經(jīng)供不應(yīng)求了!然而,實時軟件的開發(fā)毫無疑問需要特殊的技能。在本章里我們將對實時軟件進(jìn)行研究,并討論建造實時軟件所需的某些開發(fā)技能。
15.1系統(tǒng)考慮
與其他任何基于計算機(jī)的系統(tǒng)一樣,一個實時系統(tǒng)必須將硬件、軟件、人力和數(shù)據(jù)庫元素集成起來,以恰當(dāng)?shù)貙崿F(xiàn)一組功能和性能需求。在第10章中,我們探討了基于計算機(jī)的系統(tǒng)任務(wù)分配,并指出,系統(tǒng)工程師必須對系統(tǒng)元素分配功能和性能。實時系統(tǒng)的問題在于恰當(dāng)?shù)姆峙?。實時性能常常與功能一樣重要,但卻很難有把握地作出與性能相關(guān)的分配決策。一個處理算法能滿足嚴(yán)格的時間約束嗎,或者說我們應(yīng)該建造特殊的硬件來完成這個工作?一個購買來的操作系統(tǒng)能夠滿足我們進(jìn)行高效的中斷處理、多任務(wù)和通信的需求嗎,或者說我們應(yīng)該使用自定義的執(zhí)行程序?與推薦的軟件配對的特定硬件能夠滿足性能標(biāo)準(zhǔn)嗎?所有這些以及其他許多問題都需要由實時系統(tǒng)工程師來回答。
對實時系統(tǒng)所有成分的詳細(xì)討論已經(jīng)超出了本書的范圍,在[SAV85]、[ELL94]和[SEL94]等文獻(xiàn)中有大量好的有關(guān)這方面的信息,但是,在討論軟件分析和設(shè)計問題前我們對實時系統(tǒng)的各個元素能有所理解還是非常重要的。
Everett[EVE95]定義了實時軟件開發(fā)不同于其他軟件工程的三個特征:
·實時系統(tǒng)的設(shè)計是受資源約束的。時間是實時系統(tǒng)的首要資源,關(guān)鍵是要在指定數(shù)目的CPU周期內(nèi)完成一個定義好的任務(wù),除此以外,其他系統(tǒng)資源,如內(nèi)存大小等,在實現(xiàn)系統(tǒng)目標(biāo)時都有可能和時間進(jìn)行折衷。
·實時系統(tǒng)是緊湊而復(fù)雜的。盡管一個復(fù)雜的實時系統(tǒng)可能包含上百萬行的代碼,但軟件中有關(guān)時間標(biāo)準(zhǔn)的代碼一般只占很小一部分。這一小部分代碼是最為復(fù)雜的(從算法的角度來說)。
·實時系統(tǒng)的運(yùn)行常常不需要用戶的參與。因此,實時軟件必須能檢測到導(dǎo)致故障的問題,并在對數(shù)據(jù)和控制環(huán)境造成破壞前改正這些問題。
在下面一節(jié)中,我們將探討一下實時系統(tǒng)不同于其他類型計算機(jī)軟件的一些關(guān)鍵性屬性。
15.2 實時系統(tǒng)
實時系統(tǒng)產(chǎn)生某種動作以響應(yīng)外部世界。為了完成這個功能,它們能高速地獲取數(shù)據(jù),并在嚴(yán)格的時間和可靠性約束控制下。由于這些約束是如此苛刻,實時系統(tǒng)通常只用于滿足單個的應(yīng)用。
實時系統(tǒng)廣泛地用于各種應(yīng)用領(lǐng)域,包括軍用的命令與控制系統(tǒng)、消費(fèi)者電器、過程控制、工業(yè)自動化、醫(yī)療和科學(xué)研究、計算機(jī)圖形、局域和廣域通信、航天系統(tǒng)、計算機(jī)輔助測試以及大量的工業(yè)儀器。
15.2.1集成和性能問題
為了將一個實時系統(tǒng)組織在一起,系統(tǒng)工程師需要作出困難的硬件和軟件決策。(實時系統(tǒng)與硬件相關(guān)的分配問題超出了本書的范圍;更多的信息請參閱文獻(xiàn)[SAV85]。)一旦分配好軟件成分,就要建立詳細(xì)的軟件需求,并必須開發(fā)出一個基本的軟件設(shè)計。許多實時設(shè)計關(guān)心的是實時任務(wù)間的協(xié)調(diào)、系統(tǒng)中斷的處理、保證不丟失數(shù)據(jù)的I/O處理、指定系統(tǒng)的內(nèi)部和外部時間約束、以及確保數(shù)據(jù)庫的準(zhǔn)確度等。
實時設(shè)計關(guān)注的每個部分都必須應(yīng)用到系統(tǒng)性能這個語境中。在大多數(shù)情況下,一個實時系統(tǒng)的性能是由一個或多個與時間相關(guān)的特征來測度的,但也可能用容錯性之類的指標(biāo)來測度。
某些實時系統(tǒng)是設(shè)計來用于那些只關(guān)注反應(yīng)時間或數(shù)據(jù)傳輸率的應(yīng)用中,其他實時應(yīng)用還需要對峰值負(fù)載條件下的這兩個參數(shù)進(jìn)行優(yōu)化,而且,實時系統(tǒng)必須在執(zhí)行一系列并發(fā)任務(wù)時處理它們的峰值負(fù)載。
由于一個實時系統(tǒng)的性能主要由系統(tǒng)響應(yīng)時間和它的數(shù)據(jù)傳輸率決定,所以理解這兩個參數(shù)是很重要的。系統(tǒng)的響應(yīng)時間是從系統(tǒng)檢測到一個內(nèi)部或外部事件到發(fā)出響應(yīng)動作這段時間,事件檢測和反應(yīng)生成常常是很簡單的,對事件信息進(jìn)行處理以判斷合適的反應(yīng)往往會涉及到復(fù)雜耗時的算法。

