999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

嵌入式Linux實時化關鍵技術

2011-01-01 00:00:00薛二偉
計算機時代 2011年6期

摘要:介紹了Linux在實時方面存在的三個主要問題:內核搶占、實時調度算法和時鐘細粒度定時器。針對這三個問題提出了解決的措施,并對Linux嵌入式實時化技術進行了探討。

關鍵詞:Linux;內核搶占;硐度策略;優先級反轉

O 引言

從Linux系統的發展來看,Linux向著嵌入式系統和高端計算領域兩個方向發展。它的O(1)調度算法的實現以及可搶占內核的調度方式,給嵌入式系統帶來無限生機。但嚴格地說,Linux屬于通用的分時系統,在嵌入式和實時性方面還存在著一些問題,為此,本文對嵌入式Linux的實時化進行了分析和探討。

1 Linux在實時方面的缺陷

1.1 內核可搶占

內核可搶占是指進程運行在核心態時,當有更高優先級的進程或更緊急的進程到來時,總會立即獲得處理機的控制權,即當前運行的進程的控制權被搶占了。Linux 2.6采用了內核可搶占式調度方式,但它的實現僅僅是在內核中增加了搶占點,并沒有實現真正的內核可搶占式調度方式。在Linux 2.6中,搶占點沒在中斷處理程序即將結束時或系統調用即將結束時。對于強實時系統來說,一旦高優先級的任務進入就緒隊列,應立即獲得處理機來運行,而調度程序schedule()通常是在中斷處理程序結束或系統調用結束時,才有機會運行,這時候如果中斷處理時問過長或系統調用占用時間過長,都會延誤實時任務的執行。所以,只有保證中斷處理程序和系統調用執行時間在一個可控的范圍內,才能保證實時任務的正確執行。

另外,Linux對中斷的處理,也抑制內核可搶占調度。Linux將整個中斷處理流程分為上半部(Top half)和下半部(Bottom half)。上半部處理的是一些重要的數據結構、以及與硬件密切相關的操作,它在執行期間一定要關閉中斷;下半部的執行允許中斷,它是設備中斷處理的延伸,它對設備的中斷做進一步的處理。顯然,中斷處理程序的上半部占用時間過長,同樣會影響內核搶占。

1.2 調度策略

在Linux 2.6中仍然保留著Linux 2.4中對實時任務的調度策略。Linux進程的調度策略有三種:SCHED_FIFO、SCHED_RR和SCHED NORMAL,前兩種用于實時進程的調度。其中SCHED_FIFO指先進先出調度算法,適合于時間性要求比較強,但每次運行所需時間比較短的進程,采用該策略的進程獲得CPU后,除非有更高優先級進程申請運行外,否則該進程將保持運行至退出或自愿放棄CPU;SCHED RR指優先級輪轉調度算法,按實時進程的優先級大小進行調度;SCHED_NORMAL適合于普通分時進程的凋度,調度原則山優先級的大小決定。實時進程的優先級范圍是0至99,普通進程的優先級范圍是100至139,優先級數值越大其優先級越低。

Linux 2.6根據優先級大小進行調度。普通進程的優先級隨進程的運行時間、等待時間、是否為交互式進程而動態地改變;而實時進程的優先級在運行過程中不會動態地改變,即Linux采用靜態優先級對實時進程進行調度。以靜態優先級來衡量任務的緊迫性和重要性,存在著偏差,因為任務的緊迫性和重要性會隨著時間的變化而動態地改變,要正確地反映實時任務的緊迫性和重要性最好采用動態優先級。

1.3 時鐘定時器

精確的計時是實時調度器正確操作所必須的。在標準Linux中定時粒度太粗,很難滿足特定嵌入式應用對于響應時間精度的要求。造成時間精度低的一個原因是操作系統使用周期性的時鐘中斷。為了達到微秒級的粒度,如果簡單地對時鐘芯片編程,使之運行在較高頻率下,則系統開銷太高。比如,每秒時鐘中斷次數增加到10萬次,雖然得到10微秒的粒度,但系統在1秒的時間內執行了10萬次時鐘中斷處理程序,造成較高的系統開銷。當然,這種開銷會隨著硬件速度的提高逐步降低。這種周期模式的定時器適用于某些周期性強的場合,而且,對定時器的設置僅需要在初始化時進行一次,不需要在下一個實時任務到來之前重新設置,這也保證了處理效率。但如何確定時鐘中斷頻率是系統設計者要考慮的主要問題,要考慮既不能使系統開銷過高,又不能使計時精度太低。

2 Ljnux實時性改造

2.1 可搶占式內核的設計

在硬實時應用領域,操作系統必須保證特定的任務在指定的時間內完成,計算結果輸出的時間絕對不能超過所要求的截止期(Deadline)。但Linux 2.6的弱搶占內核的調度方式,在某些關鍵的地方,并不適合硬實時的要求,所以必須對內核進行改造。

目前,一般采用雙內核支持Linux的硬實時性,比如,美國新墨西哥州大學計算機系研制開發的RT-Linux,就是基于這種策略而開發的。RT-Linux主要應用于儀器設備和嵌入式系統。它的目標是將Linux提供的標準POSIX服務與硬實時服務有機地結合起來,提供透明的、模塊化的、可擴展的實時操作系統。RT-Linux通過修改Linux/arch/i386/下與體系結構有關的部分,在Linux與硬件之間創建一個硬實時內核,Linux作為此內核的一個優先級最低的任務運行,硬實時任務都在硬實時內核上運行,而所有非實時任務都在Linux上運行。RT-Linux接管了全部硬件中斷,并將Linux系統調用及驅動程序的開、關中斷都用RT-Linux的軟中斷代替。當發生中斷時,實時內核首先檢查是否有實時處理程序要處理這個中斷,如果有則調用此實時處理程序,沒有則設置相應的中斷標志位,交給Linux處理。

另一種是對內核進行實時化改造,但將內核改造成硬實時,需要大量的工作。目前,常采用的方法是在內核代碼中增加搶占點,從而減少內核搶占延遲。這一點在Linux 2.6中已經做到。然而,這些局部修改屬于軟實時范疇,在控制領域中,只有硬實時才符合RTOS(Real Time Operating System)的發展方向。

2.2 實時調度算法的設計

在實時系統中,往往要求系統對外部事件的響應和處理要在一個給定的時間內完成,系統輸出的正確性不僅依賴于計算的邏輯結果,而且依賴于結果產生的時間。隨著時間的變化,實時任務的緊急程度也在變化,這就要求在基于優先級的調度算法中,實時進程的優先級要隨著時問的變化而動態地改變,從優先級的大小就能判斷出任務的緊急程度,這樣調度才能正確地反映出真實的世界。Linux對實時進程的調度是基于靜態優先級的策略,沒有反映出實時進程的緊迫性隨時間的變化。

實時調度算法大致可分為三種:優先級驅動、時間驅動和共享驅動調度算法。其中以優先級驅動的調度算法應用最廣,文獻[2,4]都是基于優先級驅動對調度算法進行討論的。在以優先級驅動的調度算法中,動態優先級大小通常用進程的截止期(deadline)和價值(value)來決定。

可搶占內核調度程序的設計雖然可以加快任務的響應時間,但同時也有副作用,那就是優先級反轉問題:低優先級任務L獲得臨界資源R,在執行中來了一個高優先級任務H,這時H搶占處理機,任務L被迫停止運行,而任務H運行時想獲得I臨界資源R而又無法得到,只好等待,而此刻又來了若干中等優先級的任務,致使任務L無法獲得處理機運行,這樣高優先級任務H就得延遲執行,且無法預測何時才能運行,使系統處于不穩定狀態。

文獻[2]對解決優先級反轉問題的兩種方法在中進行了詳細討論,一種方法采用優先級繼承協議(Priority InheritanceProtoc01),另一種方法采用優先級封頂協議(Priority CeilingProtoc01)。優先級繼承協議是指當低優先級進程占用高優先級進程的資源而制約高優先級進程時,將占用資源的低優先級的進程的優先級提升,讓其運行,盡決釋放高優先級所需資源;當其釋放資源后,其優先級恢復到原來的級別。優先級封頂協議是指當進程申請某資源并獲得該資源時,把該進程的優先級提升到可訪問這個資源的所有進程中的最高優先級,這個優先級稱為該資源的優先級封頂。資源的優先級封頂在資源被創建時就確定了。采用這兩種調度協議可解決優先級反轉問題。

總之,實時調度程序的算法在設計實時操作系統時至關重要,算法的優劣直接影響調度的性能以及系統對外部事件的響應時間。

2.3 時鐘細粒度定時器

許多實時應用真正需要的不是在每一個微秒都發生時鐘中斷,而是在任何一個微秒都允許發生時鐘中斷,這樣不再將時鐘芯片設置為固定的頻率,而是設置為下一個事件要發生的時間。這種設置時鐘芯片的方式稱之為一次性模式。但是,這樣做的代價是在每個中斷后重設時鐘。RTLinux既提供了周期性模式,也提供了一次性模式。Kansas大學開發的Kurt-Linux采用了一次性模式。

對于周期性時鐘中斷方式,時鐘中斷頻率越高,系統的開銷就越大;一次性模式可有效地支持硬實時系統,減少時鐘中斷的次數,但對時鐘定時器的編程將變得復雜。在細粒度定時器的實現中,要多方位思考,采取適合實際應用環境的解決方案。

3 結束語

本文從內核搶占機制、實時調度策略、時鐘細粒度定時器三方面,對嵌入式Linux實時化技術進行了探討。Linux在實時性支持方面存在著不足,在開發基于Linux嵌入式實時操作系統中,有許多關鍵技術需要解決。隨著Linux實時性能的逐步完善,以及嵌入式Linux實時系統在控制領域中的深入應用,必然進一步促進其發展,相信Linux將在嵌入式實時應用場合中發揮巨大的作用。

主站蜘蛛池模板: 国产日本欧美亚洲精品视| 亚洲精品制服丝袜二区| 国产一二三区在线| 久久综合丝袜日本网| 国产日韩精品一区在线不卡| 91福利片| 精品成人一区二区三区电影| 国产一区二区丝袜高跟鞋| 亚洲视频免| 日韩大片免费观看视频播放| 一边摸一边做爽的视频17国产 | 欧美A级V片在线观看| 欧美www在线观看| 欧美成a人片在线观看| 91在线免费公开视频| 狠狠亚洲五月天| 波多野结衣一区二区三区四区视频 | 欧美中文字幕一区| 手机在线国产精品| 日韩精品一区二区深田咏美| 国产精品国产三级国产专业不| 久久久精品国产亚洲AV日韩| 2020亚洲精品无码| 欧美日韩va| 美女一区二区在线观看| a级毛片一区二区免费视频| 久久久久久国产精品mv| 精品国产电影久久九九| 91精选国产大片| 91麻豆精品视频| 国产在线拍偷自揄拍精品| 亚洲嫩模喷白浆| 欧美亚洲一二三区| 国产精品自在自线免费观看| 国产女人18水真多毛片18精品 | 99热这里只有成人精品国产| 精品国产99久久| 波多野结衣第一页| 国产丰满成熟女性性满足视频| 青青草欧美| 欧美国产日韩在线观看| 亚洲无码电影| 国产精品永久在线| 欧美亚洲日韩中文| 久草青青在线视频| 国产人成乱码视频免费观看| 国产黄在线免费观看| 中文字幕永久在线看| 美女毛片在线| 色欲色欲久久综合网| 91亚洲精选| 国产视频大全| 精品欧美视频| 97亚洲色综久久精品| 狠狠色综合久久狠狠色综合| 国产9191精品免费观看| 99久久国产综合精品2023| 亚洲人成人伊人成综合网无码| 91青青草视频在线观看的| 国产亚洲精品自在线| 91久草视频| 国产福利拍拍拍| 亚洲日韩AV无码精品| 亚洲欧美日韩另类| 国产欧美日韩免费| 超碰aⅴ人人做人人爽欧美 | 国产亚洲视频免费播放| 午夜啪啪网| 午夜精品久久久久久久无码软件 | 亚洲无线国产观看| 亚洲男人天堂久久| 91成人在线观看视频| 久久国产精品娇妻素人| 国产欧美在线观看一区| 国产丝袜91| 亚洲无码熟妇人妻AV在线| 国产欧美在线观看一区| 喷潮白浆直流在线播放| 国产91视频免费| 国产第四页| 欧美日韩导航| 欧美α片免费观看|