<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

提高實(shí)時(shí)操作系統的實(shí)時(shí)性能和可靠性策略

作者: 時(shí)間:2009-05-06 來(lái)源:網(wǎng)絡(luò ) 收藏

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

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

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

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

優(yōu)先級繼續

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

假定系統有三個(gè)進(jìn)程:A,B,Z。這里Z是一個(gè)為A和B提供服務(wù)的“服務(wù)器”進(jìn)程。

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

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

假如一個(gè)應用程序分布于幾個(gè)通過(guò)網(wǎng)絡(luò )連接的處理器,那么RTOS也應該支持分布式優(yōu)先級繼續,這樣可以按照優(yōu)先級的順序處理來(lái)自多個(gè)處理器的請求。假如沒(méi)有優(yōu)先級繼續,一個(gè)多處理器系統可能會(huì )落入無(wú)限的優(yōu)先級倒置和死鎖中。

中斷處理

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

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

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

如何提高可靠性

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

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

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

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

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

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

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

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


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>