實時Linux架構剖析_第1頁
實時Linux架構剖析_第2頁
實時Linux架構剖析_第3頁
實時Linux架構剖析_第4頁
實時Linux架構剖析_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Linux?的速度或效率都非常不錯,只是在一些情況下,這樣的速度還不能滿足 需求。我們需要的是在特定的容差范圍內確定性地滿足調度期限的能力。本文將揭示各種實現實時Linux的可選方案以及它們如何實現實時性一從早期的模 仿虛擬化解決方案的架構到如今標準 2.6內核中可用的選項。本文探索了一些支持實時特性的 Linux架構,并探討了實時架構 的含意是什 么。有許多種解決方案賦予Lin ux實時能力,本文將對瘦內核(或微內核)方 法、超微內核方法以及資源內核(resource-kernel )方法進行考查。最后,描述 了標準2.6內核的實時功能,并向您示范如何啟用并使用這種功能。實時的定義及要求下列

2、實時的定義為探討實時Linux架構提供了基礎。定義由 Donal Gillies在Realtime Computing FAQ 中提出(參見 參考資料 的鏈接)。實時系統(tǒng)指系統(tǒng)的計算正確性不僅取決于計算的邏輯正確性,還取決于產生結果的時間。如果未滿足系統(tǒng)的時間約束,則認為系統(tǒng)失效。換句話說,系統(tǒng)面對變化的負載(從最小到最壞的情況)時必須確定性地保證滿 足時間要求。注意,上述定義并未提到性能,原因是實時性與速度關系不大:它 與可預見性有關。例如,使用快速的現代處理器時,Linux可以提供20卩微秒的典型中斷響應,但有時候響應會變得很長。這是一個基本的問題:并不是 Linux不夠快或效率不夠高,而

3、是因為它不能提供確定性。一些例子將演示全部這些內容的含意。圖1顯示的是中斷延遲指標。當中斷到達時(eve nt ),CPU發(fā)生中斷并轉入中斷處理。執(zhí)行一些工作以確定發(fā)生了什 么事件,然后執(zhí)行少量工作分配必需的任務以處理此事件( 上下文切換)。中斷 到達與分發(fā)必需任務之間的時間(假設分配的是優(yōu)先級最高的任務) 稱為響應時 間。對于實時性要求,響應時間應是確定的并應當在已知的最壞情況的時間內完 成。1 1rX<OtherResponseTask responseactivitytimeto evnt丿J圖1.中斷延遲和響應時間EventResponse上下文切換發(fā)生中斷后分配新任務的過 程中

4、隱含著上下文切換。這 個過程在中斷時存儲CPU 的當前狀態(tài),然后恢復一項 給定任務的狀態(tài)。上下文切 換依賴于操作系統(tǒng)及底層的 處理器架構。Time有關這個過程的一個例子就是目前汽車中使用的氣囊。當報告車輛碰撞的傳感器中斷CPU后,操作系統(tǒng)應快速地分配展開氣囊的任務,并且不允許其他非實時 處理進行干擾。晚一秒鐘展開氣囊比沒有氣囊的情況更糟糕。除為中斷處理提供確定性外,實時處理也需要支持周期性間隔的任務調度??紤]圖2。本圖演示了周期性任務調度。大量控制系統(tǒng)要求周期性采樣與處理。某個 特定任務必須按照固定的周期(P)執(zhí)行,從而確保系統(tǒng)的穩(wěn)定性??紤]一下汽 車的防抱死系統(tǒng)(ABS??刂葡到y(tǒng)對車輛的每個

5、車輪的轉速進行采樣(每秒最 多20次)并控制每個制動器的壓力(防止它鎖死)。為了保持控制系統(tǒng)的正常 工作,傳感器的采樣與控制必須按照一定的周期間隔。 這意味著必須搶占其他處 理,以便ABS任務能按照期望的周期執(zhí)行。圖2.周期性任務調度U硬實時與軟實時系統(tǒng)能夠在指定的期限完成實時任務(即便在最壞的處理負載下也能如此)的操作系 統(tǒng)稱為硬實時 系統(tǒng)。但并不是任何情況下都需要硬實時支持。如果操作系統(tǒng)在 平均情況下能支持任務的執(zhí)行期限,則稱它為軟實時系統(tǒng)。硬實時系統(tǒng)指超過 截止期限后將造成災難性后果(例如展開氣囊過晚或制動壓力產生的滑行距離過 長)的系統(tǒng)。軟實時系統(tǒng)超過截止期限后并不會造成系統(tǒng)整體失?。?/p>

6、如丟失視頻 中的一幀)?,F在您已經對實時性要求有了一些深入了解,讓我們查看一些實時Lin ux架構各支持哪個級別的實時性以及如何做到這一點?;仨撌资輧群朔椒ㄊ輧群耍ɑ蛭群耍┓椒ㄊ褂昧说诙€內核作為硬件與Lin ux內核間的抽象接口(見圖3 )。非實時Linux內核在后臺運行,作為瘦內核的一項低優(yōu)先級任 務托管全部非實時任務。實時任務直接在瘦內核上運行。圖3.硬實時的瘦內核方法U&er space(Non real-time tasks)Linux kernei Non real-time Real-time taaksThin kernelHardware瘦內核主要用于(除了托管實時

7、任務外)中斷管理。瘦內核截取中斷以確保非實 時內核無法搶占瘦內核的運行。這允許瘦內核提供硬實時支持。雖然瘦內核方法有自己的優(yōu)勢(硬實時支持與標準Lin ux內核共存),但這種方法也有缺點。實時任務和非實時任務是獨立的,這造成了調試困難。而且,非 實時任務并未得到Linux平臺的完全支持(瘦內核執(zhí)行稱為瘦的一個原因)。使用這種方法的例子有 RTLinux (現在由 Wind River Systems專有),實時應 用程序接口( RTAI)和Xenomai?;仨撌壮群朔椒ㄟ@里瘦內核方法依賴于包含任務管理的最小內核, 而超微內核法對內核進行更進 一步的縮減。通過這種方式,它不像是一個內核而更像

8、是一個硬件抽象層 (HAL。超微內核為運行于更高級別的多個操作系統(tǒng)提供了硬件資源共享 (見圖4)。因 為超微內核對硬件進行了抽象,因此它可為更高級別的操作系統(tǒng)提供優(yōu)先權, 從 而支持實時性。圖4.對硬件進行抽象的超微內核法User-space (Non real-time tasks)User-space (Non real-limeReal-time tacksKernelKernelReal-time kernelNano-kemel i Intenupt dispatcherHa«lware注意,這種方法和運行多個操作系統(tǒng)的虛擬化方法有一些相似之處。使用這種方法的情況下,超微內

9、核在實時和非實時內核中對硬件進行抽象。這與hypervisor從客戶(guest)操作系統(tǒng)對裸機進行抽象的方式很相似。更多信息參見參考資 料。關于超微內核的示例是操作系統(tǒng)的 Adaptive Doma in En viro nment for Operating Systems (ADEOS)。ADEOS支持多個并發(fā)操作系統(tǒng)同步運行。當發(fā)生 硬件事件后,ADEOS對鏈中的每個操作系統(tǒng)進行查詢以確定使用哪一個系統(tǒng)處理 事件?;仨撌踪Y源內核法另一個實時架構是資源內核法。這種方法為內核增加一個模塊,為各種資源提供 預留(reservation )。這種機制保證了對時分復用(time-multiple

10、xed )系統(tǒng) 資源的訪問(CPU網絡或磁盤帶寬)。這些資源擁有多個預留參數,如循環(huán)周 期、需要的處理時間(也就是完成處理所需的時間),以及截止時間。資源內核提供了一組應用程序編程接口(API),允許任務請求這些預留資源(見圖5 )。然后資源內核可以合并這些請求,使用任務定義的約束定義一個調度, 從而提供確定的訪問(如果無法提供確定性則返回錯誤)。通過調度算法,如 Earliest-Deadli ne-First (EDF),內核可以處理動態(tài)的調度負載。圖5.實現資源預留的資源內核法Real -time tatktUser spacereaMime tasksResourceunux kern

11、elkernelHarctware資源內核法實現的一個示例是 CMU公司的Linux/RK,它把可移植的資源內核集 成到Linux中作為一個可加載模塊。這種實現演化成商用的TimeSys Linu x/RT 產品?;仨撌讟藴?.6內核中的實時目前探討的這些方法在架構上都很有趣,但是它們都在內核的外圍運行。然而, 如果對標準Linux內核進行必要的修改使其支持實時性,結果會怎么樣呢? 今天,在2.6內核中,通過對內核進行簡單配置使其完全可搶占(見圖 6), 您就可以得到軟實時功能。在標準 2.6 Linux 內核中,當用戶空間的進程執(zhí)行 內核調用時(通過系統(tǒng)調用),它便不能被搶占。這意味著如果低

12、優(yōu)先級進程進 行了系統(tǒng)調用后,高優(yōu)先級進程必須等到調用結束后才能訪問 CPU。新的配置選 項CONFIG_PREEMP改變了這一內核行為,在高優(yōu)先級任務可用的情況下(即使 此進程正在進行系統(tǒng)調用),它允許進程被搶占。Real -time processUser spacereaMime process圖6允許搶占的標準2.6 Linux 內核Linux kernel(preemptibleReal -time taskNon real-ume taskHarctware但這種配置選項也是一種折衷。雖然此選項實現了軟實時性能并且即使在負載條 件下也可使操作系統(tǒng)順利地運行,但這樣做也付出了代價。代

13、價就是略微減低了 吞吐量以及內核性能,原因是CONFIG_PREEMPi項增加了開銷。這種選項對桌新的O(1)調度程序2.6內核中新的O(1)調度 程序對性能有很大的提升, 即使存在很多任務的情況下 也是如此。不管需要運行的 任務有多少個,新的調度程 序都會在有限的時間內運 行。您可以在參考資料一 節(jié)中找到這種調度的更多信 息以及它如何進行工作。面和嵌入式系統(tǒng)而言是有用的,但并不是在任何 場景下都有用(例如,服務器)。在2.6內核中另一項有用的配置選項是高精度 定時器。這個新選項允許定時器以1卩s的精度 運行(如果底層硬件支持的話),并通過紅黑樹 實現對定時器的高效管理。通過紅黑樹,可以使 用大量的定時器而不會對定時器子系統(tǒng)(O(log n)的性能造成影響。只需要一點額外的工作,您就可以通過PREEMPT_R補丁實現硬實時。PREEMPT_R補丁 提供了多項修改,可實現硬實時支持。其中一些 修改包括重新實現一些內核鎖定原語,從而實現 完全可搶占,實現內核互斥的優(yōu)先級繼承,并把中斷處理程序轉換為內核線程以 實現線程可搶占?;仨撌捉Y束語Linux不僅是一個實驗和描述實時算法的理想平臺,目前在標準的 2.6內核中 也實現了實時功能。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論