資料介紹
對很多嵌入式系統(tǒng)來說,一個設(shè)計(jì)良好的實(shí)時操作系統(tǒng)可以讓開發(fā)工程師把握系統(tǒng)執(zhí)行任何任務(wù)或響應(yīng)任何關(guān)鍵事件的時間,滿足系統(tǒng)實(shí)時性要求。為了理解RTOS如何通過系統(tǒng)調(diào)度策略實(shí)現(xiàn)實(shí)時性要求,本文介紹了搶占式調(diào)度、可搶占的內(nèi)核、優(yōu)先級繼續(xù)和中斷處理等概念。
在設(shè)計(jì)工業(yè)控制系統(tǒng)或醫(yī)療設(shè)備時,大部分工程師和系統(tǒng)設(shè)計(jì)工程師會認(rèn)為采用RTOS是必需的。然而,網(wǎng)際路由器、車載娛樂系統(tǒng)和多媒體設(shè)備等普通應(yīng)用還需要采用RTOS嗎?像Linux或Windows這樣的通用操作系統(tǒng)是否就能勝任呢?通常,這些產(chǎn)品需要采用RTOS,但是這個問題經(jīng)常直到設(shè)計(jì)階段的后期才能意識到。
RTOS對于很多嵌入式系統(tǒng)來說不但是有益的,而且也是必要的,熟悉到這一點(diǎn)很重要。例如,一個播放如MPEG格式電影的設(shè)備,假如依靠軟件來實(shí)現(xiàn)其整個內(nèi)容傳輸,可能會出現(xiàn)用戶難以接受的高丟幀率。然而,通過使用RTOS,系統(tǒng)設(shè)計(jì)工程師能夠準(zhǔn)確地控制軟件過程的執(zhí)行順序,從而保證按照給定的媒體速率進(jìn)行播放。上述大部分情況適用于用戶希望對輸入做出立即響應(yīng)的系統(tǒng)。通過RTOS,開發(fā)人員能夠保證由用戶的操作總能得到及時的響應(yīng),除非一個更重要的操作必須首先執(zhí)行。
總之,一個好的RTOS支持開發(fā)人員控制系統(tǒng)執(zhí)行任何任務(wù)或?qū)θ魏沃匾录龀龇磻?yīng)的時間,并且能夠以一種可以猜測并且完全一致的形式滿足任務(wù)執(zhí)行的最終期限要求。但是,假如RTOS崩潰,這些最終期限就不能被滿足。因此,RTOS必須提供高度的可靠性。非凡是它必須提供在不需要重啟的情況下,從軟件故障中快速并智能恢復(fù)的機(jī)制。
搶占式調(diào)度
在像Linux這樣的通用操作系統(tǒng)中,在對線程和進(jìn)程的CPU占用上采用了“公平”調(diào)度策略。這樣的策略能夠提供良好的整體表現(xiàn),但是不能保證高優(yōu)先級、對時間要求嚴(yán)格的線程將優(yōu)先于低優(yōu)先級的線程執(zhí)行。事實(shí)上,操作系統(tǒng)有時甚至?xí)袛喔邇?yōu)先級的線程來為低優(yōu)先級線程提供CPU時間。其結(jié)果可能造成對時間要求嚴(yán)格的線程很輕易地錯過它們的最終期限,甚至在一個高速的高端處理器上運(yùn)行時也會出現(xiàn)這種情況。
而在RTOS中,線程按照其優(yōu)先級順序執(zhí)行。假如一個高優(yōu)先級的線程預(yù)備運(yùn)行時,它將在一個短的、有限時間間隔內(nèi)從任何可能正在運(yùn)行的低優(yōu)先級進(jìn)程接管CPU。另外,高優(yōu)先級的線程能夠不被中斷地運(yùn)行,直到它已經(jīng)完成了需要做的事情-當(dāng)然是在不被更高優(yōu)先級進(jìn)程搶占的前提下。這種方法就是搶占式調(diào)度,保證了高優(yōu)先級線程始終滿足其最終期限,而不管有多少其它線程正在競爭CPU時間。
通過合理地控制線程優(yōu)先級,開發(fā)者能顯著地提高很多對用戶非常重要的應(yīng)用響應(yīng)速度。然而,控制優(yōu)先級可能是一把雙刃劍,當(dāng)使用不當(dāng)時它可能會潛在地導(dǎo)致低優(yōu)先級的進(jìn)程不能得到CPU時間。保證高優(yōu)先級的進(jìn)程和線程的同時確保不會使其它進(jìn)程處于“饑餓”狀態(tài)的關(guān)鍵是要對它們的執(zhí)行進(jìn)行限制,通過對執(zhí)行進(jìn)行調(diào)整或在響應(yīng)加載的過程中進(jìn)行控制,開發(fā)人員能夠限制這些活動消耗的CPU時間比例,并支持低優(yōu)先級進(jìn)程獲得對CPU的共享。
優(yōu)先級控制能夠使很多應(yīng)用受益,包括像前面提到的媒體播放器。媒體播放器需要實(shí)現(xiàn)正常播放所要求的速率。在這種限制之下,一個讀線程和一個顯示線程可以被設(shè)計(jì)成依靠一個可編程的定時器來喚醒,緩沖或顯示一幀后進(jìn)入睡眠狀態(tài),直到下一個定時觸發(fā)。這提供了一種調(diào)整機(jī)制,支持高于正常用戶活動而又低于關(guān)鍵系統(tǒng)功能的優(yōu)先級設(shè)置。換句話說,假如沒有更重要的任務(wù)預(yù)備運(yùn)行,媒體播放將始終以給定的媒體速率執(zhí)行。
最壞情形
搶占式調(diào)度僅在高優(yōu)先級的線程在一個短的、有限時間段內(nèi)搶占低優(yōu)先級線程的情況下有效。否則,系統(tǒng)將不可能猜測要花費(fèi)多長時間來執(zhí)行一個給定的操作。因此,任何銷售進(jìn)程模式的RTOS的供給商都必須提供針對下面兩種時間間隔提供最壞情形:線程切換時間,即當(dāng)兩個線程處于同一進(jìn)程的情況下,從執(zhí)行一個線程的最后一條指令到執(zhí)行下一個被調(diào)度線程的第一條指令所經(jīng)過的時間;前后關(guān)系切換時間,其定義同上,但僅針對兩個線程處于不同進(jìn)程的情況。
可以將線程看作是最小的“執(zhí)行單元”,而將進(jìn)程看作是一個或多個線程的“容器”,進(jìn)程定義了線程將要在其中執(zhí)行的地址空間。顯然,最壞情形的前后關(guān)系切換時間將比最壞情形的線程切換時間要慢,盡管在一個好的RTOS設(shè)計(jì)中差別可能是微不足道的。
將所有的線程放在幾個大的進(jìn)程中將是錯誤的,因?yàn)榫€程提供的切換速度更快。雖然線程能實(shí)現(xiàn)并行處理優(yōu)勢因而適合于某些設(shè)計(jì),但將一個應(yīng)用分成多個內(nèi)存保護(hù)的進(jìn)程使得代碼更輕易調(diào)試,提供了更好的錯誤隔離和恢復(fù)能力,并答應(yīng)系統(tǒng)進(jìn)行新功能的動態(tài)升級。
可搶占的內(nèi)核
在大部分通用操作系統(tǒng)中,操作系統(tǒng)的內(nèi)核是不可搶占的。其結(jié)果是,一個高優(yōu)先級的進(jìn)程不可能搶占一個內(nèi)核調(diào)用,而是必須等待整個調(diào)用完成,即使這個調(diào)用是由系統(tǒng)中的低優(yōu)先級進(jìn)程發(fā)起的。另外,當(dāng)經(jīng)常在內(nèi)核調(diào)用中執(zhí)行的驅(qū)動程序或其它系統(tǒng)服務(wù)代表一個客戶線程執(zhí)行的時候,所有的優(yōu)先級信息經(jīng)常會丟失,這導(dǎo)致了不可猜測的延遲并阻止了關(guān)鍵活動的準(zhǔn)時完成。
而在RTOS中,內(nèi)核操作是可搶占的。盡管仍然會存在一些時間窗口,在這些時間窗口中可能沒有搶占,但是這些時間間隔應(yīng)該是相當(dāng)短暫的,通常在幾百納秒。另外,必須有一個關(guān)于搶占被推遲或中斷被禁止的時間上限,這樣開發(fā)者可以確定最壞情形下的等待時間。
為了實(shí)現(xiàn)這個目標(biāo),操作系統(tǒng)內(nèi)核必須盡可能簡潔,只有具有較短執(zhí)行路徑的服務(wù)才被包含在內(nèi)核中,任何需要大量工作的操作必須被安排到外部進(jìn)程或線程。這種方法有助于通過內(nèi)核確保最長的不可搶占代碼路徑具有一個時間上限。
優(yōu)先級繼續(xù)
然而,為一個進(jìn)程設(shè)定一個高優(yōu)先級并不總能保證該進(jìn)程能夠搶占低優(yōu)先級的進(jìn)程。有時候,系統(tǒng)會出現(xiàn)一種稱為優(yōu)先級倒置的狀態(tài),在這種狀態(tài)下,低優(yōu)先級的進(jìn)程將在“無意中”阻止較高優(yōu)先級進(jìn)程占用CPU。優(yōu)先級倒置可能會表現(xiàn)為幾種形式,為了防止發(fā)生這種情況,RTOS必須提供一種稱為優(yōu)先級繼續(xù)的功能。
假定系統(tǒng)有三個進(jìn)程:A,B,Z。這里Z是一個為A和B提供服務(wù)的“服務(wù)器”進(jìn)程。
現(xiàn)在假定A已經(jīng)請求Z來執(zhí)行一個計(jì)算,而在這期間,忽然B需要Z的服務(wù)。因?yàn)锽擁有比A更高的優(yōu)先級,一般會認(rèn)為Z將立即掛起A的請求并將轉(zhuǎn)向?yàn)锽服務(wù)。但是實(shí)際情況并非如此,因?yàn)閆比B具有更高的優(yōu)先級。其結(jié)果是,B不能阻止Z完成它當(dāng)前的工作,即對A做出響應(yīng)。
從效果上看,低優(yōu)先級的進(jìn)程A占用了更高優(yōu)先級進(jìn)程B的CPU時間,這是引入優(yōu)先級繼續(xù)的原因。通過使用RTOS提供的優(yōu)先級繼續(xù)機(jī)制,系統(tǒng)可以在A發(fā)出請求的情況下,讓Z繼續(xù)A的低優(yōu)先級。通過這種方式,B能夠在任何時候搶占A的請求。
假如一個應(yīng)用程序分布于幾個通過網(wǎng)絡(luò)連接的處理器,那么RTOS也應(yīng)該支持分布式優(yōu)先級繼續(xù),這樣可以按照優(yōu)先級的順序處理來自多個處理器的請求。假如沒有優(yōu)先級繼續(xù),一個多處理器系統(tǒng)可能會落入無限的優(yōu)先級倒置和死鎖中。
中斷處理
為了獲得對外部事件的及時響應(yīng),最小化硬件中斷發(fā)生到執(zhí)行該中斷的第一條代碼的時間很重要。這個時間間隔稱為中斷延遲,為了保證中斷延遲盡可能小,一個好的RTOS應(yīng)該在幾乎所有時間內(nèi)都支持產(chǎn)生中斷。正如在關(guān)于內(nèi)核搶占部分提到的那樣,一些重要的代碼段的確需要暫時屏蔽中斷。這種最大的屏蔽時間通常被定義為最大的中斷延遲。
在某些情況下,硬件中斷處理器必須調(diào)度并運(yùn)行一個更高優(yōu)先級的線程。在這樣的情況下,中斷處理器將返回并指示一個事件將被處理。這樣的處理將引入了第二種形式的延遲-調(diào)度延遲,這個延時必須在設(shè)計(jì)中加以考慮。調(diào)度延遲是介于用戶的中斷處理器的最后一條指令和驅(qū)動程序線程第一條指令的執(zhí)行之間的時間。
在一個嵌入式系統(tǒng)中可能會同時出現(xiàn)多個硬件中斷。例如,在一個病人監(jiān)護(hù)系統(tǒng)中,當(dāng)一個傳感器記錄了病人心跳的一次變化并且網(wǎng)卡接收到網(wǎng)絡(luò)傳來的數(shù)據(jù)的同時,護(hù)士按了觸摸屏。很明顯,一些中斷應(yīng)該立即得到處理,而其他的則可以延緩。通過提供對嵌套中斷的支持,RTOS支持嵌入式系統(tǒng)優(yōu)先處理更高優(yōu)先級的中斷。
如何提高可靠性
我們已經(jīng)明白怎樣使RTOS具有可以猜測性,但是如何實(shí)現(xiàn)其可靠性呢?答案在很大程度上取決于RTOS的架構(gòu)。
例如在實(shí)時執(zhí)行模式架構(gòu)中,大部分或所有軟件組件都在一個單一的內(nèi)存地址空間中運(yùn)行,包括操作系統(tǒng)內(nèi)核、網(wǎng)絡(luò)協(xié)議棧、設(shè)備驅(qū)動程序、應(yīng)用程序等。雖然很有效率,但這種架構(gòu)有兩個明顯的缺陷:在任何組件中的一個指針錯誤,不論這個錯誤多么細(xì)微,都可能破壞操作系統(tǒng)內(nèi)核或任何其它組件,導(dǎo)致不可猜測的行為和整個系統(tǒng)的崩潰;很難動態(tài)修復(fù)或替換任何有故障的組件。在大多數(shù)情況下,出現(xiàn)這些問題時系統(tǒng)復(fù)位是唯一的選擇。
一些RTOS,也像Linux一樣,試圖通過使用單內(nèi)核架構(gòu)來解決這個問題。在這種架構(gòu)中,用戶的應(yīng)用程序在隔離的、受保護(hù)內(nèi)存地址空間中運(yùn)行。假如一個應(yīng)用程序試圖訪問其地址空間之外的數(shù)據(jù),內(nèi)存治理單元將通知操作系統(tǒng),操作系統(tǒng)可能會采取保護(hù)措施,例如終止出錯進(jìn)程。然而,這樣的操作系統(tǒng)需要將大多數(shù)或所有驅(qū)動程序、文件系統(tǒng)和其它系統(tǒng)服務(wù)綁定到內(nèi)核中。因此,任何組件中的一個錯誤都可能帶來災(zāi)難性的內(nèi)核故障。
在設(shè)計(jì)工業(yè)控制系統(tǒng)或醫(yī)療設(shè)備時,大部分工程師和系統(tǒng)設(shè)計(jì)工程師會認(rèn)為采用RTOS是必需的。然而,網(wǎng)際路由器、車載娛樂系統(tǒng)和多媒體設(shè)備等普通應(yīng)用還需要采用RTOS嗎?像Linux或Windows這樣的通用操作系統(tǒng)是否就能勝任呢?通常,這些產(chǎn)品需要采用RTOS,但是這個問題經(jīng)常直到設(shè)計(jì)階段的后期才能意識到。
RTOS對于很多嵌入式系統(tǒng)來說不但是有益的,而且也是必要的,熟悉到這一點(diǎn)很重要。例如,一個播放如MPEG格式電影的設(shè)備,假如依靠軟件來實(shí)現(xiàn)其整個內(nèi)容傳輸,可能會出現(xiàn)用戶難以接受的高丟幀率。然而,通過使用RTOS,系統(tǒng)設(shè)計(jì)工程師能夠準(zhǔn)確地控制軟件過程的執(zhí)行順序,從而保證按照給定的媒體速率進(jìn)行播放。上述大部分情況適用于用戶希望對輸入做出立即響應(yīng)的系統(tǒng)。通過RTOS,開發(fā)人員能夠保證由用戶的操作總能得到及時的響應(yīng),除非一個更重要的操作必須首先執(zhí)行。
總之,一個好的RTOS支持開發(fā)人員控制系統(tǒng)執(zhí)行任何任務(wù)或?qū)θ魏沃匾录龀龇磻?yīng)的時間,并且能夠以一種可以猜測并且完全一致的形式滿足任務(wù)執(zhí)行的最終期限要求。但是,假如RTOS崩潰,這些最終期限就不能被滿足。因此,RTOS必須提供高度的可靠性。非凡是它必須提供在不需要重啟的情況下,從軟件故障中快速并智能恢復(fù)的機(jī)制。
搶占式調(diào)度
在像Linux這樣的通用操作系統(tǒng)中,在對線程和進(jìn)程的CPU占用上采用了“公平”調(diào)度策略。這樣的策略能夠提供良好的整體表現(xiàn),但是不能保證高優(yōu)先級、對時間要求嚴(yán)格的線程將優(yōu)先于低優(yōu)先級的線程執(zhí)行。事實(shí)上,操作系統(tǒng)有時甚至?xí)袛喔邇?yōu)先級的線程來為低優(yōu)先級線程提供CPU時間。其結(jié)果可能造成對時間要求嚴(yán)格的線程很輕易地錯過它們的最終期限,甚至在一個高速的高端處理器上運(yùn)行時也會出現(xiàn)這種情況。
而在RTOS中,線程按照其優(yōu)先級順序執(zhí)行。假如一個高優(yōu)先級的線程預(yù)備運(yùn)行時,它將在一個短的、有限時間間隔內(nèi)從任何可能正在運(yùn)行的低優(yōu)先級進(jìn)程接管CPU。另外,高優(yōu)先級的線程能夠不被中斷地運(yùn)行,直到它已經(jīng)完成了需要做的事情-當(dāng)然是在不被更高優(yōu)先級進(jìn)程搶占的前提下。這種方法就是搶占式調(diào)度,保證了高優(yōu)先級線程始終滿足其最終期限,而不管有多少其它線程正在競爭CPU時間。
通過合理地控制線程優(yōu)先級,開發(fā)者能顯著地提高很多對用戶非常重要的應(yīng)用響應(yīng)速度。然而,控制優(yōu)先級可能是一把雙刃劍,當(dāng)使用不當(dāng)時它可能會潛在地導(dǎo)致低優(yōu)先級的進(jìn)程不能得到CPU時間。保證高優(yōu)先級的進(jìn)程和線程的同時確保不會使其它進(jìn)程處于“饑餓”狀態(tài)的關(guān)鍵是要對它們的執(zhí)行進(jìn)行限制,通過對執(zhí)行進(jìn)行調(diào)整或在響應(yīng)加載的過程中進(jìn)行控制,開發(fā)人員能夠限制這些活動消耗的CPU時間比例,并支持低優(yōu)先級進(jìn)程獲得對CPU的共享。
優(yōu)先級控制能夠使很多應(yīng)用受益,包括像前面提到的媒體播放器。媒體播放器需要實(shí)現(xiàn)正常播放所要求的速率。在這種限制之下,一個讀線程和一個顯示線程可以被設(shè)計(jì)成依靠一個可編程的定時器來喚醒,緩沖或顯示一幀后進(jìn)入睡眠狀態(tài),直到下一個定時觸發(fā)。這提供了一種調(diào)整機(jī)制,支持高于正常用戶活動而又低于關(guān)鍵系統(tǒng)功能的優(yōu)先級設(shè)置。換句話說,假如沒有更重要的任務(wù)預(yù)備運(yùn)行,媒體播放將始終以給定的媒體速率執(zhí)行。
最壞情形
搶占式調(diào)度僅在高優(yōu)先級的線程在一個短的、有限時間段內(nèi)搶占低優(yōu)先級線程的情況下有效。否則,系統(tǒng)將不可能猜測要花費(fèi)多長時間來執(zhí)行一個給定的操作。因此,任何銷售進(jìn)程模式的RTOS的供給商都必須提供針對下面兩種時間間隔提供最壞情形:線程切換時間,即當(dāng)兩個線程處于同一進(jìn)程的情況下,從執(zhí)行一個線程的最后一條指令到執(zhí)行下一個被調(diào)度線程的第一條指令所經(jīng)過的時間;前后關(guān)系切換時間,其定義同上,但僅針對兩個線程處于不同進(jìn)程的情況。
可以將線程看作是最小的“執(zhí)行單元”,而將進(jìn)程看作是一個或多個線程的“容器”,進(jìn)程定義了線程將要在其中執(zhí)行的地址空間。顯然,最壞情形的前后關(guān)系切換時間將比最壞情形的線程切換時間要慢,盡管在一個好的RTOS設(shè)計(jì)中差別可能是微不足道的。
將所有的線程放在幾個大的進(jìn)程中將是錯誤的,因?yàn)榫€程提供的切換速度更快。雖然線程能實(shí)現(xiàn)并行處理優(yōu)勢因而適合于某些設(shè)計(jì),但將一個應(yīng)用分成多個內(nèi)存保護(hù)的進(jìn)程使得代碼更輕易調(diào)試,提供了更好的錯誤隔離和恢復(fù)能力,并答應(yīng)系統(tǒng)進(jìn)行新功能的動態(tài)升級。
可搶占的內(nèi)核
在大部分通用操作系統(tǒng)中,操作系統(tǒng)的內(nèi)核是不可搶占的。其結(jié)果是,一個高優(yōu)先級的進(jìn)程不可能搶占一個內(nèi)核調(diào)用,而是必須等待整個調(diào)用完成,即使這個調(diào)用是由系統(tǒng)中的低優(yōu)先級進(jìn)程發(fā)起的。另外,當(dāng)經(jīng)常在內(nèi)核調(diào)用中執(zhí)行的驅(qū)動程序或其它系統(tǒng)服務(wù)代表一個客戶線程執(zhí)行的時候,所有的優(yōu)先級信息經(jīng)常會丟失,這導(dǎo)致了不可猜測的延遲并阻止了關(guān)鍵活動的準(zhǔn)時完成。
而在RTOS中,內(nèi)核操作是可搶占的。盡管仍然會存在一些時間窗口,在這些時間窗口中可能沒有搶占,但是這些時間間隔應(yīng)該是相當(dāng)短暫的,通常在幾百納秒。另外,必須有一個關(guān)于搶占被推遲或中斷被禁止的時間上限,這樣開發(fā)者可以確定最壞情形下的等待時間。
為了實(shí)現(xiàn)這個目標(biāo),操作系統(tǒng)內(nèi)核必須盡可能簡潔,只有具有較短執(zhí)行路徑的服務(wù)才被包含在內(nèi)核中,任何需要大量工作的操作必須被安排到外部進(jìn)程或線程。這種方法有助于通過內(nèi)核確保最長的不可搶占代碼路徑具有一個時間上限。
優(yōu)先級繼續(xù)
然而,為一個進(jìn)程設(shè)定一個高優(yōu)先級并不總能保證該進(jìn)程能夠搶占低優(yōu)先級的進(jìn)程。有時候,系統(tǒng)會出現(xiàn)一種稱為優(yōu)先級倒置的狀態(tài),在這種狀態(tài)下,低優(yōu)先級的進(jìn)程將在“無意中”阻止較高優(yōu)先級進(jìn)程占用CPU。優(yōu)先級倒置可能會表現(xiàn)為幾種形式,為了防止發(fā)生這種情況,RTOS必須提供一種稱為優(yōu)先級繼續(xù)的功能。
假定系統(tǒng)有三個進(jìn)程:A,B,Z。這里Z是一個為A和B提供服務(wù)的“服務(wù)器”進(jìn)程。
現(xiàn)在假定A已經(jīng)請求Z來執(zhí)行一個計(jì)算,而在這期間,忽然B需要Z的服務(wù)。因?yàn)锽擁有比A更高的優(yōu)先級,一般會認(rèn)為Z將立即掛起A的請求并將轉(zhuǎn)向?yàn)锽服務(wù)。但是實(shí)際情況并非如此,因?yàn)閆比B具有更高的優(yōu)先級。其結(jié)果是,B不能阻止Z完成它當(dāng)前的工作,即對A做出響應(yīng)。
從效果上看,低優(yōu)先級的進(jìn)程A占用了更高優(yōu)先級進(jìn)程B的CPU時間,這是引入優(yōu)先級繼續(xù)的原因。通過使用RTOS提供的優(yōu)先級繼續(xù)機(jī)制,系統(tǒng)可以在A發(fā)出請求的情況下,讓Z繼續(xù)A的低優(yōu)先級。通過這種方式,B能夠在任何時候搶占A的請求。
假如一個應(yīng)用程序分布于幾個通過網(wǎng)絡(luò)連接的處理器,那么RTOS也應(yīng)該支持分布式優(yōu)先級繼續(xù),這樣可以按照優(yōu)先級的順序處理來自多個處理器的請求。假如沒有優(yōu)先級繼續(xù),一個多處理器系統(tǒng)可能會落入無限的優(yōu)先級倒置和死鎖中。
中斷處理
為了獲得對外部事件的及時響應(yīng),最小化硬件中斷發(fā)生到執(zhí)行該中斷的第一條代碼的時間很重要。這個時間間隔稱為中斷延遲,為了保證中斷延遲盡可能小,一個好的RTOS應(yīng)該在幾乎所有時間內(nèi)都支持產(chǎn)生中斷。正如在關(guān)于內(nèi)核搶占部分提到的那樣,一些重要的代碼段的確需要暫時屏蔽中斷。這種最大的屏蔽時間通常被定義為最大的中斷延遲。
在某些情況下,硬件中斷處理器必須調(diào)度并運(yùn)行一個更高優(yōu)先級的線程。在這樣的情況下,中斷處理器將返回并指示一個事件將被處理。這樣的處理將引入了第二種形式的延遲-調(diào)度延遲,這個延時必須在設(shè)計(jì)中加以考慮。調(diào)度延遲是介于用戶的中斷處理器的最后一條指令和驅(qū)動程序線程第一條指令的執(zhí)行之間的時間。
在一個嵌入式系統(tǒng)中可能會同時出現(xiàn)多個硬件中斷。例如,在一個病人監(jiān)護(hù)系統(tǒng)中,當(dāng)一個傳感器記錄了病人心跳的一次變化并且網(wǎng)卡接收到網(wǎng)絡(luò)傳來的數(shù)據(jù)的同時,護(hù)士按了觸摸屏。很明顯,一些中斷應(yīng)該立即得到處理,而其他的則可以延緩。通過提供對嵌套中斷的支持,RTOS支持嵌入式系統(tǒng)優(yōu)先處理更高優(yōu)先級的中斷。
如何提高可靠性
我們已經(jīng)明白怎樣使RTOS具有可以猜測性,但是如何實(shí)現(xiàn)其可靠性呢?答案在很大程度上取決于RTOS的架構(gòu)。
例如在實(shí)時執(zhí)行模式架構(gòu)中,大部分或所有軟件組件都在一個單一的內(nèi)存地址空間中運(yùn)行,包括操作系統(tǒng)內(nèi)核、網(wǎng)絡(luò)協(xié)議棧、設(shè)備驅(qū)動程序、應(yīng)用程序等。雖然很有效率,但這種架構(gòu)有兩個明顯的缺陷:在任何組件中的一個指針錯誤,不論這個錯誤多么細(xì)微,都可能破壞操作系統(tǒng)內(nèi)核或任何其它組件,導(dǎo)致不可猜測的行為和整個系統(tǒng)的崩潰;很難動態(tài)修復(fù)或替換任何有故障的組件。在大多數(shù)情況下,出現(xiàn)這些問題時系統(tǒng)復(fù)位是唯一的選擇。
一些RTOS,也像Linux一樣,試圖通過使用單內(nèi)核架構(gòu)來解決這個問題。在這種架構(gòu)中,用戶的應(yīng)用程序在隔離的、受保護(hù)內(nèi)存地址空間中運(yùn)行。假如一個應(yīng)用程序試圖訪問其地址空間之外的數(shù)據(jù),內(nèi)存治理單元將通知操作系統(tǒng),操作系統(tǒng)可能會采取保護(hù)措施,例如終止出錯進(jìn)程。然而,這樣的操作系統(tǒng)需要將大多數(shù)或所有驅(qū)動程序、文件系統(tǒng)和其它系統(tǒng)服務(wù)綁定到內(nèi)核中。因此,任何組件中的一個錯誤都可能帶來災(zāi)難性的內(nèi)核故障。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- ucosII嵌入式實(shí)時操作系統(tǒng)實(shí)驗(yàn)
- DSP硬實(shí)時操作系統(tǒng)用戶手冊下載 30次下載
- 安全關(guān)鍵的嵌入式實(shí)時操作系統(tǒng)內(nèi)核 5次下載
- TIDSP/BIOSv6.35實(shí)時操作系統(tǒng)用戶指南 4次下載
- 硬件實(shí)時操作系統(tǒng)的設(shè)計(jì) 1次下載
- 基于QNX實(shí)時操作系統(tǒng)及應(yīng)用分析 12次下載
- RTX實(shí)時操作系統(tǒng)內(nèi)核演示 9次下載
- 如何選擇實(shí)時操作系統(tǒng) 0次下載
- 高效實(shí)時操作系統(tǒng)設(shè)計(jì) 26次下載
- BenOS實(shí)時操作系統(tǒng)解密 5次下載
- 實(shí)時操作系統(tǒng)RTEMS結(jié)構(gòu)研究 78次下載
- 實(shí)時操作系統(tǒng)用于嵌入式應(yīng)用系統(tǒng)的設(shè)計(jì) 42次下載
- Linux操作系統(tǒng)實(shí)時性分析及改進(jìn)策略
- 嵌入式實(shí)時操作系統(tǒng)教程
- 4種實(shí)時操作系統(tǒng)實(shí)時性的分析對比
- 詳解實(shí)時操作系統(tǒng)和非實(shí)時操作系統(tǒng) 3500次閱讀
- 什么是實(shí)時操作系統(tǒng)(RTOS) 4328次閱讀
- 基于優(yōu)先級調(diào)度的嵌入式實(shí)時操作系統(tǒng)內(nèi)核詳解(下) 754次閱讀
- FreeRTOS:一個迷你的實(shí)時操作系統(tǒng)內(nèi)核 828次閱讀
- Linux是實(shí)時系統(tǒng)還是分時操作系統(tǒng)? 1414次閱讀
- 米爾科技嵌入式實(shí)時操作系統(tǒng)介紹 2179次閱讀
- 基于嵌入式實(shí)時系統(tǒng)的提高構(gòu)件化嵌入式操作系統(tǒng)性能的方案設(shè)計(jì) 780次閱讀
- 適用于測控領(lǐng)域的4種實(shí)時操作系統(tǒng)對比分析 3531次閱讀
- 對實(shí)時操作系統(tǒng)特性的討論 5039次閱讀
- 關(guān)于四種實(shí)時嵌入式Linux操作系統(tǒng)的對比分析淺析 6177次閱讀
- 五種基于STM平臺的且滿足實(shí)時控制要求操作的嵌入式操作系統(tǒng)的介紹 5158次閱讀
- 為什么選擇Linux操作系統(tǒng)?制約標(biāo)準(zhǔn)Linux操作系統(tǒng)實(shí)時性的因素 5364次閱讀
- 如何安裝實(shí)時操作系統(tǒng)RTOS 6104次閱讀
- 基于FreeRTOS的嵌入式實(shí)時操作系統(tǒng)的原理和實(shí)現(xiàn) 6562次閱讀
- 如何為遠(yuǎn)程醫(yī)療設(shè)備選擇合適的實(shí)時操作系統(tǒng)? 2994次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開關(guān)電源基礎(chǔ)知識
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計(jì)
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
- 0.70 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21548次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183278次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評論
查看更多