a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 針對嵌入式Linux實時化技術的討論

針對嵌入式Linux實時化技術的討論

作者: 時間:2011-12-26 來源:網絡 收藏

 引言

本文引用地址:http://www.j9360.com/article/149939.htm

  支持PowerPC、MIPS、ARM、DSP等多種處理器,逐漸被用于多種關鍵性場合。其中多媒體處理、工業控制、汽車電子等特定應用對提出了強性需求。提供了一些擴展,但需要進行實時性改造。本文Linux實時化中的一些關鍵問題進行了,如Linux內核時延,實時化主流方案及其評價等。

  Linux內核時延

  主流Linux雖然部分滿足POSIX 1003.1b實時擴展標準,但還不完全是一個實時操作系統,主要表現為:

  ● 任務調度與內核搶占

  2.6版本內核添加了許多搶占點,使進程執行在內核代碼時也可被搶占。為支持內核代碼可搶占,在2.6版內核中通過采用禁用中斷的自旋鎖來保護臨界區。但此時如果有低優先級進程在臨界區中執行,高優先級進程即使不訪問低優先級所保護的臨界區,也必須等待低優先級進程退出臨界區。

  ● 中斷延遲

  在主流Linux內核設計中,中斷可以搶占最高優先級的任務,使高優先級任務被阻塞的最長時間不確定。而且,由于內核為保護臨界區需要關閉中斷,更加增長了高優先級任務阻塞時間。

  ● 時鐘精度

  Linux通過硬件時鐘編程來產生毫秒級周期性時鐘中斷進行內核時間管理,無法滿足實時系統較高精度的調度要求。內核定時器精度同樣也受限于時鐘中斷,無法滿足實時系統的高精度定時需求。

  ● 其他延遲

  此外,Linux內核其他子系統也存在多種延遲。比如為了增強內核性能和減少內存消耗,Linux僅在需要時裝載程序地址空間相應的內存頁。當被存取內容(如代碼)不在RAM中則內存管理單元(MMU)將產生頁表錯誤(Page-Fault)觸發頁面裝載,造成實時進程響應時間不確定。

  Linux實時化發展

  主流Linux內核1.x、2.2.x和2.4.x版本的Linux內核無搶占支持,直到2.6版本的Linux內核才支持可搶占內核,支持臨界區外的內核搶占和可搶占的大內核鎖。在此基礎上,Linux采用了下列兩類實時化技術。

 ● 雙內核方式

  Linux內核實時化雙內核方式以RTLinux、RTAI和Xenomai等為典型代表。其中RTLinux實現了一個微內核實時操作系統支持底層任務管理、中斷服務例程、底層任務通信隊列等。普通Linux作為實時操作系統的最低優先級任務,Linux下的任務通過FIFO命名管道和實時任務進行通信,如圖1所示。

  當Linux要關閉中斷時,實時微內核會截取并記錄這個請求,通過軟件來模擬中斷控制器,而沒有真正關閉硬件中斷,避免了由于關中斷所造成的響應延遲。RT-Linux將系統實時時鐘設置為單次觸發模式,提供微秒級的時鐘精度。RTAI類似RTLinux的實現方式,不同之處在于它修改了體系結構相關代碼,形成一個實時硬件抽象層(RTHAL),使其實時任務能在任何時刻中斷普通Linux任務,兩者之間通過非阻塞隊列進行通訊。RTAI將直接修改Linux內核的代碼減至最少,具有更好的可移植性。Xenomai以RTAI為基礎,也稱RTAI /Fusion。采用了Adeos微內核替代RTAI的硬件抽象層。其特色還在于模仿了傳統RTOS的API接口,推動傳統RTOS應用在GNU/Linux下的移植。類似還有基于Fiasco微內核的L4Linux等開源項目。

  ● 內核補丁方式

  雙內核實時方案下,實時任務需要按照微內核實時操作系統提供的另外一套API進行設計。而內核補丁方式則不改變Linux的API,原有應用程序可在實時化后的操作系統上運行,典型的有早期研究性的Kurt-Linux和Red-Linux,商業版本的MontaVista、TimeSys 和Wind River Linux,以及現階段Ingo Monlnar等人開發的實時搶占補丁內核等[3]。

  Kurt-Linux是第一個基于普通Linux的實時操作系統。通過正常態、實時態和混合態進行實時和非實時任務的劃分。RED-Linux通過任務多種屬性和調度程序,可以實現多種調度算法。采用軟件模擬中斷管理,并在內核插入了許多搶占點,提高了系統調度精度。

  MontaVista Linux在低延遲補丁以及可搶占內核補丁基礎上[4],通過開發內核O(1)實時調度程序并對可搶占內核進行了改進和測試,Linux 2.4內核時代,MontaVista Linux 作為商業成熟產品在實時性上有較強的優勢。TimeSys Linux通過內核模塊的方式也提供了高精度時鐘、優先級繼承mutex等支持。

  2.6版本的主流內核吸收了以上技術,支持CONFIG_PREEMPT_NONE,CONFIG_PREEMPT_VOLUNTARY和CONFIG_PREEMPT等多種配置選項。分別適合于計算型任務系統,桌面用戶系統和毫秒級延遲系統。2005年,2.6內核MontaVista推出了實時Linux計劃,推進了Linux內核實時化進程。隨后Ingo Molnar發布了新的實時搶占補丁,并逐漸成為Linux內核實時主流技術,也為包括MontaVista Linux,Wind River Linux采用和補充,本文后續內容要涉及實時搶占補丁。

linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

上一頁 1 2 3 下一頁

評論


相關推薦

技術專區

關閉