- 即時系統必須在嚴格的時限內產生正確的結果,並與物理過程和確定性行為相協調。
- STR 的架構結合了特定的硬體、RTOS、調度演算法(例如 EDF)和安全性並發機制。
- 可靠性、安全性、容錯性和時間效率是工業、交通、國防、電信和醫療等產業的關鍵要求。
- 即時作業系統 (RTOS) 和即時語言允許設計能夠以有限且可預測的延遲響應外部事件的嵌入式應用程式。
即時電子系統已深深融入我們的日常生活,儘管我們常常難以察覺。從汽車安全氣囊到空中交通管制,甚至連簡單的微波爐,一切都依賴電腦系統,不僅要確保其正確運行,更要確保其在精確的時刻運行。如果系統即使稍微超過時間限制,即使計算結果完美無缺,也會被視為故障。
這些系統的魅力(以及挑戰)在於它們需要以非常精確的時間軸與物理世界互動。僅僅「快」是不夠的:它們必須可預測、穩定,並且與電腦外部發生的事情同步。正因如此,即時系統的設計、分析和測試比傳統的通用系統要複雜得多。
什麼是實時系統?它與快速系統有何不同?
即時系統(RTS)本質上是一個數位系統,用於在明確的時間限制內控製或監控實體過程。它不僅必須產生邏輯上正確的結果,而且還必須確保在規定的時間範圍內做出回應;未能按時完成則構成系統故障。
這種行為的典型例子包括汽車安全氣囊或防鎖死煞車系統(ABS)的啟動、機器人試圖在空中接住球,以及現代車輛的引擎管理系統。在所有這些情況下,即使只有幾毫秒的反應延遲,都可能毫無用處,甚至造成危險。
在此語境中,「時間」一詞意味著系統的正確運作取決於回應發生的時機,而不僅僅是回應的內容。 「真實」則意味著系統必須在外部事件實際演變的過程中做出反應,且反應的時間尺度必須與其所控制的物理環境的時間尺度相一致。
這與簡單的「快速」系統形成鮮明對比,在這種系統中,唯一重要的是輸出盡快出現,而無需與外部世界同步。功能強大的網路伺服器速度可能很快,但如果它沒有與實體事件緊密相關的嚴格截止時間,就不一定是即時系統。
區分它們與線上系統也很重要:這些系統可能始終處於連線狀態並回應請求(例如,瀏覽器或預訂系統),但它們不必遵守與實體流程協調的嚴格截止日期,因此它們並非自動成為即時系統;然而,在現代 Web 應用程式中,即時搜尋可能需要類似的延遲和保證。
實際例子:十字路口的交通號誌控制
即時電子系統的典型例子是繁忙路口的交通號誌控制系統。僅僅「大致」準時地改變信號燈是不夠的;必須根據街道上發生的情況不斷做出決策。
首先,對交通狀況進行監控。在車道和行人穿越道上安裝感測器(感應線圈、攝影機、紅外線感測器等),用於偵測車輛和行人。這些設備不斷將資料傳送到中央控制器,使其能夠獲取最新的環境資訊。
在控制中心,一台嵌入式計算機即時處理數據,應用演算法計算排隊車輛數量、每條車道的佔用情況以及等待的行人數量。根據這些訊息,它決定每個方向交通號誌每個相位的持續時間。
接下來是決策階段。例如,系統會決定延長擁堵最嚴重方向的綠燈時間以緩解交通擁堵,或優先放置等待時間過長的行人過街通道。這些決策是基於預先設定的最佳化策略以及安全和交通流量需求。
一旦做出決定,控制器便會控制交通號誌的執行器。它會以毫秒級的精度改變交通號誌的狀態,同時遵循黃燈、全紅燈、連鎖裝置和其他安全要求,確保各階段之間的平穩過渡。
這一切都是透過持續優化實現的:系統不間斷地監控交通狀況,並即時調整綠燈、黃燈和紅燈的時長,以適應突發情況(例如交通擁堵、救護車通過、特定時段的交通流量變化等)。這清楚地表明了我們為什麼強調即時性:控制邏輯只有在特定的時間範圍內執行決策才有意義。
即時系統的歷史與發展
即時計算的起源與20世紀下半葉工業和航空航太過程的控制密切相關。早在1965年,就有參考文獻出版,為這些系統奠定了基礎;此後不久,在1973年,劉和萊蘭德正式提出了嚴格和靈活實時系統中調度的數學定義。
在電腦模擬領域,「即時模擬」一詞開始出現,指的是電腦模型運作速度與它所代表的物理過程速度相當。這就帶來了一個經典的難題:要麼以犧牲速度為代價來提高模型的精確度,要麼降低精度以達到甚至超越即時效能。
圖形介面和遊戲引擎也出現了同樣的情況:為了獲得流暢的體驗,它們必須對使用者輸入和場景變化做出足夠快的反應,保持較高的、穩定的每秒幀數。
自 20 世紀 60 年代和 70 年代以來,即時系統透過從備受矚目的真實案例(其中一些幾乎是災難性的)中吸取的教訓而日益成熟,這些案例幫助改進了時間分析和規劃技術。
里程碑案例:阿波羅11號和火星探路者號
即時計算早期歷史上最著名的事件之一是阿波羅11號登月艙電腦過載。在下降過程中,導引系統開始發出警報(例如著名的1202警報),表示CPU的處理速度跟不上其工作負載。
根據任務報告,如果這些警報持續存在,太空人導航資料的可靠性將受到影響,任務可能被迫中止。最終,基於先前的模擬和經驗,決定繼續執行任務,「鷹號」登月艙成功登陸月球。
本質上,這是一起處理器過載的案例:CPU在規定時間內需要處理的計算量超過了其處理能力,尤其是在將與警報相關的處理任務添加到正常工作負載中時更是如此。這次事件凸顯了在故障代價不可接受的系統中,維持充足資源裕度的重要性。
另一個經過深入研究的案例是火星探路者號探測器。在這個案例中,問題並非出在過載本身,而是一種稱為優先權反轉的現象,即使CPU的容量看似充足,也會導致錯過截止時間。
在搶佔式調度系統中,當一個高優先權任務被一個佔用共享資源(例如互斥鎖)的低優先權任務阻塞時,就會發生優先權反轉。同時,一個中優先級任務中斷了該低優先級任務。結果是,關鍵任務被一個不太重要的任務間接阻塞,破壞了即時性保證。
為了降低這種風險,系統採用了優先級繼承協定。當高優先權任務被低優先權任務阻塞時,調度器會暫時將低優先權任務的優先權提升到與高優先權任務相同的等級。這樣可以防止中等優先任務中斷高優先級任務,使其能夠盡快釋放資源,然後恢復到原來的優先順序。
這些案例清楚地表明,設計 STR 不僅僅是“有足夠的 CPU 餘裕”,還涉及理解調度和時序理論,以及臨時地將整個系統(硬體、韌體和軟體)一起進行測試。
即時系統的基本組成部分
典型的STR由專用硬體、軟體和介面元件與物理過程結合而成。它不僅僅是一個程序,而是一個整合系統,必須在已知的時間範圍內對外部刺激做出反應。
從物理層面來看,我們發現該系統處於受控狀態:這可以是任何可控的過程,例如工業工廠、馬達、生產線、交通號誌、機器人或醫療設備。 STR(系統控制終端)測量其狀態並施加控制措施,使其保持在所需的參數範圍內。
在物理世界和電腦之間存在一個訊號接口,它由類比數位轉換器 (ADC)、數位類比轉換器 (DAC) 以及訊號調理電路組成。這一層負責調整電壓、電流和訊號格式,以便數位系統能夠讀取和產生它們。
關鍵要素是即時時鐘,它在每個取樣週期內產生週期性中斷。這可以同步資料收集、控制和執行任務,確保測量和指令在需要時精確發出。
該系統通常包括一個人工操作控制台,配備啟動和停止控制按鈕、參數調節介面以及手動模式強制執行機制。此外,螢幕用於顯示狀態、警報、趨勢以及其他與製程監控相關的任何資訊。
重要的狀態變更會被即時儲存在資料庫中,以便記錄已發生的事情、調查故障並提取統計資料以改善管理。這些歷史資訊會隨著時間的推移而不斷增長,並為維護、優化和重新設計決策提供基礎。
許多工業環境都配備了遠端監控系統,使得分散式控制中心能夠對工廠進行監督,在某些情況下甚至可以進行控制。當一個工廠依賴另一個工廠時(例如,一個工廠向另一個工廠供應原材料),這種遠端監控系統至關重要,因為一個工廠做出的決策會影響整個供應鏈。
STR 的核心是嵌入式計算機,其軟體通常分為幾種類型的模組:數位控制演算法(調節器、濾波器、反饋迴路)、資料記錄、位址和管理介面以及與操作員的直接互動。
主要特性:時間、併發性、安全性和效率
即時系統通常處理涉及多個變數、外部設備和不斷變化的環境的大型複雜問題。這就要求對系統架構、規劃以及任務間的通訊機制給予充分的關注。
由於資料來自物理世界,系統必須處理表示溫度、壓力、速度或電壓等物理量的實數(浮點數、定標數等)。表示和計算的精度對控製品質至關重要。
安全性和可靠性通常至關重要:故障可能造成嚴重的經濟損失、財產損失、人身傷害或環境影響。因此,容錯技術、冗餘設計和可控降級策略都被整合在一起。
並發性是另一個顯著特徵。 STR 通常會邏輯並行地執行多個任務:感測器讀取、控制、通訊、日誌記錄、使用者介面等等。這就需要管理共享資源、避免競爭條件,並確保關鍵部分不會超過截止時間。
效率並非奢侈品,而是必需品。 STR(序列化回應)必須在邏輯和時間上都正確,同時也要最佳化以充分利用CPU、記憶體和I/O裝置。困難在於如何在時間裕量、硬體成本和軟體複雜度之間找到平衡。
輸入/輸出設備通常是專用的,並且與物理過程緊密耦合。我們指的不僅僅是通用端口,而是現場總線、智慧感測器和通訊協議,這些設備旨在最大限度地減少延遲並確保快速交付。
即時系統類型:硬即時系統、軟即時系統和固態即時系統
根據處理時間錯誤的嚴重程度,STR(系統回應)可分為若干類別。在硬實時系統中,所有截止時間都必須嚴格遵守,沒有任何例外。任何一個故障都可能導致嚴重後果,或至少會使結果無效。
典型的硬實時系統包括飛行控制系統、某些關鍵醫療系統和電力基礎設施保護系統。在這些情況下,即使結果正確但出現延遲也毫無意義;系統必須設計成在任何可預見的情況下都能滿足其時間限制。
軟即時系統允許偶爾出現延遲。延遲會降低結果的實用性,但結果仍然可以使用。多媒體或資料擷取應用就是如此,即使遺失幾幀或延遲幾個樣本,也會降低質量,但係統仍能繼續運作。
介於這兩種極端情況之間的是完全即時系統。這類系統可以容忍偶爾的延遲,但如果反應延遲到達,則會失去價值並被丟棄。經典的例子包括即時視訊或電信系統:為了保持同步,延遲到達的幀會被丟棄。
架構:開放式/封閉式和集中式/分散式
實時系統還可以根據其技術開放程度進行分類。專有系統採用封閉的技術和協議,由單一供應商控制,雖然性能可能良好,但限制了互通性和發展潛力。
相較之下,開放系統使用公共標準和協議,從而促進不同製造商的組件整合、軟體重用以及向新平台的逐步遷移。
另一個重要的差異在於集中式系統和分散式系統。在集中式系統中,主節點負責協調通訊和關鍵處理,而其他節點則充當相對簡單的終端或週邊設備。
在分散式架構中,處理和通訊任務由多個智慧節點承擔,這些節點或多或少地自主協作。這有利於提高可擴展性、冗餘性和接近物理過程,但也增加了時間同步和整體協調的困難。
確定性、中斷延遲和回應能力
確定性是簡單反應時(SRT)的核心屬性:它是指能夠以較高的機率預測任務開始和完成所需的時間。關鍵不在於速度是否最快,而在於反應時間是否已知且有界。
中斷延遲是指從外部中斷產生(例如,感測器報告事件)到系統開始處理該中斷之間的時間。該值至關重要,因為許多服務請求源自於物理環境,無法容忍任意延遲。
反應速度關注的是從接受中斷到任務執行所需的時間。它包括服務例程的啟動時間、相關處理的持續時間以及巢狀中斷或搶佔的影響等因素。
通常會對確定性和反應性進行定量分析來表徵系統:例如,可能要求95% 的任務在特定時間範圍內完成。由此,運行在即時作業系統 (RTOS) 上的應用程式必須進行設計,以避免落入最差的預期效能範圍。
透過流程和可靠性進行系統控制
在許多先進的即時系統中,應用程式流程本身對系統擁有非常精細的控制權。它們可以明確聲明自身的優先權、記憶體需求(哪些部分應該快取、允許的交換策略等)以及所需的權限。
雖然乍看之下這似乎是一個無政府狀態的模型,但實際上它是基於定義明確的流程類型和清晰的限制條件。常見的要求包括:“維護流程的 CPU 使用率不得超過 3%,除非是在明確定義的低負載視窗期。”
可靠性不僅僅意味著不會出現偶發性故障。網路服務供應商 (NSP) 必須在較長時間內將服務品質維持在約定的範圍內,即使面對合理的網路中斷,也要確保回應時間符合規範。
此外,還需要容錯能力:如果發生嚴重問題(硬體故障、人為錯誤、外部幹擾),系統必須盡可能保留資料和功能,並透過優先處理優先順序最高的關鍵任務來降低其運行速度。
程式語言和即時程式設計
實際上,許多即時系統(RTS)都是嵌入式的,必須與眾多外部組件交互,因此並發編程和直接設備控制至關重要。現代程式語言提供了執行緒、通訊和同步的基本功能,但在即時應用程式中,尤其是在像 Laravel 這樣的 Web 框架和即時服務中,必須謹慎使用這些功能。
實現效率至關重要:「漂亮」的語言特性可能會帶來高昂的代價,例如回應時間、CPU 使用率或記憶體消耗。因此,在嵌入式系統中,每一種抽像在被採用之前都會經過仔細評估。
在即時領域,Ada 和 Java(及其即時擴展)是兩種佔據重要地位的語言。 Ada 專為支援關鍵系統而設計,並不斷改進以增強其在該領域的性能。
就 Java 而言,即時功能是後來添加的,例如Java 即時規範和即時核心擴展等規範,它們引入了更適合 RTOS 的記憶體和調度模型。
即時作業系統(RTOS)
即時作業系統(RTOS)是建立具有嚴格截止時間的應用程式的核心軟體框架。它必須確保其各項服務(調度、中斷、同步、I/O 等)的行為可預測。
與通用作業系統不同,即時作業系統(RTOS)經過最佳化,能夠在極短的時間內執行重複性任務。其目標並非“做很多事情”,而是確保最重要的任務在應該運行的時候運行,並且不會出現任何意外情況。
因此,它們往往是輕量級的系統,沒有花哨的圖形介面或不必要的服務,體積只有幾兆位元組,並採用極簡主義的設計理念。更少的程式碼意味著更少的意外延遲和更少的故障點,這符合即時性要求。
從歷史上看,即時作業系統(RTOS)的研發始於20世紀60年代和70年代,最初應用於軍事、航空航太和工業領域。在隨後的幾十年裡,出現了諸如VxWorks、QNX以及Solaris的即時版本等商業產品,這些產品被廣泛應用於電信、汽車和嵌入式系統等領域。
隨著2000年代和2010年代物聯網的興起,像FreeRTOS這樣的輕量級即時作業系統在低功耗連網裝置中變得非常流行。同時,為了統一介面並提高軟體的可移植性,人們提出了即時POSIX擴充。
如今,許多即時作業系統都整合了人工智慧和機器學習技術,以優化調度、預測故障並在運行時調整控制參數。當然,所有這些都必須在保證時間可靠性的前提下進行。
即時作業系統 (RTOS) 市場價值數十億美元,預計在未來幾年將穩步成長,這主要得益於醫療設備、工業自動化、汽車和關鍵基礎設施系統的發展。
一個好的即時作業系統必須滿足的要求
現代即時作業系統(RTOS)必須具備多工處理和搶佔能力,以便搶佔優先順序較低的任務,立即執行更緊急的任務。基於優先順序的調度是目前主流的調度模式:它總是優先運行最重要且準備就緒的任務。
此外,它還必須提供通訊和同步機制(佇列、訊號量、互斥鎖、事件),旨在最大限度地減少不必要的阻塞,並避免優先權反轉等現象,在適當情況下應用繼承協定或優先權上限。
充分了解即時作業系統的時序行為至關重要:最大中斷延遲、上下文切換時間、同步原語的執行時間等。如果沒有這些數據,就無法證明應用程式能夠滿足其截止時間。
調度演算法:EDF 及其他模型
任務調度是即時系統的基石之一。在眾多研究最多的演算法中,最早的截止時間優先(EDF)演算法特別突出,它是動態優先權調度器,在許多即時場景中都是最優。
EDF 根據任務的絕對完成期限來確定優先順序:在任何給定時間,截止日期最近的任務優先順序最高。這確保在特定條件下,如果存在一個能夠滿足所有截止日期的可行方案,EDF 就能找到它。
此演算法具有預防性:如果在任務執行過程中出現另一個截止時間更緊迫的任務,系統可以中斷當前任務並將 CPU 指派給新任務。 EDF 通常使用優先權佇列來實現,而優先權佇列的排序依據是距離截止時間的剩餘時間。
EDF 的優點之一在於,只要任務集可調度,它就能在保證截止時間的前提下實現接近 100% 的 CPU 使用率。此外,它還能很好地適應截止時間或預期執行時間會發生變化的動態環境。
例如,如果我們有兩個進程 P1 和 P2,它們的週期和計算時間不同,EDF 將始終優先選擇絕對截止時間更近的實例,隨著新的激活到來和截止時間的重新計算,交替執行該實例。
然而,EDF並非完美無缺。在工作負荷極高且變更頻繁的情況下,高效實施EDF可能變得十分複雜;在某些情況下,對於交稿期限較長的任務,可能會出現資源不足的問題。
其他知名的即時演算法包括速率單調演算法(RM)和截止時間單調演算法(DM),它們根據任務週期或相對時間範圍使用固定優先權。每種演算法都有其自身的最優條件和適用領域。
即時系統的典型應用
STR(動態反應裝置)無所不在。在製程工業中,它們被用於控制和監控食品、飲料、化學、製藥等行業的生產線,確保關鍵變數保持在限值範圍內,最終產品達到預期品質。
在交通運輸領域,飛機、火車、汽車和船隻都依賴即時導航、控制和安全系統。這些系統包括防鎖死煞車系統(ABS)、牽引力控制和穩定性控制系統,以及鐵路和海上交通管理系統。
現代電信依賴高速網路中資訊流的即時管理:資料包交換、即時語音和視訊傳輸、服務品質保證和延遲降低等任務,按時完成至關重要。
在國防領域,監視、雷達、電子戰和網路安全系統利用即時平台在毫秒或更短時間內偵測和應對威脅,從而保護關鍵基礎設施和戰略資源。
在醫療領域,生命徵象監視器、呼吸器、心律調節器或輸液幫浦等設備都使用即時軟體進行操作,這些軟體必須能夠安全地對患者病情的變化做出反應,如果錯過最後期限,往往會造成生死攸關的後果。
除了數位世界,生物過程中也能觀察到即時性。例如,種子只有在環境條件(濕度、溫度、光照)符合特定範圍和時間條件時才會發芽。如果種子一接觸土壤就發芽,而不遵循這些時間條件,它很可能無法存活。這可以很好地比喻一個系統如果不能適應其時間環境,就會走向失敗。
從宏觀角度來看,STR涵蓋電信、多媒體、工業控制、機器人、航空電子、鐵路、汽車、家用電器、科學實驗和醫療系統等領域。隨著新技術的不斷湧現,這項清單仍在持續成長。
在所有這些環境中,都需要特定的即時通訊協議,例如 CAN、Token Bus、TDMA-TTP、改進的 CSMA/CD 或 Positive Acknowledge or Retransmit (PAR) 方案,這些協定可以減少傳輸時間並確保資料到達的時間。
同時,專有的即時軟體工程也得到了改進,資料流方法、資料結構和物件導向設計都進行了調整,以表示中斷、上下文變更、非同步通訊以及從具有嚴格時間要求的錯誤中恢復。
綜上所述,為何即時系統成為現代技術基礎設施的重要組成部分就更加顯而易見了:它們負責數千個關鍵和日常流程的安全、可靠運行,用戶無需考慮在幾分之一秒內「幕後」發生的一切。