在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<abbr id="27omo"></abbr>

<menu id="27omo"><dl id="27omo"></dl></menu>
    • <label id="27omo"><tt id="27omo"></tt></label>

      新聞中心

      EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 提高實時操作系統(tǒng)的實時性能和可靠性策略

      提高實時操作系統(tǒng)的實時性能和可靠性策略

      作者: 時間:2009-05-06 來源:網絡 收藏

      本文引用地址:http://www.biyoush.com/article/258027.htm
      可搶占的內核

      在大部分通用操作系統(tǒng)中,操作系統(tǒng)的內核是不可搶占的。其結果是,一個高優(yōu)先級的進程不可能搶占一個內核調用,而是必須等待整個調用完成,即使這個調用是由系統(tǒng)中的低優(yōu)先級進程發(fā)起的。另外,當經常在內核調用中執(zhí)行的驅動程序或其它系統(tǒng)服務代表一個客戶線程執(zhí)行的時候,所有的優(yōu)先級信息經常會丟失,這導致了不可猜測的延遲并阻止了關鍵活動的準時完成。

      而在中,內核操作是可搶占的。盡管仍然會存在一些時間窗口,在這些時間窗口中可能沒有搶占,但是這些時間間隔應該是相當短暫的,通常在幾百納秒。另外,必須有一個關于搶占被推遲或中斷被禁止的時間上限,這樣開發(fā)者可以確定最壞情形下的等待時間。

      為了實現(xiàn)這個目標,操作系統(tǒng)內核必須盡可能簡潔,只有具有較短執(zhí)行路徑的服務才被包含在內核中,任何需要大量工作的操作必須被安排到外部進程或線程。這種方法有助于通過內核確保最長的不可搶占代碼路徑具有一個時間上限。

      優(yōu)先級繼續(xù)

      然而,為一個進程設定一個高優(yōu)先級并不總能保證該進程能夠搶占低優(yōu)先級的進程。有時候,系統(tǒng)會出現(xiàn)一種稱為優(yōu)先級倒置的狀態(tài),在這種狀態(tài)下,低優(yōu)先級的進程將在“無意中”阻止較高優(yōu)先級進程占用。優(yōu)先級倒置可能會表現(xiàn)為幾種形式,為了防止發(fā)生這種情況,必須提供一種稱為優(yōu)先級繼續(xù)的功能。

      假定系統(tǒng)有三個進程:A,B,Z。這里Z是一個為A和B提供服務的“服務器”進程。

      現(xiàn)在假定A已經請求Z來執(zhí)行一個計算,而在這期間,忽然B需要Z的服務。因為B擁有比A更高的優(yōu)先級,一般會認為Z將立即掛起A的請求并將轉向為B服務。但是實際情況并非如此,因為Z比B具有更高的優(yōu)先級。其結果是,B不能阻止Z完成它當前的工作,即對A做出響應。

      從效果上看,低優(yōu)先級的進程A占用了更高優(yōu)先級進程B的時間,這是引入優(yōu)先級繼續(xù)的原因。通過使用提供的優(yōu)先級繼續(xù)機制,系統(tǒng)可以在A發(fā)出請求的情況下,讓Z繼續(xù)A的低優(yōu)先級。通過這種方式,B能夠在任何時候搶占A的請求。

      假如一個應用程序分布于幾個通過網絡連接的處理器,那么RTOS也應該支持分布式優(yōu)先級繼續(xù),這樣可以按照優(yōu)先級的順序處理來自多個處理器的請求。假如沒有優(yōu)先級繼續(xù),一個多處理器系統(tǒng)可能會落入無限的優(yōu)先級倒置和死鎖中。

      中斷處理

      為了獲得對外部事件的及時響應,最小化硬件中斷發(fā)生到執(zhí)行該中斷的第一條代碼的時間很重要。這個時間間隔稱為中斷延遲,為了保證中斷延遲盡可能小,一個好的RTOS應該在幾乎所有時間內都支持產生中斷。正如在關于內核搶占部分提到的那樣,一些重要的代碼段的確需要暫時屏蔽中斷。這種最大的屏蔽時間通常被定義為最大的中斷延遲。

      在某些情況下,硬件中斷處理器必須調度并運行一個更高優(yōu)先級的線程。在這樣的情況下,中斷處理器將返回并指示一個事件將被處理。這樣的處理將引入了第二種形式的延遲-調度延遲,這個延時必須在設計中加以考慮。調度延遲是介于用戶的中斷處理器的最后一條指令和驅動程序線程第一條指令的執(zhí)行之間的時間。

      在一個嵌入式系統(tǒng)中可能會同時出現(xiàn)多個硬件中斷。例如,在一個病人監(jiān)護系統(tǒng)中,當一個傳感器記錄了病人心跳的一次變化并且網卡接收到網絡傳來的數(shù)據(jù)的同時,護士按了觸摸屏。很明顯,一些中斷應該立即得到處理,而其他的則可以延緩。通過提供對嵌套中斷的支持,RTOS支持嵌入式系統(tǒng)優(yōu)先處理更高優(yōu)先級的中斷。

      如何提高可靠性

      我們已經明白怎樣使RTOS具有可以猜測性,但是如何實現(xiàn)其可靠性呢?答案在很大程度上取決于RTOS的架構。

      例如在實時執(zhí)行模式架構中,大部分或所有軟件組件都在一個單一的內存地址空間中運行,包括操作系統(tǒng)內核、網絡協(xié)議棧、設備驅動程序、應用程序等。雖然很有效率,但這種架構有兩個明顯的缺陷:在任何組件中的一個指針錯誤,不論這個錯誤多么細微,都可能破壞操作系統(tǒng)內核或任何其它組件,導致不可猜測的行為和整個系統(tǒng)的崩潰;很難動態(tài)修復或替換任何有故障的組件。在大多數(shù)情況下,出現(xiàn)這些問題時系統(tǒng)復位是唯一的選擇。

      一些RTOS,也像Linux一樣,試圖通過使用單內核架構來解決這個問題。在這種架構中,用戶的應用程序在隔離的、受保護內存地址空間中運行。假如一個應用程序試圖訪問其地址空間之外的數(shù)據(jù),內存治理單元將通知操作系統(tǒng),操作系統(tǒng)可能會采取保護措施,例如終止出錯進程。然而,這樣的操作系統(tǒng)需要將大多數(shù)或所有驅動程序、文件系統(tǒng)和其它系統(tǒng)服務綁定到內核中。因此,任何組件中的一個錯誤都可能帶來災難性的內核故障。

      第三種方法是采用微內核架構來提供更精確的故障隔離,像QNXNeutrino這樣的操作系統(tǒng)都基于微內核架構。微內核有兩個明確的特征:

      在操作系統(tǒng)內核中只實現(xiàn)了一個包含了基本OS服務的小內核。包括驅動程序、文件系統(tǒng)、協(xié)議棧和用戶應用程序在內的所有其它的組件在內核外部分離的、保護內存的進程中運行。有問題的系統(tǒng)服務不再作為孤立的故障點,而是在它破壞其它服務或操作系統(tǒng)內核之前被終止并重啟。

      所有的組件能夠通過消息傳遞進行通信,一個定義良好的通信機制保障了程序在保持彼此安全隔離的前提下進行數(shù)據(jù)交換。適當實現(xiàn)的消息傳遞也可以作為一個虛擬的“軟件總線”,答應幾乎任何的軟件組件,甚至是一個設備驅動程序被動態(tài)地加入或替換,對于必須提供連續(xù)服務的系統(tǒng)而言這是一項關鍵要求。

      和傳統(tǒng)的操作系統(tǒng)架構相比,微內核支持嵌入式設備贏得明顯更快的平均修復時間。例如,假如一個設備驅動程序失敗將可能出現(xiàn)以下情況:操作系統(tǒng)可以終止該驅動程序,回收其正在使用的資源,并對其進行重新啟動,這個過程通常這只需要幾個毫秒時間。

      盡管和傳統(tǒng)的操作系統(tǒng)相比,基于消息傳遞的微內核RTOS通常提供了更好的容錯性和動態(tài)升級能力,也有一些觀點認為消息傳遞增加了開銷。在實際應用中,假如實現(xiàn)正確,消息傳遞的性能可以接近底層硬件的內存帶寬。例如,一個微內核RTOS可以采用多段式消息和線程到線程的消息數(shù)據(jù)直接拷貝等各種技術,來確保系統(tǒng)性能可以達到傳統(tǒng)的進程間通信方法的水平。由一些組織如DedicatedSystems等進行的獨立測試證實,和傳統(tǒng)的RTOS相比,微內核RTOS在一系列的實時指標方面表現(xiàn)良好,在很多情況下甚至有更好的表現(xiàn)。


      評論


      相關推薦

      技術專區(qū)

      關閉