首頁>技術>

首先和大家談一下實時的概念,有人說實時就是指快,越快實時性越高;也有人說實時就是指效能好,效能越高實時性越好。實際上實時強調的是一種deterministic,或者說確定性。比如需要30s做完一件事,必須要能保證不管在任何情況下,比如高負載其他任務或中斷搶佔等情況下都不超過30s,這就是一種實時性的體現。一個比較好的例子用來說明實時性,比如一臺醫療裝置的系統如果實時性沒法保障,有可能一些手術動作不能及時完成,會誤傷病人。

Linux系統作為一個GPOS(通用作業系統)發展至今已經非常成熟可靠了,並且由於遵循GPL協議,開放所有系統原始碼,非常易於裁剪。更重要的是,與其他開源的GPOS或RTOS相比,Linux系統支援多種處理器、開發板,提供多種軟體開發工具,同時Linux系統對網路和圖形介面的支援非常出色。顯然,選擇Linux作業系統在產品的開發週期和成本控制方面都有巨大優勢。

雖然Linux系統功能強大、實用性強、易於軟體的二次開發,並且提供程式設計人員熟悉的標準API。但是由於Linux系統一開始就被設計成GPOS(通用作業系統),它的目的是構建一個完整、穩定的開源作業系統,儘量縮短系統的平均響應時間,提高吞吐量,注重作業系統的整體功能需求,達到更好地平均效能。所以標準Linux並不提供硬實時性。但生活中確實又有很多場景需要實時性,比如:

為解決linux不具有硬實時的問題,誕生了幾種基於Linux的硬實時解決方案,分為兩類:

1)直接修改Linux核心原始碼。對Linux核心程式碼進行細微修改並不對核心作大規模的變動,在遵循GPL協議的情況下,直接修改核心原始碼將Linux改造成一個完全可搶佔的實時系統。其缺點是:透過修改Linux核心,難以保證實時程序的執行不會遭到非實時程序所進行的不可預測活動的干擾。該方法的代表是RT-patch(Real Preemption Patch)。

2)雙核心法。新增一個實時核心,在核心空間與linux核心並存,把標準的Linux核心作為一個普通程序在實時核心上排程。其優點是可以做到硬實時,並且能很方便地實現一種新的排程策略。常用的雙核心法有RT-Linux、RTAI(Real-Time Application Interface)和 Xenomai,

雙核法具有較好的實時性。RT-Linux最早出現,開創了雙核法的先河,是雙核法的代表。基於一種成為實時硬體抽象的層技術RTHAL(Real Time Hardware Abstraction Layer),且為該技術申請了專利,後RT-Linux被WindRiver 收購併商業化,WindRiver於2011年8月徹底停止對其更新和維護,現在 RT-linux 已經不再更新。

PREEMP_RT架構

Xenomai 2001 年 8 月由 Philippe Gerum 發起,其思想是來源於 Karim 的 ADEOS(Adoptive Domain Environment for Operating System)。釋出後即被 RTAI 採用,並一度合併為 RTAI/Fusion。後於2005年獨立。Xenomai 的實時效能比RTAI略差,因為其完全由 ADEOS 控制中斷,而 RTAI 是由其核心對中斷進行了截斷,非實時的中斷才交給 ADEOS,這就減少了一部分實時開銷。Philippe Gerum是Adeos和Xenomai專案的創始人和維護者。RTAL專案應該繼承自 RT-linux,後期吸收了 Xenomai 的一部分思想,專注實時效能,應用廣泛。

xenomai架構

RTAL架構

雖然xenomai和RTAL這兩個專案基於同一本質的實時硬體抽象層技術ADEOS(Adoptive Domain Environment for Operating System),但是實際上他們有很多不同之處。這些不同之處主要是由他們不同的目標和各自不同的實現方式造成的。RTAI專案致力於技術上可行的最低延遲;Xenomai除此之外還很看重擴充套件性,可移植性以及可維護性。Xenoami專案不僅提供雙核還對PREEMPT RT實時搶佔補丁提供支援,這又是與RTAI專案的一個顯著的不同。

另外RT-Linux只允許以核心模組的形式提供實時應用;xenomai 更注重使用者空間應用的實時性。

幾種linux實時方案對比如下表--Linux實時性改造優缺點對比。

19
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 神功!阿里Redis進階秘籍助你行走江湖,趣味解讀Redis