welcom ! Handel home

2010年2月25日 星期四

RTOS的定義

 RTOS的定義

  即時系統(Real-time operating system,RTOS)的正確性不僅依賴系統計算的邏輯結果,還依賴於產生這個結果的時間。即時系統能夠在指定或者確定的時間內完成系統功能和外部或內部、同步或非同步時間做出回應的系統。因此即時系統應該在事先先定義的時間範圍內識別和處理離散事件的能力;系統能夠處理和儲存控制系統所需要的大量資料。

  為了便於理解,機場的售票系統就是一個典型的即時系統。

 

什麼是RTOS

  1.RTOS是一個內核 

  典型的單片機程式在程式指標重定後,首先進行堆疊、中斷、中斷向量、計時器、串列口等介面設置、初始化資料存儲區和顯示內容,然後就來到了一個監測、等待或空迴圈,在這個迴圈中,CPU可以監視外設、回應中斷或用戶輸入。 

  這段主程序可以看作是一個內核,內核負責系統的初始化和開放、調度其他任務,相當於C語言中的主函數。

  RTOS就是這樣的一個標準內核,包括了各種片上外設初始化和資料結構的格式化,不必、也不推薦用戶再對硬體設備和資源進行直接操作,所有的硬體設置和資源訪問都要通過RTOS核心。硬體這樣遮罩起來以後,用戶不必清楚硬體系統的每一個細節就可以進行開發,這樣就減少了開發前的學習量。 

  一般來說,對硬體的直接訪問越少,系統的可靠性越高。RTOS是一個經過測試的內核,與一般用戶自行編寫的主程序內核相比,更規範,效率和可靠性更高。對於一個精通單片機硬體系統和編程的"老手"而言,通過RTOS對系統進行管理可能不如直接訪問更直觀、自由度大,但是通過RTOS管理能夠排除人為疏忽因素,提高軟體可靠性。 

  另外,高效率地進行多工支持是RTOS設計從始至終的一條主線,採用RTOS管理系統可以統一協調各個任務,優化CPU時間和系統資源的分配,使之不空閒、不擁塞。針對某種具體應用,精細推敲的應用程式不採用RTOS可能比採用RTOS能達到更高的效率;但是對於大多數一般用戶和新手而言,採用RTOS是可以提高資源利用率的,尤其是在片上資源不斷增長、產品可靠性和進入市場時間更重要的今天。 

  2.RTOS是一個平臺 

  RTOS建立在單片機硬體系統之上,用戶的一切開發工作都進行於其上,因此它可以稱作是一個平臺。採用RTOS的用戶不必花大量時間學習硬體,和直接開發相比起點更高。 

  RTOS還是一個標準化的平臺,它定義了每個應用任務和內核的介面,也促進了應用程式的標準化。應用程式標準化後便於軟體的存檔、交流、修改和擴展,為嵌入式軟體發展的工程化創造了條件、減少開發管理工作量。嵌入式軟體標準化推廣到社會後,可以促進軟體發展的分工,減少重複勞動,近來出現的建立於RTOS上的檔和通信協定庫函數產品等就是實例。 

  RTOS對於開發單位和開發者個人來說也是一種提高。引入RTOS的開發單位,相當於引入了一套行業中廣泛採用的嵌入式系統應用程式開發標準,使開發管理更簡易、有效。基於RTOSC語言的開發,具有良好的可繼承性,在應用程式、處理器升級以及更換處理器類型時,現存的軟體大部分可以不經修改地移植過來。 

  對於開發人員來說,則相當於在程式設計中採用一種標準化的思維方式,提高知識創造的效率;同時因為具有類似的思路,可以更快地理解同行其他人員的創造成果

 

RTOS的特點

  一、時間約束性

  即時系統的任務具有一定的時間約束(截止時間)。根據截止時間,即時系統的即時性分為"硬實時""軟即時"。硬實時是指應用的時間需求能夠得到完全滿足,否則就造成重大安全事故,甚至造成重大的生命財產損失和生態破壞,如在航空航太、軍事、核工業等一些關鍵領域中的應用。軟即時是指某些應用雖然提出時間需求,但即時任務偶爾違反這種需求對系統運行及環境不會造成嚴重影響,如監控系統等和資訊採集系統等。

  二、可預測性

  可預測性是指系統能夠對即時任務的執行時間進行判斷,確定是否能夠滿足任務的時限要求。由於即時系統對時間約束要求的嚴格性,使可預測性稱為即時系統的一項重要性能要求。除了要求硬體延遲的可預測性以外,還要求軟體系統的可預測性,包括應用程式的回應時間是可預測的,即在有限的時間內完成必須的工作;以及作業系統的可預測性,即即時原語、調度函數等運行開銷應是有界的,以保證應用程式執行時間的有界性。

  三、可靠性

  大多數即時系統要求有較高的可靠性。在一些重要的即時應用中,任何不可靠因素和電腦的一個微小故障,或某些特定強即時任務(又叫關鍵任務)超過時限,都可能引起難以預測的嚴重後果。為此,系統需要採用靜態分析和保留資源的方法及冗餘配置,使系統在最壞情況下都能正常工作或避免損失。可靠性已成為衡量即時系統性能不可缺少的重要指標。

  四、與外部環境的交互作用性

  即時系統通常運行在一定的環境下,外部環境是即時系統不可缺少的一個組成部分。電腦子系統一般是控制系統,它必須在規定的時間內對外部請求做出反應。外部物理環境往往是被控子系統,兩者互相作用構成完整的即時系統。大多數控制子系統必須連續運轉以保證子系統的正常工作或準備對任何異常行為採取行動。

  早期的即時系統功能簡單,包括單板機、單片機,以及簡單的嵌入式即時系統等,其調度過程相對簡單。隨著即時系統應用範圍的不斷擴大,系統複雜性不斷提高,即時系統具有以下新特點。

  1、多工類型

  在即時系統中,不但包括週期任務、偶發任務、非週期任務,還包括非即時任務。即時任務要求要滿足時限,而非即時任務要求要使其回應時間盡可能的短。多種類型任務的混合,使系統的可調度性分析更加困難。

  2、約束的複雜性

  任務的約束包括時間約束、資源約束、執行順序約束和性能約束。時間約束是任何即時系統都固有的約束。資源約束是指多個即時任務共用有限的資源時,必須按照一定的資源訪問控制協議進行同步,以避免鎖死和高優先順序任務被低優先順序任務堵塞的時間(即優先順序倒置時間)不可預測。執行順序約束是指各任務的啟動和執行必須滿足一定的時間和順序約束。例如,在分散式端到端(end-to-end)即時系統很重,同一任務的各子任務之間存在前驅/後驅約束關係,需要執行同步協定來管理子任務的啟動和控制子任務的執行,使它們滿足時間約束和系統可調度要求。性能約束是指必須滿足如可靠性、可用性、可預測性、服務品質(Quality of Service,QoS)等性能指標。

  3、具有短暫超載的特點

  在即時系統中,即使一個功能設計合理、資源充足的系統也可能由於一下原因超載:

  1)系統元件出現老化,週邊設備錯誤或系統發生故障。隨著系統運行時間的增長,系統元件出現老化,系統部件可能發生故障,導致系統可用資源降低,不能滿足即時任務的時間約束要求。

  2)環境的動態變化。由於不能對未來的環境、系統狀態進行正確有效地預測,因此不能從整體角度上對任務進行調度,可能導致系統超載。

  3)應用規模的擴大。原先滿足即時任務時限要求的系統,隨著應用規模的增大,可能出現不能滿足任務時限要求的情況,而重新設計、重建系統在時間和經濟上又不允許。

 

RTOS系統的分類

  即時系統主要分為以下兩類。

  強即時系統(Hard Real-Time):在航空航太、軍事、核工業等一些關鍵領域中,應用時間需求應能夠得到完全滿足,否則就造成如飛機失事等重大地安全事故,造成重大地生命財產損失和生態破壞。因此,在這類系統的設計和實現過程中,應採用各種分析、模擬及形式化驗證方法對系統進行嚴格的檢驗,以保證在各種情況下應用的時間需求和功能需求都能夠得到滿足。

  弱即時系統(Soft Real-Time):某些應用雖然提出了時間需求,但即時任務偶爾違反這種需求對系統的運行以及環境不會造成嚴重影響,如視頻點播(Video-On-DemandVOD)系統、資訊採集與檢索系統就是典型的弱即時系統。在VOD系統中,系統只需保證絕大多數情況下視頻資料能夠及時傳輸給用戶即可,偶爾的資料傳輸延遲對用戶不會造成很大影響,也不會造成像飛機失事一樣嚴重的後果。

 

RTOS系統的調度

  為了精確管理"時間"資源,已達到即時性和與預測性要求,並能夠滿足是即時系統的新要求,需用即時調度理論對任務進行調度和可調度性分析。任務調度技術包括調度策略和可調度性分析方法,兩者是緊密結合的。任務調度技術研究的範圍包括任務使用系統資源(包括處理機、記憶體、I/O、網路等資源)的策略和機制,以及提供判斷系統性能是否可預測的方法和手段。例如,什麼時候調度任務運行、在哪運行(當系統為多處理機系統或分散式系統時)、運行多長時間等等;以及判斷分析用一定參數描述的即時任務能否被系統正確調度。

  給定一組即時任務和系統資源,確定每個任務何時何地執行的整個過程就是調度。在非即時系統中,調度的主要目的是縮短系統平均回應時間,提高系統資源利用率,或優化某一項指標;而即時系統中調度的目的則是要盡可能地保證每個任務滿足他們的時間約束,及時對外部請求做出回應。即時調度技術通常有多種劃分方法,常用以下兩種。

  搶佔式調度和非搶佔式調度

  1)搶佔式調度通常是優先順序驅動的調度。每個任務都有優先順序,任何時候具有最高優先順序且已啟動的任務先執行。一個正在執行的任務放棄處理器的條件為:自願放棄處理器(等待資源或執行完畢);有高優先順序任務啟動,該高優先順序任務將搶佔其執行。除了共用資源的臨界段之外,高優先順序任務一旦準備就緒,可在任何時候搶佔低優先順序任務的執行。搶佔式調度的優點是即時性好、反應快,調度演算法相對簡單,可優先保證高優先順序任務的時間約束,其缺點是上下文切換多。而非搶佔式調度是指不允許任務在執行期間被中斷,任務一旦佔用處理器就必須執行完畢或自願放棄。其優點是上下文切換少;缺點是在一般情況下,處理器有效資源利用率低,可調度性不好。

  靜態表驅動策略和優先順序驅動策略

  2)靜態表驅動策略(Static Table-Driven Scheduling)是一中離線調度策略,指在系統運行前根據各任務的時間約束及關聯關係,採用某種 搜索策略生成一張運行時刻表。這張運行時刻表與列車運行時刻表類似,指明了各任務的起始運行時刻及運行時間。運行時刻表一旦生成就不再發生變化了。在系統運行時,調度器只需根據這張時刻表啟動相應的任務即可。由於所有調度策略在離線情況下指定,因此調度器的功能被弱化,只具有分派器(Dispatcher)的功能。

  優先順序驅動策略指按照任務優先順序的高低確定任務的高低確定任務的執行順序。優先順序驅動策略又分為靜態優先順序調度策略。靜態優先順序調度是指任務的優先順序分配好之後,在任務的運行過程中,優先順序不會發生改變。靜態優先順序調度又稱為固態優先順序調度。動態優先順序調度是指任務的優先順序可以隨著時間或系統狀態的變化而發生變化。 

  RTOS產生並得到迅速發展的原因

  單片機處理器能力的提高和應用程式功能的複雜化、精確化,迫使應用程式劃分為多個重要性不同的任務,在各任務間優化地分配CPU時間和系統資源,同時還要保證即時性。靠用戶自己編寫一個實現上述功能的內核一般是不現實的,而這種需求又是普遍的。在這種形勢之下,由專業人員編寫的、滿足大多數用戶需要的高性能RTOS內核就是一種必然結果了。 

  對程式即時性和可靠性要求的提高也是RTOS發展的一個原因。此外,單片機系統軟體發展日趨工程化,產品進入市場時間不斷縮短,也迫使管理人員尋找一種有利於程式繼承性、標準化、多人並行開發的管理方式。從長遠的意義上來講,RTOS的推廣能夠帶來嵌入式軟體工業更有效、更專業化的分工,減少社會重複勞動、提高勞動生產率。

沒有留言: