請問什麼機制導致vxworks比linux的即時性要強

來源:互聯網
上載者:User

      過去很多嵌入式系統不是一個作業系統,或者是供應商的專有核心,或者是DOS作業系統的
擴充。顯然這些方法並不能適應今天嵌入式系統開發的要求!現有的一些商業即時作業系統
,儘管提供了很小的核心和多任務開發環境,但效能並不理想,也不符合現在即時嵌入式市
場的需求。

      因此,人們把目光投向了通用作業系統(例如Windows、Solaris、linux),希望把它們“
改造”為即時作業系統。通常這些作業系統功能強大,結構複雜,易於軟體的二次開發,實
用性強,並且提供編程人員熟悉的標準API。此外,這些作業系統也提供了一些對即時軟體
開發的支援。然而,這些作業系統用於嵌入式系統的開發還存在不足。嵌入式系統要求具備高可靠性,滿足應
用需求的可剪裁性,以及比通用作業系統要求更高的即時性。

      做為嵌入式系統開發的解決方案,linux在眾多通用作業系統中具有獨一無二的優勢。
      首先,Windows和Solaris等專有商業作業系統的剪裁受到商家的嚴格控制。這大大限制了開
發者的剪裁深度。而linux遵循GPL協議,開放所有系統原始碼,非常易於剪裁。

      其次,同其它開放源碼的通用作業系統(如FreeBSD)相比,linux在多種處理器、開發板支
持和軟體開發工具支援上有很強的優勢。
linux最初也是作為通用作業系統而設計開發的,但提供了一些即時處理的支援。這包括支
持大部分POSIX標準中的即時功能,支援多任務、多線程,具有豐富的通訊機制等。

      linux還提供符合了POSIX標準的調度策略,包括FIFO調度策略、時間片輪轉調度策略和靜態
優先順序搶佔式調度策略。其預設的調度策略是第三種。Linux還提供了記憶體鎖定功能,以避
免在即時處理中儲存頁被換出,也提供了符合POSIX 標準的即時訊號機制。

      一個致命問題是,linux在使用者態支援可搶佔調度策略,而在核心態卻不支援搶佔式調度策
略。這樣運行在Linux核心態的任務(或系統調用)是不能被其它優先順序更高的任務所搶佔
的,這樣就會引起優先順序逆轉問題。另外,Linux作業系統的中斷處理控制代碼是不可調度的,
不能依優先順序高低

      此外,我們還關心和任務回應時間相關的時鐘精度,以及由於資源共用而帶來的優先順序逆轉
問題。linux中硬體時鐘中斷的預設時間間隔是10ms,所有的軟體時鐘都是靠硬體來觸發的
。而簡單同步機制(互斥)不支援優先順序繼承又很可能導致優先順序逆轉。

      獨立核方法

      linux作為即時系統的獨立核方法是指設計一種完全獨立的即時核心,但其API 與Linux核心
相相容。這種方法的理論基礎是一款優秀的即時作業系統必須在其設計之初就充分考慮到系
統即時性的要求,並能夠提供符合標準的API。這種實現方法對很多與POSIX
相容的專有即時系統供應商很有吸引力。

      這種方法的局限性是由於設計了一個完全獨立的即時核心而沒有使用原有linux核心,導致
Linux系統的一些優勢難以繼承,尤其是與Linux核心相關的一些優勢無法獲得。比如Linux
核心對大量硬體的廣泛支援,Linux核心超群的可靠性、穩定性等。另外,由於這種方法並
沒有通過修改Linux
核心代碼來開發即時核心,而是在Linux系統之上重新設計了一個即時核心,這樣的開發並
不要求原始碼開放。因此,Linux一些基於開放原始碼的優勢也勢必受損。最後一點,任何
基於Linux核心的開發成果也無法方便地應用到即時核心中。

      當然這種實現方法也從linux系統中得到了很多好處。由於Linux系統的支撐,即時核心就並
不需要“真”的去實現。而且熟悉Linux系統的開發人員也可以很快地熟悉這種方法開發出
的即時系統。人們也會自然地想到用Linux系統做嵌入式系統的開發平台。此外,如果這種
即時系統的API是Linux系統API子集的話,我們還可以只在Linux主機上模擬,進行應用程式的開發和調試,免去了遠端偵錯之苦!
 
      與linux API的相容程度是評估這類即時系統的一個重要指標。如果一個即時系統相容了所有Linux
API,那麼就允許所有Linux上的應用程式和庫在其上運行使用。因此,這將會帶來一個巨大
的好處,所有在Linux上可用的第三方軟體均可以在其上使用。當然,開發一款這樣相容所
有Linux API的即時系統決不是件容易的事,尤其是對於單個開發商來說。

      所以,大量的第三方軟體並不能很容易地移植到即時系統中來,這點不足,也使linux的優
勢大打折扣!

      雙核方法

      這種方法在同一硬體平台上採用了兩個相互配合,共同工作的系統核心,一個核心提供精確
的即時多任務管理,另一個核心提供複雜的非即時通用功能。

      這種方法是通過在linux作業系統的最底層增加一層即時核心層來實現的。即時核心負責硬
件管理並提供即時任務管理。即時核心還用軟體“類比”常規Linux系統對底層硬體的使用
/禁止中斷,而不是真正的操作中斷控制寄存器。Linux核心被看做即時核心中優先順序最低的
任務來調度,只有當沒有可啟動並執行即時任務時Linux核心才被調度。

      這種方法的一個關鍵所在是運行在常規linux核心上的所有非即時任務必須是支援可搶佔式
調度的。這樣才能做到對即時核心提供精確即時保證沒有任何影響。由於即時核心非常小,
並不會增加整個系統的負載,所有這些對開發即時性要求嚴格的即時軟體都提供了有力保障

      這種方法的弊端在於即時任務的開發是直接面向提供精確即時服務的小即時核心的,而不是
功能強大的常規linux核心。因此,即時任務是運行在系統核心層的,這就意味著這些即時
任務可以運行在沒有記憶體保護的層級之上。所以,一個即時任務的錯誤可能會導致整個系統
的癱瘓!更要命

      這種開發模式暗示我們必須要對應用進行靜態分解。把它分解成即時部分和非即時部分。在
大多情況下,這是件好事情。它迫使開發人員將應用系統分解成即時子系統和非即時子系統
兩部分。但很顯然,使用這種開發模式也限制了應用的類型!因為,這種用二元論觀點看待
即時系統的方法並不適合所有的應用。在一些應用中,即時部分和非即時部分的界線並不是十分分明,期間
可能存在著不同程度的軟即時部分。

      這種方法的另一個不足之處是,開發模式混合了即時應用的兩個不相干維度——功能需求和
即時需求。它要求應用的即時需求必須限制於由即時核心提供的功能需求限度以內。而即時
核心提供的功能支援非常有限。當然我們也可以擴充即時核心的功能,比如增加即時網路功
能等。然而,新增加的部分很有可能會重疊linux核心已有功能,而導致了不必要的系統“膨脹”,並折損
這種方法的價值。

修改核方法

      這種方法是基於已有linux系統對即時軟體開發的支援,進行原始碼級修改而使Linux變成一
個真正的即時作業系統。這種方法也是和Linux哲學相吻合的。任何基於Linux核心原始碼修
改的產品,都要遵循GPL協議,對所有軟體人員開放原始碼。一旦很多人認為它是有用的,就會有人對它進行維護,
或者是混合在通用Linux核心中,或者是單獨分出一個即時Linux分支。

      這種方法的中心原則是精心選擇部分改動,就可以滿足一系列相關linux即時開發。此外,
由於這些改動都是相對局部的,不會從根本上改變Linux的核心。而且一些改動還可以通過
常規Linux的可載入模組方式完成。在需要時系統可以動態載入該功能模組,在不需要時還
可以動態卸載該模組比如,修改之一是核心搶佔式調度。把核心從非搶佔式變成搶佔式是結構上的大變動,並可
能引起很多問題,但很多問題已經在linux支援SMP 的時候解決了。因此,核心的搶佔式修
改就可以簡單地利用SMP掛鈎。另一個修改點是前面提到過的使中斷處理控制代碼可調度。還有一些修改是全域的,例如
修改系統時鐘服務來提供更高精度的“心跳”,而不增加不必要的系統負載,或者是提供在
核心實現互斥機制來支援優先順序繼承。

      資源核方法

      這種方法是為解決傳統即時作業系統中固定優先順序搶佔式調度策略的局限性而產生的。固定
優先順序搶佔式調度演算法沒有任務間的臨時保護。因此,可預見的任務回應時間依賴於對所有
更高優先順序任務執行時間的預測。在這樣的系統中,可預見性是與全域相關的,並且可能被
一個糟糕任務而
      影響的。此外,這種用靜態觀點看待即時系統也是不妥的。在很多即時應用中,更希望即時
系統可以根據應用程式獲得資源動態地調整任務屬性,以求得到最優效果。

      資源核方法是一種以資源為中心來指導即時核心提供精確的、有保證的、可搶佔的擷取系統
資源的方法。只要即時應用所需資源可以由核心後台資源管理程式調配滿足,即時核心是允
許即時應用可配置的。因此,即時核心其實是提供了即時應用可構建的基礎——從配置簡單
的即時系統到複雜的即時系統,都可以通過動態地改變即時任務屬性和它們在整個系統中的優先順序來滿足。

      這種方法的最大優點是系統具有很好的健壯性、可精確預見的即時性。另一個優點是允許應
用程式根據實際情況動態調整自身屬性。此外,這種方法非常適合嵌入式系統的開發。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.