嵌入式實(shí)時(shí)系統(tǒng)中采用的操作系統(tǒng)我們稱為嵌入式實(shí)時(shí)操作系統(tǒng),它既是嵌入式操作系統(tǒng),又是實(shí)時(shí)操作系統(tǒng)。
作為一種嵌入式操作系統(tǒng),它具有嵌入式軟件共有的可裁剪、低資源占用、低功耗等特點(diǎn);而作為一種實(shí)時(shí)操作系統(tǒng),它與通用操作系統(tǒng)(如Windows、Unix、Linux等)相比有很大的差別,下面我們將通過(guò)比較這兩種操作系統(tǒng)之間的差別來(lái)逐步描述實(shí)時(shí)操作系統(tǒng)的主要特點(diǎn)。 我們?cè)谌粘9ぷ鲗W(xué)習(xí)環(huán)境中接觸最多的是通用操作系統(tǒng),通用操作系統(tǒng)是由分時(shí)操作系統(tǒng)發(fā)展而來(lái),大部分都支持多用戶和多進(jìn)程,負(fù)責(zé)管理眾多的進(jìn)程并為它們分配系統(tǒng)資源。分時(shí)操作系統(tǒng)的基本設(shè)計(jì)原則是:盡量縮短系統(tǒng)的平均響應(yīng)時(shí)間并提高系統(tǒng)的吞吐率,在單位時(shí)間內(nèi)為盡可能多的用戶請(qǐng)求提供服務(wù)。
由此可以看出,分時(shí)操作系統(tǒng)注重平均表現(xiàn)性能,不注重個(gè)體表現(xiàn)性能。如對(duì)于整個(gè)系統(tǒng)來(lái)說(shuō),注重所有任務(wù)的平均響應(yīng)時(shí)間而不關(guān)心單個(gè)任務(wù)的響應(yīng)時(shí)間,對(duì)于某個(gè)單個(gè)任務(wù)來(lái)說(shuō),注重每次執(zhí)行的平均響應(yīng)時(shí)間而不關(guān)心某次特定執(zhí)行的響應(yīng)時(shí)間。通用操作系統(tǒng)中采用的很多策略和技巧都體現(xiàn)出了這種設(shè)計(jì)原則,如虛存管理機(jī)制中由于采用了LRU等頁(yè)替換算法,使得大部分的訪存需求能夠快速地通過(guò)物理內(nèi)存完成,只有很小一部分的訪存需求需要通過(guò)調(diào)頁(yè)完成,但從總體上來(lái)看,平均訪存時(shí)間與不采用虛存技術(shù)相比沒(méi)有很大的提高,同時(shí)又獲得了虛空間可以遠(yuǎn)大于物理內(nèi)存容量等好處,因此虛存技術(shù)在通用操作系統(tǒng)中得到了十分廣泛的應(yīng)用。類似的例子還有很多,如Unix文件系統(tǒng)中文件存放位置的間接索引查詢機(jī)制等,甚至硬件設(shè)計(jì)中的Cache技術(shù)以及CPU的動(dòng)態(tài)分支預(yù)測(cè)技術(shù)等也都體現(xiàn)出了這種設(shè)計(jì)原則。
由此可見(jiàn),這種注重平均表現(xiàn),即統(tǒng)計(jì)型表現(xiàn)特性的設(shè)計(jì)原則的影響是十分深遠(yuǎn)的。 而對(duì)于實(shí)時(shí)操作系統(tǒng),前面我們已經(jīng)提到,它除了要滿足應(yīng)用的功能需求以外,更重要的是還要滿足應(yīng)用提出的實(shí)時(shí)性要求,而組成一個(gè)應(yīng)用的眾多實(shí)時(shí)任務(wù)對(duì)于實(shí)時(shí)性的要求是各不相同的,此外實(shí)時(shí)任務(wù)之間可能還會(huì)有一些復(fù)雜的關(guān)聯(lián)和同步關(guān)系,如執(zhí)行順序限制、共享資源的互斥訪問(wèn)要求等,這就為系統(tǒng)實(shí)時(shí)性的保證帶來(lái)了很大的困難。因此,實(shí)時(shí)操作系統(tǒng)所遵循的最重要的設(shè)計(jì)原則是:采用各種算法和策略,始終保證系統(tǒng)行為的可預(yù)測(cè)性(predictability)??深A(yù)測(cè)性是指在系統(tǒng)運(yùn)行的任何時(shí)刻,在任何情況下,實(shí)時(shí)操作系統(tǒng)的資源調(diào)配策略都能為爭(zhēng)奪資源(包括CPU、內(nèi)存、網(wǎng)絡(luò)帶寬等)的多個(gè)實(shí)時(shí)任務(wù)合理地分配資源,使每個(gè)實(shí)時(shí)任務(wù)的實(shí)時(shí)性要求都能得到滿足。與通用操作系統(tǒng)不同,實(shí)時(shí)操作系統(tǒng)注重的不是系統(tǒng)的平均表現(xiàn),而是要求每個(gè)實(shí)時(shí)任務(wù)在最壞情況下都要滿足其實(shí)時(shí)性要求,也就是說(shuō),實(shí)時(shí)操作系統(tǒng)注重的是個(gè)體表現(xiàn),更準(zhǔn)確地講是個(gè)體最壞情況表現(xiàn)。
舉例來(lái)說(shuō),如果實(shí)時(shí)操作系統(tǒng)采用標(biāo)準(zhǔn)的虛存技術(shù),則一個(gè)實(shí)時(shí)任務(wù)執(zhí)行的最壞情況是每次訪存都需要調(diào)頁(yè),如此累計(jì)起來(lái)的該任務(wù)在最壞情況下的運(yùn)行時(shí)間是不可預(yù)測(cè)的,因此該任務(wù)的實(shí)時(shí)性無(wú)法得到保證。從而可以看出在通用操作系統(tǒng)中廣泛采用的虛存技術(shù)在實(shí)時(shí)操作系統(tǒng)中不宜直接采用。 由于實(shí)時(shí)操作系統(tǒng)與通用操作系統(tǒng)的基本設(shè)計(jì)原則差別很大,因此在很多資源調(diào)度策略的選擇上以及操作系統(tǒng)實(shí)現(xiàn)的方法上兩者都具有較大的差異,這些差異主要體現(xiàn)在以下幾點(diǎn):
(1) 任務(wù)調(diào)度策略:
通用操作系統(tǒng)中的任務(wù)調(diào)度策略一般采用基于優(yōu)先級(jí)的搶先式調(diào)度策略,對(duì)于優(yōu)先級(jí)相同的進(jìn)程則采用時(shí)間片輪轉(zhuǎn)調(diào)度方式,用戶進(jìn)程可以通過(guò)系統(tǒng)調(diào)用動(dòng)態(tài)地調(diào)整自己的優(yōu)先級(jí),操作系統(tǒng)也可根據(jù)情況調(diào)整某些進(jìn)程的優(yōu)先級(jí)。 實(shí)時(shí)操作系統(tǒng)中的任務(wù)調(diào)度策略目前使用最廣泛的主要可分為兩種,一種是靜態(tài)表驅(qū)動(dòng)方式,另一種是固定優(yōu)先級(jí)搶先式調(diào)度方式。 靜態(tài)表驅(qū)動(dòng)方式是指在系統(tǒng)運(yùn)行前工程師根據(jù)各任務(wù)的實(shí)時(shí)要求用手工的方式或在輔助工具的幫助下生成一張任務(wù)的運(yùn)行時(shí)間表,這張時(shí)間表與列車的運(yùn)行時(shí)刻表類似,指明了各任務(wù)的起始運(yùn)行時(shí)間以及運(yùn)行長(zhǎng)度,運(yùn)行時(shí)間表一旦生成就不再變化了,在運(yùn)行時(shí)調(diào)度器只需根據(jù)這張表在指定的時(shí)刻啟動(dòng)相應(yīng)的任務(wù)即可。靜態(tài)表驅(qū)動(dòng)方式的主要優(yōu)點(diǎn)是:
運(yùn)行時(shí)間表是在系統(tǒng)運(yùn)行前生成的,因此可以采用較復(fù)雜的搜索算法找到較優(yōu)的調(diào)度方案; 運(yùn)行時(shí)調(diào)度器開(kāi)銷較??;
系統(tǒng)具有非常好的可預(yù)測(cè)性,實(shí)時(shí)性驗(yàn)證也比較方便;
這種方式主要缺點(diǎn)是不靈活,需求一旦發(fā)生變化,就要重新生成整個(gè)運(yùn)行時(shí)間表。 由于具有非常好的可預(yù)測(cè)性,這種方式主要用于航空航天、軍事等對(duì)系統(tǒng)的實(shí)時(shí)性要求十分嚴(yán)格的領(lǐng)域。 固定優(yōu)先級(jí)搶先式調(diào)度方式則與通用操作系統(tǒng)中采用的基于優(yōu)先級(jí)的調(diào)度方式基本類似,但在固定優(yōu)先級(jí)搶先式調(diào)度方式中,進(jìn)程的優(yōu)先級(jí)是固定不變的,并且該優(yōu)先級(jí)是在運(yùn)行前通過(guò)某種優(yōu)先級(jí)分配策略(如Rate-Monotonic、Deadline-Monotonic等)來(lái)指定的。這種方式的優(yōu)缺點(diǎn)與靜態(tài)表驅(qū)動(dòng)方式的優(yōu)缺點(diǎn)正好完全相反,它主要應(yīng)用于一些較簡(jiǎn)單、較獨(dú)立的嵌入式系統(tǒng),但隨著調(diào)度理論的不斷成熟和完善,這種方式也會(huì)逐漸在一些對(duì)實(shí)時(shí)性要求十分嚴(yán)格的領(lǐng)域中得到應(yīng)用。目前市場(chǎng)上大部分的實(shí)時(shí)操作系統(tǒng)采用的都是這種調(diào)度方式。
(2) 內(nèi)存管理:
關(guān)于虛存管理機(jī)制我們?cè)谏厦嬉呀?jīng)進(jìn)行了一些討論。為解決虛存給系統(tǒng)帶來(lái)的不可預(yù)測(cè)性,實(shí)時(shí)操作系統(tǒng)一般采用如下兩種方式:
在原有虛存管理機(jī)制的基礎(chǔ)上增加頁(yè)面鎖功能,用戶可將關(guān)鍵頁(yè)面鎖定在內(nèi)存中,從而不會(huì)被swap程序?qū)⒃擁?yè)面交換出內(nèi)存。這種方式的優(yōu)點(diǎn)是既得到了虛存管理機(jī)制為軟件開(kāi)發(fā)帶來(lái)的好處,又提高了系統(tǒng)的可預(yù)測(cè)性。缺點(diǎn)是由于TLB等機(jī)制的設(shè)計(jì)也是按照注重平均表現(xiàn)的原則進(jìn)行的,因此系統(tǒng)的可預(yù)測(cè)性并不能完全得到保障;
采用靜態(tài)內(nèi)存劃分的方式,為每個(gè)實(shí)時(shí)任務(wù)劃分固定的內(nèi)存區(qū)域。這種方式的優(yōu)點(diǎn)是系統(tǒng)具有較好的可預(yù)測(cè)性,缺點(diǎn)是靈活性不夠好,任務(wù)對(duì)存儲(chǔ)器的需求一旦有變化就需要重新對(duì)內(nèi)存進(jìn)行劃分,此外虛存管理機(jī)制所帶來(lái)的好處也喪失了。
目前市場(chǎng)上的實(shí)時(shí)操作系統(tǒng)一般都采用第一種管理方式。
(3) 中斷處理:
在通用操作系統(tǒng)中,大部分外部中斷都是開(kāi)啟的,中斷處理一般由設(shè)備驅(qū)動(dòng)程序來(lái)完成。由于通用操作系統(tǒng)中的用戶進(jìn)程一般都沒(méi)有實(shí)時(shí)性要求,而中斷處理程序直接跟硬件設(shè)備交互,可能有實(shí)時(shí)性要求,因此中斷處理程序的優(yōu)先級(jí)被設(shè)定為高于任何用戶進(jìn)程。 但對(duì)于實(shí)時(shí)操作系統(tǒng)采用上述的中斷處理機(jī)制是不合適的。
首先,外部中斷是環(huán)境向?qū)崟r(shí)操作系統(tǒng)進(jìn)行的輸入,它的頻度是與環(huán)境變化的速率相關(guān)的,而與實(shí)時(shí)操作系統(tǒng)無(wú)關(guān)。如果外部中斷產(chǎn)生的頻度不可預(yù)測(cè),則一個(gè)實(shí)時(shí)任務(wù)在運(yùn)行時(shí)被中斷處理程序阻塞的時(shí)間開(kāi)銷也是不可預(yù)測(cè)的,從而使任務(wù)的實(shí)時(shí)性得不到保證;如果外部中斷產(chǎn)生的頻度是可預(yù)測(cè)的,一旦某外部中斷產(chǎn)生的頻度超出其預(yù)測(cè)值(如硬件故障產(chǎn)生的虛假中斷信號(hào)或預(yù)測(cè)值本身有誤)就可能會(huì)破壞整個(gè)系統(tǒng)的可預(yù)測(cè)性。
其次,實(shí)時(shí)操作系統(tǒng)中的各用戶進(jìn)程一般都有實(shí)時(shí)性要求,因此中斷處理程序優(yōu)先級(jí)高于所有用戶進(jìn)程的優(yōu)先級(jí)分配方式是不合適的。 一種較適合實(shí)時(shí)操作系統(tǒng)的中斷處理方式為:除時(shí)鐘中斷外,屏蔽所有其它中斷,中斷處理程序變?yōu)橹芷谛缘妮喸儾僮?,這些操作由核心態(tài)的設(shè)備驅(qū)動(dòng)程序或由用戶態(tài)的設(shè)備支持庫(kù)來(lái)完成。采用這種方式的主要好處是充分保證了系統(tǒng)的可預(yù)測(cè)性,主要缺點(diǎn)是對(duì)環(huán)境變化的響應(yīng)可能不如上述中斷處理方式快,另外輪詢操作在一定程度上降低了CPU的有效利用率。另一種可行的方式是:對(duì)于采用輪詢方式無(wú)法滿足需求的外部事件,采用中斷方式,其它時(shí)間仍然采用輪詢方式。但此時(shí)中斷處理程序與所以其它任務(wù)一樣擁有優(yōu)先級(jí),調(diào)度器根據(jù)優(yōu)先級(jí)對(duì)處于就緒態(tài)的任務(wù)和中斷處理程序統(tǒng)一進(jìn)行處理器調(diào)度。這種方式使外部事件的響應(yīng)速度加快,并避免了上述中斷方式帶來(lái)第二個(gè)問(wèn)題,但第一個(gè)問(wèn)題仍然存在。 此外為提高時(shí)鐘中斷響應(yīng)時(shí)間的可預(yù)測(cè)性,實(shí)時(shí)操作系統(tǒng)應(yīng)盡可能少地屏蔽中斷。
(4) 共享資源的互斥訪問(wèn):
通用操作系統(tǒng)一般采用信號(hào)量機(jī)制來(lái)解決共享資源的互斥訪問(wèn)問(wèn)題。 對(duì)于實(shí)時(shí)操作系統(tǒng),如果任務(wù)調(diào)度采用靜態(tài)表驅(qū)動(dòng)方式,共享資源的互斥訪問(wèn)問(wèn)題在生成運(yùn)行時(shí)間表時(shí)已經(jīng)考慮到了,在運(yùn)行時(shí)無(wú)需再考慮。如果任務(wù)調(diào)度采用基于優(yōu)先級(jí)的方式,則傳統(tǒng)的信號(hào)量機(jī)制在系統(tǒng)運(yùn)行時(shí)很容易造成優(yōu)先級(jí)倒置問(wèn)題(PriorityInversion),即當(dāng)一個(gè)高優(yōu)先級(jí)任務(wù)通過(guò)信號(hào)量機(jī)制訪問(wèn)共享資源時(shí),該信號(hào)量已被一低優(yōu)先級(jí)任務(wù)占有,而這個(gè)低優(yōu)先級(jí)任務(wù)在訪問(wèn)共享資源時(shí)可能又被其它一些中等優(yōu)先級(jí)的任務(wù)搶先,因此造成高優(yōu)先級(jí)任務(wù)被許多具有較低優(yōu)先級(jí)的任務(wù)阻塞,實(shí)時(shí)性難以得到保證。因此在實(shí)時(shí)操作系統(tǒng)中,往往對(duì)傳統(tǒng)的信號(hào)量機(jī)制進(jìn)行了一些擴(kuò)展,引入了如優(yōu)先級(jí)繼承協(xié)議(PriorityInheritanceProtocol)、優(yōu)先級(jí)頂置協(xié)議(PriorityCeilingProtocol)以及StackResourcePolicy等機(jī)制,較好地解決了優(yōu)先級(jí)倒置的問(wèn)題。
(5) 系統(tǒng)調(diào)用以及系統(tǒng)內(nèi)部操作的時(shí)間開(kāi)銷:
進(jìn)程通過(guò)系統(tǒng)調(diào)用得到操作系統(tǒng)提供的服務(wù),操作系統(tǒng)通過(guò)內(nèi)部操作(如上下文切換等)來(lái)完成一些內(nèi)部管理工作。為保證系統(tǒng)的可預(yù)測(cè)性,實(shí)時(shí)操作系統(tǒng)中的所有系統(tǒng)調(diào)用以及系統(tǒng)內(nèi)部操作的時(shí)間開(kāi)銷都應(yīng)是有界的,并且該界限是一個(gè)具體的量化數(shù)值。而在通用操作系統(tǒng)中對(duì)這些時(shí)間開(kāi)銷則未做如此限制。
(6) 系統(tǒng)的可重入性:
在通用操作系統(tǒng)中,核心態(tài)系統(tǒng)調(diào)用往往是不可重入的,當(dāng)一低優(yōu)先級(jí)任務(wù)調(diào)用核心態(tài)系統(tǒng)調(diào)用時(shí),在該時(shí)間段內(nèi)到達(dá)的高優(yōu)先級(jí)任務(wù)必須等到低優(yōu)先級(jí)的系統(tǒng)調(diào)用完成才能獲得CPU,這就降低了系統(tǒng)的可預(yù)測(cè)性。因此,實(shí)時(shí)操作系統(tǒng)中的核心態(tài)系統(tǒng)調(diào)用往往設(shè)計(jì)為可重入的。
(7) 輔助工具:
實(shí)時(shí)操作系統(tǒng)額外提供了一些輔助工具,如實(shí)時(shí)任務(wù)在最壞情況下的執(zhí)行時(shí)間估算工具、系統(tǒng)的實(shí)時(shí)性驗(yàn)證工具等,可幫助工程師進(jìn)行系統(tǒng)的實(shí)時(shí)性驗(yàn)證工作。 此外,實(shí)時(shí)操作系統(tǒng)對(duì)系統(tǒng)硬件設(shè)計(jì)也提出了一些要求,其中一些要求為:(1) DMADMA是一種數(shù)據(jù)交換協(xié)議,主要作用是在無(wú)需CPU參與的情況下將數(shù)據(jù)在內(nèi)存與其它外部設(shè)備間進(jìn)行交換。DMA最常用的一種實(shí)現(xiàn)方式被稱為周期竊取(CycleStealing)方式,即首先通過(guò)總線仲裁協(xié)議與CPU競(jìng)爭(zhēng)總線控制權(quán),在獲得控制權(quán)后再根據(jù)用戶預(yù)設(shè)的操作指令進(jìn)行數(shù)據(jù)交換。由于這種周期竊取方式會(huì)給用戶任務(wù)帶來(lái)不可預(yù)測(cè)的額外阻塞開(kāi)銷,所以實(shí)時(shí)操作系統(tǒng)往往要求系統(tǒng)設(shè)計(jì)時(shí)不采用DMA或采取一些可預(yù)測(cè)性更好的DMA實(shí)現(xiàn)方式,如Time-slicemethod等。(2)CacheCache的主要作用是采用容量相對(duì)較小的快速存儲(chǔ)部件來(lái)彌補(bǔ)高性能CPU與相對(duì)來(lái)說(shuō)性能較低的存儲(chǔ)器之間的性能差異,由于它可以使系統(tǒng)的平均表現(xiàn)性能得到大幅提高,因此在硬件設(shè)計(jì)中得到了極為廣泛的應(yīng)用。 但實(shí)時(shí)操作系統(tǒng)注重的不是平均表現(xiàn)性能,而是個(gè)體最壞情況表現(xiàn),因此在對(duì)系統(tǒng)進(jìn)行實(shí)時(shí)性驗(yàn)證時(shí)必須考慮實(shí)時(shí)任務(wù)運(yùn)行的最壞情況,即每次訪存都沒(méi)有命中Cache情況下的運(yùn)行時(shí)間,所以在利用輔助工具估算實(shí)時(shí)任務(wù)在最壞情況下的執(zhí)行時(shí)間時(shí),應(yīng)將系統(tǒng)中所有的Cache功能暫時(shí)關(guān)閉,在系統(tǒng)實(shí)際運(yùn)行時(shí)再將Cache功能激活。除此以外,另一種較極端的做法則是在硬件設(shè)計(jì)中完全不采用Cache技術(shù)。
-
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6823瀏覽量
123331 -
RTOS
+關(guān)注
關(guān)注
22文章
813瀏覽量
119636
原文標(biāo)題:都是操作系統(tǒng) RTOS和電腦上用的到底有啥不同?
文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論