色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux內核時延、實時化主流技術和發展

電子設計 ? 來源:電子產品世界 ? 作者:黃武陵,何小慶,艾 ? 2020-09-02 17:37 ? 次閱讀

Linux支持PowerPC、MIPS、ARMDSP等多種嵌入式處理器,逐漸被用于多種關鍵性場合。其中實時多媒體處理、工業控制汽車電子等特定應用對Linux提出了強實時性需求[1]。Linux提供了一些實時擴展,但需要進行實時性改造。本文針對嵌入式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等為典型代表。其中RT-Linux實現了一個微內核實時操作系統支持底層任務管理、中斷服務例程、底層任務通信隊列等。普通Linux作為實時操作系統的最低優先級任務,Linux下的任務通過FIFO命名管道和實時任務進行通信,如圖1所示。

Linux內核時延、實時化主流技術和發展

圖1 雙內核架構的Linux實時化技術

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

* 內核補丁方式

雙內核實時方案下,實時任務需要按照微內核實時操作系統提供的另外一套API進行設計。而內核補丁方式則不改變Linux的API,原有應用程序可在實時化后的操作系統上運行,典型的有早期研究性的Kurt-Linux和Red-Linux,商業版本的MontaVista [2]、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實時化技術及評價

2.6版本Linux內核實時性能有一定增強,雙內核方式的Linux實時化技術也在不斷發展中。原來由FSMLab維護的RTLinux,其版權在2007年2月被Wind River購買,先對在開源社區就不很活躍,RTAI支持x386等體系結構,但由于其代碼較難維護、bug較難調試等原因,許多開發者加入了Xenomai項目。Xenomai支持最新2.6版 Linux,相比之下代碼相對穩定和可維護,開發模式較活躍。

內核補丁方式的Linux實時化技術在2.6版內核基礎上做了大量改進,使得內核中除了中斷關閉和IRQ線程分派、調度和上下文切換之外的絕大部分代碼都可以被搶占,不可搶占的自旋鎖保護臨界區從一千多個減少到幾十個,使得內核實時性得到極大的提高,獲得社區廣泛支持并逐漸成為Linux實時化主流技術。

Linux內核實時化改進

實時搶占內核補丁針對Linux各種延遲進行了實時化改進,主要包括了幾個方面的技術。

* 實時搶占內核

為了實現內核完全可搶占,實時內核臨界區用高性能優先級繼承mutex替換原來自旋鎖(spin-lock)來進行保護,使得在臨界區內的執行也可被搶占。只有當線程想訪問一個其他線程正在訪問的臨界區時,才被調度至睡眠,直到所保護的臨界區被釋放時被喚醒。

在實時搶占內核中通過優先級繼承機制(PI)在線程被一個低優先級線程所持有的資源阻塞時,低優先級線程通過繼承被阻塞線程優先級,盡快執行并釋放所持資源而不被其他線程所搶占。

* 新型鎖機制帶來內核性能提升

實時搶占補丁替換了大內核鎖(BKL),將BKL從spinlock改成是mutex,持有BKL的線程也可以被搶占,減少了內核調度延遲。此外,實時搶占補丁通過mutex替代semaphore,避免了不必要的時間負載。實時搶占補丁實現了可搶占的RCU(Read Copy Update)鎖和串行化讀寫鎖,保證了執行可預測性,提高了性能。

* 中斷線程化

實時搶占補丁通過內核線程來實現一些硬件中斷和軟件中斷的服務程序。體系結構相關處理代碼設置IRQ狀態、檢查線程化的中斷是否使能,并喚醒相關線程。在中斷線程被調度執行后,進行中斷服務處理。在實時搶占內核中,用戶線程優先級可以高于設備中斷服務線程。實時任務無需等待設備驅動處理程序執行,減小了實時搶占延遲。

* 時鐘系統改進

實時搶占內核的時鐘系統重新進行了設計,實現了高精度定時器[6]。時鐘精度不再依賴jiffies,使POSIX定時器和nanosleep精度由具體硬件所能提供的精度決定,使得gettimeofday能夠提供實時系統所需的精確時間值。

* 其他改進

Linux在用戶層支持性能良好的futex,實現原理類似于內核優先級繼承mutex,僅在產生競態時進入內核,提高了應用程序性能。此外,實時搶占補丁內核還提供mutex死鎖檢測、延遲跟蹤與測量、中斷關閉跟蹤與延遲測量、搶占延遲測量等內核調試與診斷、內核性能測量與調優等工具、實時Trace支持(Ftrace)等支持。

現階段實時化技術在各體系結構上逐漸得到了支持,如表1所示。

表1 Linux實時搶占補丁技術支持情況

實時搶占內核延遲

現階段,實時搶占補丁技術仍處于完善過程中,其表現在以下幾點不足。

* 中斷延遲

即使不發生中斷線程搶占,實時搶占內核相對原來中斷服務機制額外增加一對上下文切換時間,用于喚醒中斷服務線程執行和進入睡眠狀態。此外,內核中還存在少量用raw_spinlock鎖禁用中斷來保護的臨界區,需要計算這些鎖造成的中斷延遲。

* 任務搶占延遲

內核搶占延遲主要是由于在內核中使用各種鎖機制用于控制任務和中斷對臨界區的訪問所造成的,特別是實時搶占內核中為了避免優先級逆轉增加的鎖機制帶來了額外時間負載。

* 內核模塊其他延遲

在實時搶占補丁中,內存管理模塊還需減少頁表錯誤引起的延遲,降低mlockall內存鎖存造成的性能降級影響。實時搶占內核中高精度定時器的使用導致了額外定時器管理時間負載。此外,內核中一些驅動程序需要針對實時應用進行優化來提高實時響應。軟浮點處理和軟浮點內核仿真需要和實時搶占補丁兼容,能耗管理子系統還需要具備實時系統感知能力。

實時搶占內核性能測試

本文在Intel Pentium M 1.7 GHz處理器上進行了測試。測試環境包括:Linux內核2.6.25.8最小配置;patch-2.6.25.8-rt7實時補丁;libc 2.5+和busybox-1.10.0構建initrdfs方式的根文件系統。

* 中斷延遲

采用實時搶占補丁支持的內核中斷延遲測量工具測量中斷關閉(IRQ OFF)時間。在100%負載情況下,十萬采樣點中,最大值在31 us左右,絕大多數在1 us左右,如圖2所示。

圖2 實時搶占內核中斷關閉延遲分布

* 任務搶占延遲

內核搶占關閉時間采用實時搶占補丁所支持的內核搶占關閉測量工具測量。實時搶占內核和普通Linux內核情況比較如表2所示。

表2 內核任務搶占關閉時間分布

實時應用中周期性任務需要能在確定的時間內得到執行。實時搶占內核和普通內核下的周期性任務延遲對比中可以看出實時搶占內核提供了實時任務的精確執行,如圖3所示。

圖3 實時搶占內核和普通內核下周期性任務調度延遲對比

結語

嵌入式應用對Linux實時性要求越來越多,主流內核逐漸加入實時化技術,最終將為實時應用提供完美解決方案。本文綜述了Linux內核時延,介紹了Linux內核實時化發展,分析了內核實時化主流技術,并分析了實時化技術不足之處,為更好地理解Linux實時化技術提供了參考。

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19259

    瀏覽量

    229653
  • 嵌入式
    +關注

    關注

    5082

    文章

    19104

    瀏覽量

    304823
  • Linux
    +關注

    關注

    87

    文章

    11292

    瀏覽量

    209333
收藏 人收藏

    評論

    相關推薦

    Linux 實時技術與典型實現分析(一)

    Ingo's RT patch是又一個Linux實時實現,它采用了與TimeSys完全相同的技術路線,而且有一些實現是基于TimeSys的源代碼的,如IRQ和 softirq線程
    發表于 10-06 13:42

    Linux 2.6 內核中的最新電源管理技術綜述

    發展方向。  作為本系列文章的開篇之作,首先要向大家介紹的是 cpufreq,它是 Linux 2.6內核為了更好的支持近年來在各款主流 CPU 處理器中出現的變頻
    發表于 09-28 14:15

    如何進行嵌入式Linux內核實時研究?

    的設計原理和RTLinux類似,也是一個實時性應用接口。那我們究竟該如何進行嵌入式Linux內核實時研究?修改APIC中斷函數,將APIC中斷和8254中斷排序,使得硬
    發表于 08-06 07:15

    嵌入式Linux實時技術是什么?

    一些實時擴展,但需要進行實時性改造。本文針對嵌入式Linux實時技術中的一些關鍵問題進行了討論
    發表于 10-08 14:19

    詳細解析,嵌入式Linux實現實時技術過程

    一些實時擴展,但需要進行實時性改造。本文針對嵌入式Linux實時技術中的一些關鍵問題進行了討論
    發表于 04-30 09:00

    嵌入式Linux實時技術詳談

    一些實時擴展,但需要進行實時性改造。本文針對嵌入式Linux實時技術中的一些關鍵問題進行了討論
    發表于 08-03 07:00

    嵌入式Linux實時技術

    嵌入式Linux實時技術  引言   Linux支持PowerPC、MIPS、ARM、DSP等多種嵌入式處理器,逐漸被用于多種關鍵性
    發表于 03-03 16:40 ?1477次閱讀
    嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>實時</b><b class='flag-5'>化</b><b class='flag-5'>技術</b>

    嵌入式Linux實時性能提高方案

    本文在分析Linux實時性的同時,探討了其本身提供的一些支持實時性的機制以及在實時應用中的技術障礙。而后,基于增強
    發表于 05-06 10:32 ?1272次閱讀
    嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>實時</b>性能提高方案

    基于APIC時鐘的嵌入式Linux內核實時研究

    本文采用APIC時鐘修改的方法對Linux內核進行實時改造,修改APIC中斷函數,將APIC中斷和8254中斷排序,使得硬實時中斷的優先級
    發表于 04-25 09:43 ?926次閱讀
    基于APIC時鐘的嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>內核實時</b><b class='flag-5'>化</b>研究

    REDIce-Linux--靈活的實時Linux內核

    REDSonic, Inc. REDSonic的RedIce-Linux是一個實時Linux內核,設計來支持以任務和時間為臨界的應用,為你的系統提供質量服務。RedIce-
    發表于 11-08 10:24 ?12次下載

    嵌入式Linux實時技術

    ]。Linux提供了一些實時擴展,但需要進行實時性改造。本文針對嵌入式Linux實時
    發表于 12-01 12:23 ?508次閱讀
     嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>實時</b><b class='flag-5'>化</b><b class='flag-5'>技術</b>

    怎么才能更好的理解嵌入式操作系統Linux實時技術

    一些實時擴展,但需要進行實時性改造。本文針對嵌入式Linux實時技術中的一些關鍵問題進行了討論
    發表于 09-03 17:44 ?1228次閱讀

    如何使用BPF對Linux內核進行實時跟蹤

    我們可以使用BPF對Linux內核進行跟蹤,收集我們想要的內核數據,從而對Linux中的程序進行分析和調試。與其它的跟蹤技術相比,使用BPF
    的頭像 發表于 06-30 17:28 ?2292次閱讀
    如何使用BPF對<b class='flag-5'>Linux</b><b class='flag-5'>內核</b>進行<b class='flag-5'>實時</b>跟蹤

    使用 PREEMPT_RT 在 Ubuntu 中構建實時 Linux 內核

    盟通技術干貨構建實時Linux內核簡介盟通技術干貨Motrotech如果需要在Linux中實現
    的頭像 發表于 04-12 08:36 ?2421次閱讀
    使用 PREEMPT_RT 在 Ubuntu 中構建<b class='flag-5'>實時</b> <b class='flag-5'>Linux</b> <b class='flag-5'>內核</b>

    Linux內核測試技術

    Linux 內核Linux操作系統的核心部分,負責管理硬件資源和提供系統調用接口。隨著 Linux 內核的不斷
    的頭像 發表于 08-13 13:42 ?484次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內核</b>測試<b class='flag-5'>技術</b>
    主站蜘蛛池模板: 亚洲精品久久久久无码AV片软件| 囯产免费精品一品二区三区视频 | 国产亚洲欧美高清在线| 胖老太与人牲交BBWBBW高潮| 约艺术院校96年清纯白嫩| 激情办公室| 亚洲国产在线精品国自产拍五月| 国产精品99久久久久久人韩国| 日韩亚洲人成在线| yellow在线中文| 欧美性色xo影院69| a视频免费在线观看| 免费看黄色一级| 97人人看碰人免费公开视频 | 国产 高清 无码 在线播放| 亲胸摸下面激烈免费网站| 99riav9 精品香蕉免费大视频| 麻豆最新免费版| 69国产精品成人无码视频| 老太婆性BBWBBW| 67194con免费福和视频| 麻豆产精品一二三产区区| 1V1各种PLAY女主被肉| 麻豆精品传媒2021网站入口| 伊人久久精品AV无码一区| 久久久久999| 最新亚洲人成网站在线影院| 妹妹我要色| yellow免费观看完整版直播| 欧美人与善交大片| 成 人 色综合| 神马影院午夜伦理限级| 国产精品久久久久久日本| 亚洲AV无码一区二区色情蜜芽 | 亚洲国产精品无码中文字幕| 果冻传媒在线看免费高清| 亚洲欧洲自拍偷拍| 久久精品成人免费看| 中文字幕精品无码一区二区| 免费又黄又硬又爽大片| RUNAWAY韩国动漫免费网|