亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        嵌入式Linux實時性改造技術(shù)綜述

        2018-05-19 03:23:49
        航天控制 2018年2期
        關(guān)鍵詞:實時性內(nèi)核中斷

        劉 劍 仲 宇 王 琦

        北京航天自動控制研究所,北京100854

        Linux作為一個免費、源碼開放、可裁剪且可移植的操作系統(tǒng),在嵌入式領域應用廣泛。2016年,Linux操作系統(tǒng)在嵌入式市場上占到了55%的份額,遙遙領先于其它嵌入式軟件開發(fā)平臺,基于Linux開發(fā)的嵌入式應用產(chǎn)品也非常豐富。但是,嵌入式領域的很多應用程序被要求在限定時間內(nèi)能夠及時響應,而Linux和Windows一樣是一個通用的分時操作系統(tǒng),尚不能滿足高實時性任務場景的需要。目前,WindRiver公司生產(chǎn)的VxWorks、微軟公司生產(chǎn)的WindowsCE等商業(yè)實時操作系統(tǒng)在嵌入式實時領域占據(jù)了統(tǒng)治地位[1-2]。

        但是,這些商用實時操作系統(tǒng)價格昂貴、源碼不開放,無法滿足我國關(guān)鍵行業(yè)對實時操作系統(tǒng)的自主可控要求。另外,國內(nèi)自主研發(fā)的實時操作系統(tǒng)主要有中航工業(yè)計算所的天脈操作系統(tǒng)、翼輝信息的SylixOS實時操作系統(tǒng)等,這些實時操作系統(tǒng)既不基于linux也不開源。因此,將Linux操作系統(tǒng)改造成實時操作系統(tǒng)已經(jīng)成為一個重要的研究方向,國外很多科研機構(gòu)都對Linux的實時性進行了深入研究,提出了一些有效的實時性改造方法。本文對主流的Linux實時改造方案進行分類總結(jié),并比較了這些方案的優(yōu)勢和不足。

        1 Linux內(nèi)核的實時性現(xiàn)狀[3]

        Linux遵循通用操作系統(tǒng)的設計思想,追求高吞吐量和公平性,沒有進行專門的實時性設計。雖然Linux定義了實時進程,但只能達到軟實時操作系統(tǒng)的指標。因此,必須對Linux內(nèi)核的某些體制進行改造,才能將Linux改造成一個硬實時操作系統(tǒng)。

        1.1 內(nèi)核不完全可搶占

        Linux運行時分為用戶態(tài)和內(nèi)核態(tài)2種模式,進程通過系統(tǒng)調(diào)用從用戶態(tài)切換到內(nèi)核態(tài)。2.6版本之后的Linux內(nèi)核已經(jīng)支持可搶占式進程調(diào)度,Linux操作系統(tǒng)的實時性得到了加強,但是內(nèi)核中很多由自旋鎖(sPinlock)保護的臨界區(qū)仍然不能搶占。

        1.2 中斷不可搶占

        Linux操作系統(tǒng)把中斷分為top-halves和bottom-halves兩部分,當中斷級別為top-halves時,操作系統(tǒng)會禁止其它任務搶占和中斷搶占,當中斷級別處于bottom-halves時,才允許其它中斷打斷。Linux操作系統(tǒng)設計之初就是作為通用操作系統(tǒng)供用戶使用,所以在關(guān)閉中斷時,系統(tǒng)外部事件無法得到響應,造成任務響應延遲,這在實時系統(tǒng)中是無法接受的。另外,如果外部I/O中斷頻繁發(fā)生,實時任務就很難得到調(diào)度。

        1.3 時鐘粒度過粗

        Linux2.6內(nèi)核把時鐘Tick的頻率提高到了1000Hz,即Linux的最小時鐘粒度為1ms,對于任務周期小于1ms的實時任務來說,仍然無法滿足需求。在嵌入式領域,一些周期性的實時任務對實時性要求更高,可能會達到幾十μs到幾百μs。如果單純地提高時鐘頻率,比如106Hz,可以達到1μs的時鐘分辨率,但是這樣做會使得時鐘中斷過于頻繁,導致大部分時間都浪費在上下文切換,從而嚴重影響操作系統(tǒng)的性能。

        1.4 實時調(diào)度策略不足

        Linux操作系統(tǒng)將進程分為實時進程和普通進程,實時進程比普通進程優(yōu)先調(diào)度。因為Linux早期版本中的實時調(diào)度策略只有先到先服務(FIFO)和時間片輪轉(zhuǎn)(Round Robin)2種實時調(diào)度策略[4],缺少基于截止期的實時調(diào)度策略[5],所以無法處理突發(fā)型計算和完成時間高度敏感的任務。Linux中普通進程的調(diào)度策略為完全公平調(diào)度算法(Completely Fair Schedule,CFS)。雖然實時進程總是優(yōu)先于普通進程運行,但只能實現(xiàn)軟實時,還不能滿足高實時性要求的應用。

        1.5 優(yōu)先級反轉(zhuǎn)

        當一個低優(yōu)先級的進程A搶先占用了某種臨界區(qū)資源,從而導致同樣需要這個資源的高優(yōu)先級進程C被阻塞,而另一個不需要此臨界區(qū)資源的就緒進程B(B的優(yōu)先級在A與B之間)獲得了CPU的控制權(quán),于是高優(yōu)先級進程C需要等待比它低優(yōu)先級的進程B,這種現(xiàn)象被稱為優(yōu)先級反轉(zhuǎn)[6]。優(yōu)先級反轉(zhuǎn)是影響Linux實時性的重要因素,嚴重時會導致系統(tǒng)崩潰。Linux內(nèi)核尚未實現(xiàn)應對優(yōu)先級反轉(zhuǎn)的機制。

        1.6 虛擬內(nèi)存

        Linux操作系統(tǒng)使用了虛擬內(nèi)存管理方案[7-8]。由于頁面交換處于最高中斷優(yōu)先級,且與慢速硬盤進行頁面交換的耗時較長,導致輸入請求無法獲得及時響應。對于實時任務而言,這種內(nèi)存與外存之間頁面交換帶來的響應時間不確定性是不能容忍的。

        2 Linux實時性改造方法

        經(jīng)過國內(nèi)外研究人員幾十年的研究,提出了很多有效的Linux實時性改造方法,這些方法不斷改進、融合,逐漸形成了2種典型的改進技術(shù)路線:雙內(nèi)核技術(shù)路線和直接修改內(nèi)核技術(shù)路線[9]。

        2.1 雙內(nèi)核技術(shù)路線

        雙內(nèi)核的核心思想是在原Linux內(nèi)核的基礎上增加一個實時內(nèi)核,實時任務在實時內(nèi)核中運行,原來的內(nèi)核作為運行在實時內(nèi)核上的優(yōu)先級最低的一個任務。

        2.1.1 RT-Linux(Real Time Linux)[10]

        美國新墨西哥州立大學在標準Linux內(nèi)核上增加一個實時內(nèi)核,將非實時進程以及原Linux內(nèi)核作為實時內(nèi)核上的低優(yōu)先級進程,而其它實時進程作為實時內(nèi)核上的高優(yōu)先級進程,形成了RT-Linux操作系統(tǒng)。原Linux系統(tǒng)的任務可以通過FIFO或共享內(nèi)存與實時任務進行通信。為了達到Linux實時化的目的,RT-Linux主要采用如下方式[11]:

        1)將標準Linux內(nèi)核與中斷控制器隔離,禁止其任意關(guān)閉中斷,系統(tǒng)中的所有中斷均由實時內(nèi)核進行處理,然后再傳給原來的標準Linux內(nèi)核。這樣就保證了實時內(nèi)核中的實時任務有效執(zhí)行,不受標準Linux內(nèi)核的干擾。盡管對標準Linux內(nèi)核進行了這樣的改動,但是原內(nèi)核的數(shù)據(jù)結(jié)構(gòu)完整性并沒有被破壞;

        2)改變時鐘中斷機制。RT-Linux需要粒度更細的時鐘,所以它將時鐘中斷設置為單次觸發(fā)模式,根據(jù)最近需要執(zhí)行進程的時間需求,不斷調(diào)整定時器的時間間隔;

        3)提供用戶定制化實時調(diào)度程序的機制。RT-Linux用一種靈活的做法在內(nèi)部實現(xiàn)了一個通用的調(diào)度模塊。用戶可以開發(fā)符合自己具體需求的調(diào)度模塊,然后加入到RT-Linux系統(tǒng)中;

        4)RT-Linux通過共享內(nèi)存、命名管道(RTFIFO)等通信機制高效率地實現(xiàn)了實時進程與普通進程之間的通信。

        RT-Linux是一種比較有代表性的Linux實時性改造方案,但是已被WindRiver公司收購并商業(yè)化。RT-Linux系統(tǒng)結(jié)構(gòu)圖見圖1。

        圖1 RT-Linux結(jié)構(gòu)圖

        2.1.2 RTAI(Real-Time Application Interface)[12]

        意大利米蘭理工學院研制的RTAI源于RT-Linux,它在設計思想上和RT-Linux完全相同。RTAI和RT-Linux最大的不同在于它在Linux上定義了一組實時硬件抽象層RTHAL或者ADEOS,接管了Linux對硬件平臺的控制權(quán)。這種方式能夠避免大量修改Linux內(nèi)核代碼,便于RTAI移植到新版Linux內(nèi)核上。RTHAL和ADEOS這2種技術(shù)本質(zhì)上是相同的,只是因為版權(quán)問題,使得RTAI后來的實現(xiàn)轉(zhuǎn)向了ADEOS。RTAI按照模塊機制設計,它的實時內(nèi)核有3個基本組成部分:中斷分發(fā)器、實時調(diào)度器和實時通信器。如上面提到的實時調(diào)度器,也可以加載FIFO,共享內(nèi)存等實現(xiàn)實時通信器。基于模塊機制的設計使得RTAI可以根據(jù)實際要求進行擴展和裁剪。另外,RTAI雖然實時性能較好、移植難度小且開源,但是更新速度比較慢,對ARM硬件平臺支持也不夠。RTAI系統(tǒng)結(jié)構(gòu)見圖2。

        圖2 RTAI體系結(jié)構(gòu)圖

        2.1.3 Xenomai[13]

        Xenomai和RTAI的實現(xiàn)本質(zhì)上是相同的。 Xenomai不能繞過ADEOS與硬件交互,而RTAI可以,所以Xenomai的中斷延遲長于RTAI。但是Xenomai更加關(guān)注的是用戶態(tài)下的實時性、提供與VxWorks、RTAI及POSIX等多套與主流商業(yè)實時操作系統(tǒng)兼容的API接口。Xenomai的目標是將那些依賴商業(yè)實時操作系統(tǒng)的應用程序盡可能平滑地移植到GNU/Linux環(huán)境。最后,Xenomai社區(qū)活躍,緊跟Linux內(nèi)核最新官方版本,對硬件支持廣泛,支持多種架構(gòu),在Linux實時化改造方案中也是一個研究熱點。Xenomai系統(tǒng)結(jié)構(gòu)圖見圖3。

        圖3 Xenomai系統(tǒng)架構(gòu)圖

        2.2 直接修改內(nèi)核技術(shù)路線

        直接修改內(nèi)核技術(shù)路線的共同思想是針對Linux內(nèi)核制約實時性的因素,直接修改Linux內(nèi)核源代碼,使其本身具有實時能力。

        2.2.1 RED-Linux(Real-Time and Embedded Linux)[14]

        加州大學Irvine分校開發(fā)的RED-Linux是一個軟實時操作系統(tǒng)。RED-Linux從RT-Linux那里借鑒了軟件模擬中斷管理器的機制,并且提高了時鐘中斷頻率。在實現(xiàn)內(nèi)核可搶占之后,RED-Linux為Linux又添加了3個特性:1)源自于RT-Linux的高精度時鐘;2)軟件模擬中斷管理器;3)通用實時調(diào)度器框架。它同時支持3種類型的進程調(diào)度算法:基于時間驅(qū)動的進程調(diào)度算法(Time-driven Scheduling)、基于優(yōu)先級的進程調(diào)度算法(Priority-driven Scheduling)和基于CPU的進程調(diào)度算法(Share-driven Scheduling)[15-16]。RED-Linux的設計目標是提供一個可以支持各種調(diào)度算法的通用調(diào)度框架,該系統(tǒng)為每個任務增加了Priority(任務優(yōu)先級)、Start-Time(任務開始時間)、Finish-Time(任務完成時間)和Budget(任務在運行期間所要使用的資源多少)這幾項屬性,并將它們作為進程調(diào)度的依據(jù)。通過合理地調(diào)整這些屬性的取值及調(diào)度程序按照什么樣的優(yōu)先順序來使用這些屬性值,從而實現(xiàn)所有的調(diào)度算法。但是,Red-Linux是一個軟實時操作系統(tǒng),所以在硬實時指標實現(xiàn)方面還需要進一步完善。RED-Linux系統(tǒng)結(jié)構(gòu)見圖4。

        圖4 RED-Linux調(diào)度框架圖

        2.2.2 Kurt-Linux(Kansas University Real-Time Linux)[17]

        美國Kansas大學開發(fā)的Kurt-Linux是第一個支持標準Linux系統(tǒng)調(diào)用的實時系統(tǒng),它可以提供μs級的實時精度。Kurt-Linux將系統(tǒng)分為3種狀態(tài):正常態(tài)、實時態(tài)和混合態(tài)。在正常態(tài)時,它采用普通的Linux的調(diào)度策略,此時與標準Linux內(nèi)核相同,但是時鐘粒度由時鐘中斷機制UTIME決定,可以達到μs級。在混合態(tài)時,系統(tǒng)同時運行實時任務和非實時任務,但是此時內(nèi)核不能被搶占,不能完全保證實時任務的及時調(diào)度。實時態(tài)時只調(diào)度實時任務,普通任務被掛起。Kurt-Linux相對于RT-Linux的一個優(yōu)點就是支持Linux系統(tǒng)自身的系統(tǒng)調(diào)用。但是,由于它在實現(xiàn)上只是簡單地用一個簡單的時間驅(qū)動調(diào)度器替代原來的Linux調(diào)度器,造成實時進程的調(diào)度很容易受到其它非實時任務的影響。目前Kurt-Linux的應用比較廣泛,比如多媒體播放軟件、ARTS(ATM Reference Traffic System)等。

        2.2.3 RT-patch(Realtime Preemption Patch)

        實時搶占補丁(RT-patch)是由Ingo Molnar和Thomas Gleixner更新維護[18-19],由開源自動化開發(fā)實驗室(OS-ADL)對其穩(wěn)定性測試,OS-ADL于2015年10月將RT-patch控制權(quán)轉(zhuǎn)移給了Linux基金會。每隔2個Linux版本,RT-patch就會更新一次,目前,RT-patch近80%的內(nèi)容被官方Linux項目接收[20],融入到發(fā)行版的Linux內(nèi)核中。和其它在標準Linux內(nèi)核中增加實時搶占方法不同,RT-patch在原有的低延遲補丁和搶占補丁的基礎上,加入中斷線程化、高精度時鐘、優(yōu)先級繼承和互斥鎖替換自旋鎖等新的特性,將Linux內(nèi)核修改成完全可搶占式內(nèi)核,使其具有硬實時能力。RT-patch相比于雙內(nèi)核方案最大的優(yōu)勢在于它遵循POSIX標準,使用該補丁時,實時系統(tǒng)的應用程序和驅(qū)動程序與非實時系統(tǒng)的應用程序和驅(qū)動程序差異很小。因此,在使用該補丁的平臺上做相應的開發(fā)比雙內(nèi)核機制的方案更容易。另外,該補丁與硬件平臺相關(guān)性小,可移植性高,擁有龐大的社區(qū)支持,如果開發(fā)人員編寫一個實時應用程序,不需要知道太多關(guān)于RT-patch的知識,也不需要任何特殊的庫和API,只需要標準的C庫、Linux驅(qū)動程序和POSIX程序即可。

        2.3 Linux實時性改造技術(shù)比較

        除上述幾種實時性Linux產(chǎn)品技術(shù)方案外,還有德州大學和馬薩諸塞大學的Qlinux、TimeSys公司的TimeSys Linux及卡耐基梅隆大學的Linux/RK等,但是均未得到廣泛應用,受到的關(guān)注程度較小,因此本文不再贅述。

        通過對上文各種Linux實時性改造技術(shù)的研究探討,論述了各種Linux實時性改造技術(shù)的基本原理和實現(xiàn)細節(jié)。表1對各種Linux實時性改造技術(shù)的優(yōu)缺點進行了對比。

        表1 Linux實時性改造技術(shù)優(yōu)缺點比較

        3 總結(jié)與展望

        設本文在分析Linux內(nèi)核實時性不足的基礎上,論述了6種主流的Linux實時性改造技術(shù),并分別對這6種Linux實時性改造技術(shù)的適用性、優(yōu)缺點進行分析比較。從現(xiàn)階段研究成果來看,RTAI、Xenomai和RT-patch等Linux實時性改造技術(shù)的研究相對比較深入,在工程領域也得到了成熟應用。而由于RT-patch已經(jīng)得到了Linux的官方認可,其近80%的內(nèi)容已經(jīng)加入了Linux內(nèi)核主線,所以在RT-patch的助力下,未來Linux內(nèi)核本身將會向滿足硬實時要求的方向發(fā)展。向用戶提供可配置的實時性備選方案。

        參 考 文 獻

        [1] 王金剛. 基于VxWorks的嵌入式實時系統(tǒng)設計[M]. 北京:清華大學出版社, 2004:1-14.

        [2] 王學龍. 嵌入式VxWorks系統(tǒng)開發(fā)與應用[M]. 北京:人民郵電出版社, 2003:1-15.

        [3] Shui Oikawa, Rag Rajkumar. Linux/RK:A Portable Resource Kernel in Linux [J]. IEEE Real-Time Systems Symposium Work-In-Progress, 1998, 43-47.

        [4] Ankita Garg. Real-Time Linux Kernel Scheduler [J]. Linux Journal. 2009, Aug 01.

        [5] Dario Faggioli, Fabio Checconi, Michaei Trimarchi and Claudio Scordino. An EDF Scheduling Class for the Linux Kernel [C]. Proceedings of Eleventh Real-Time Linux Workshop, 2009, 197-204.

        [6] Luil Sha, Ragunathan Rajkimar, John Rlehoczky. Priority Inheritance Protocols:An Approach to Real-Time Synchronization [J]. IEEE Transactions on Computers, 1990:1175-1184.

        [7] Matt Mackall. slob: Introduce the SLOB Allocator[EB/OL]. http//lwn.net/Articles/157944/. 2005, Nov 1.

        [8] 楊峰. 基于Linux內(nèi)核的動態(tài)內(nèi)存管理機制的實現(xiàn)[J]. 計算機工程, 2010,36(9):85-88.(Yang Feng. Implementation of Dynamic Memory Management Mechanism Based on Linux Kernel[J]. Computer Engineering, 2010, 3-6(9):85-88.)

        [9] Kushal Koolwal. Myths and Realities of Real-Time Linux Software Systems[C]. Proceedings of Eleventh Real-Time Linux Workshop, 2009:13-18.

        [10] Barabanov M. A Linux-based Real-time Operating System:(master thesis) [J]. New Mexico:New Mexico Institute of Mining and Technology,1997.

        [11] 吳一民. RT-Linux的實時機制分析[J]. 計算機應用, 2002, 22(12):100-111.(Wu Yimin. Analysis of Real-time Mechanism of RT -Linux[J]. Computer Application, 2002, 22(12):100-111.)

        [12] Karim Yaghmour. The Real-Time Application Interface [C]. In Proceedings of the Linux Symposium, Boston, Massachusetts,USA, 2001, 245-260.

        [13] Intel Corportation. Hard Real Time Linux Using Xenomai on Intel Multi-Core Processors [Z]. 2009.

        [14] Lin Kwei-Jay, Wang Yuchung. The Design and Implementation of Real-Time Schedulers in RED-Linux [J]. Proceedings of the IEEE, 2003, 91(7):1114-1129.

        [15] 張煥強. 基于Linux的實時系統(tǒng)[EB/OL]. http://www.ibm.com/developerworks/-cn/linux/embed/l-realtime/index.html, 2003.

        [16] 賴娟. Linux內(nèi)核分析及實時性改造[D]. 電子科技大學, 2007.

        [17] Srinivasan B. A Firm Shelf Hard Ware and Free Real-time System Implementation Using Commercial Off-the-software:(master thesis) [J]. American:University of Kansas, 1998.

        [18] Betz W, Cereia M, Bertolotti C. Experimental Evaluation of the Linux RT Patch for Real-time Applications[C]//Proc. of IEEE Conference on Emerging Technologies & Factory Automation,2009:1-4.

        [19] William von Hagen. Real-time and Performance Improvements in the 2.6 Linux Kernel [J]. Linux Journal, 2005, (134):8-13.

        [20] 吳章金. Linux 實時搶占補丁的研究與實踐[D]. 蘭州:蘭州大學, 2010.

        猜你喜歡
        實時性內(nèi)核中斷
        萬物皆可IP的時代,我們當夯實的IP內(nèi)核是什么?
        強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
        基于規(guī)則實時性的端云動態(tài)分配方法研究
        基于嵌入式Linux內(nèi)核的自恢復設計
        Linux內(nèi)核mmap保護機制研究
        基于虛擬局域網(wǎng)的智能變電站通信網(wǎng)絡實時性仿真
        跟蹤導練(二)(5)
        千里移防,衛(wèi)勤保障不中斷
        解放軍健康(2017年5期)2017-08-01 06:27:44
        航空電子AFDX與AVB傳輸實時性抗干擾對比
        一種車載Profibus總線系統(tǒng)的實時性分析
        欧美高清视频手机在在线| 欧美在线观看www| 日本精品啪啪一区二区| 午夜一区二区三区观看| 青春草在线视频免费观看| 国产精品一区二区久久精品| 亚洲AV无码AV色| 日本老熟妇五十路一区二区三区| 国产猛男猛女超爽免费视频| 公粗挺进了我的密道在线播放贝壳| 丝袜美女污污免费观看的网站| 国产青春草在线观看视频| 日韩人妻另类中文字幕| 99久久综合精品五月天| 日本韩国一区二区三区| 亚洲国产av午夜福利精品一区| 伊人中文字幕亚洲精品乱码| 欧美aaaaaa级午夜福利视频| 连续高潮喷水无码| 亚洲av免费看一区二区三区| 人人妻人人澡人人爽人人精品av| 真人与拘做受免费视频| 久久精品国产热久久精品国产亚洲 | 又爽又黄又无遮挡网站| 狠狠人妻久久久久久综合| 日产乱码一区二区国产内射| 国产女同舌吻1区2区| 国产男女无遮挡猛进猛出| 五月中文字幕| 国产av一区二区三区狼人香蕉| 国产精品久久国产精麻豆99网站| 日本不卡在线视频二区三区| 国产精品久久这里只有精品 | 蜜桃视频在线看一区二区三区 | 亚洲一区二区三区乱码在线中国| 精品水蜜桃久久久久久久| 亚洲两性视频一三区| 国产精品亚洲一区二区三区久久| 亚洲精品中文字幕乱码三区| 一本色综合亚洲精品蜜桃冫| 日本草逼视频免费观看|