資料介紹
Linux以其功能強大、源代碼開放、支持多種硬件平臺、模塊化設計方案以及豐富的開發工具支持等特點廣泛應用在嵌入式系統領域。作為嵌入式產品的操作系統平臺,具有較好的實時性、系統可靠性、任務處理隨機性是系統追求的目標,目前商業嵌入式操作系統實時性能可以滿足嵌入式領域的需求,但由于其價格昂貴,應用受到了限制[1]。而嵌入式Linux以其非常低廉的價格,可以大大地降低成本,逐漸成為嵌入式操作系統的首選。但由于其在實時應用領域的技術障礙,要應用在嵌入式領域,還必須對Linux內核作必要的改進。本文以S3C2410+Linux作為移動機器人操作平臺,為了提高機器人任務處理的實時性,針對影響Linux OS實時性能的若干方面進行研究,并利用相應的解決方法基于標準Linux2.6內核加以實現,最后通過測試,驗證了此改進方法的效果。
1 Linux內核實時性分析
1.1 Linux內核制約實時性的因素
衡量操作系統實時性的指標主要有中斷延遲和搶占延遲。嵌入式系統中很多實時任務是靠中斷驅動的,中斷事件必須在限定的時限內處理,否則將產生災難性的后果。大多數實時系統都是處理一些周期性的或非周期性的重復事件,事件產生的頻度就確定了任務的執行時限,因此每次事件發生時,相應的處理任務必須及時響應處理,否則將無法滿足時限[2]。搶占延遲就反映了系統的響應及時程度。針對Linux內核,中斷關閉及中斷優先級執行機制、內核不可搶占性、自旋鎖(spinlock)及大內核鎖及一些O(n)的任務調度算法影響了系統的實時性能。
1.2 現存增強Linux內核實時性的技術
多年來,Linux實時性改進技術的發展主要有兩種技術方案:(1)直接修改Linux內核。針對內核數據結構、調度函數、中斷方式進行改動,重新設計一個由優先級驅動的實時調度器,替換原有Linux內核中的進程調度器sched.c。這一方案主要是針對中斷機制、任務調度算法進行改進的,較為成功的案例為Kansas大學開發的Kurt-Linux。Kurt提高了Linux系統中的實時精度,將時鐘芯片設置為單觸發狀態。對于實時任務的調度,Kurt-Linux采用基于時間的靜態實時CPU調度算法。實時任務在設計階段就需要明確地說明其實時事件要發生的時間。這種調度算法對于那些循環執行的任務能夠取得較好的調度效果;(2)在Linux內核之外進行實時性擴展,添加一個實時內核。實時內核接管硬件所有中斷,并依據是否為實時任務給予響應。Fsm Labs公司開發的RTLinux就是依據這種策略開發設計的[3]。以上論述的兩種技術方案有其可借鑒之處,但如果綜合考慮任務響應、內核可搶占性、實時調度策略等都將影響操作系統的實時性能,因此,這兩種技術還不能很好地滿足實時性要求。為了增強嵌入式Linux實時性能,下面將介紹中斷機制、內核的搶占性以及大內核鎖等相關問題。
2 Linux實時性改進方法
Linux2.4及以前版本內核是不可搶占的,在Linux2.6中,內核已經可以搶占,實時性有所增強。但是內核中仍然有不可搶占的區域,如自旋鎖spinlock保護的臨界區等。另外,影響內核實時性能的因素還有中斷運行機制、大內核鎖機制以及調度算法等。
2.1 中斷運行機制改進
在Linux標準內核中,中斷是最高優先級的執行單元,硬件架構決定了硬件中斷到來的時候在該中斷沒有被屏蔽的條件下必須處理。不管內核當時處理什么,即便是Linux中最高優先級的實時進程,只要有中斷發生,系統將立即響應該事件并執行相應的中斷處理程序,這就大大削弱了Linux的實時性能。特別是系統有嚴重的網絡或I/O負載時,中斷將非常頻繁,實時任務將很難有機會運行,這對于Linux的實時應用來說是不可接受的。Linux采用的關中斷技術在關中斷區域使相應實時任務得不到響應,增加了實時任務的中斷延遲。Linux實時化后自旋鎖變為互斥鎖的技術,但由于自旋鎖的中斷處理不能及時響應,降低了系統的實時性能。因此,借鑒Ingo Molnar實時補丁的實時化方法,采用中斷線程化技術改進中斷運行機制,中斷將作為內核線程運行而且賦予不同的實時優先級,實時任務可以有比中斷線程更高的優先級,這樣,實時任務就可以作為最高優先級的執行單元來運行了,即使在嚴重負載下仍有實時性保證。另一方面,中斷處理線程也可以因為在內核同步中得不到鎖而掛載到鎖的等待隊列中,很多關中斷就不必真正的禁止硬件中斷了,而是禁止內核進程搶占,從而減小了中斷延遲[4]。
1 Linux內核實時性分析
1.1 Linux內核制約實時性的因素
衡量操作系統實時性的指標主要有中斷延遲和搶占延遲。嵌入式系統中很多實時任務是靠中斷驅動的,中斷事件必須在限定的時限內處理,否則將產生災難性的后果。大多數實時系統都是處理一些周期性的或非周期性的重復事件,事件產生的頻度就確定了任務的執行時限,因此每次事件發生時,相應的處理任務必須及時響應處理,否則將無法滿足時限[2]。搶占延遲就反映了系統的響應及時程度。針對Linux內核,中斷關閉及中斷優先級執行機制、內核不可搶占性、自旋鎖(spinlock)及大內核鎖及一些O(n)的任務調度算法影響了系統的實時性能。
1.2 現存增強Linux內核實時性的技術
多年來,Linux實時性改進技術的發展主要有兩種技術方案:(1)直接修改Linux內核。針對內核數據結構、調度函數、中斷方式進行改動,重新設計一個由優先級驅動的實時調度器,替換原有Linux內核中的進程調度器sched.c。這一方案主要是針對中斷機制、任務調度算法進行改進的,較為成功的案例為Kansas大學開發的Kurt-Linux。Kurt提高了Linux系統中的實時精度,將時鐘芯片設置為單觸發狀態。對于實時任務的調度,Kurt-Linux采用基于時間的靜態實時CPU調度算法。實時任務在設計階段就需要明確地說明其實時事件要發生的時間。這種調度算法對于那些循環執行的任務能夠取得較好的調度效果;(2)在Linux內核之外進行實時性擴展,添加一個實時內核。實時內核接管硬件所有中斷,并依據是否為實時任務給予響應。Fsm Labs公司開發的RTLinux就是依據這種策略開發設計的[3]。以上論述的兩種技術方案有其可借鑒之處,但如果綜合考慮任務響應、內核可搶占性、實時調度策略等都將影響操作系統的實時性能,因此,這兩種技術還不能很好地滿足實時性要求。為了增強嵌入式Linux實時性能,下面將介紹中斷機制、內核的搶占性以及大內核鎖等相關問題。
2 Linux實時性改進方法
Linux2.4及以前版本內核是不可搶占的,在Linux2.6中,內核已經可以搶占,實時性有所增強。但是內核中仍然有不可搶占的區域,如自旋鎖spinlock保護的臨界區等。另外,影響內核實時性能的因素還有中斷運行機制、大內核鎖機制以及調度算法等。
2.1 中斷運行機制改進
在Linux標準內核中,中斷是最高優先級的執行單元,硬件架構決定了硬件中斷到來的時候在該中斷沒有被屏蔽的條件下必須處理。不管內核當時處理什么,即便是Linux中最高優先級的實時進程,只要有中斷發生,系統將立即響應該事件并執行相應的中斷處理程序,這就大大削弱了Linux的實時性能。特別是系統有嚴重的網絡或I/O負載時,中斷將非常頻繁,實時任務將很難有機會運行,這對于Linux的實時應用來說是不可接受的。Linux采用的關中斷技術在關中斷區域使相應實時任務得不到響應,增加了實時任務的中斷延遲。Linux實時化后自旋鎖變為互斥鎖的技術,但由于自旋鎖的中斷處理不能及時響應,降低了系統的實時性能。因此,借鑒Ingo Molnar實時補丁的實時化方法,采用中斷線程化技術改進中斷運行機制,中斷將作為內核線程運行而且賦予不同的實時優先級,實時任務可以有比中斷線程更高的優先級,這樣,實時任務就可以作為最高優先級的執行單元來運行了,即使在嚴重負載下仍有實時性保證。另一方面,中斷處理線程也可以因為在內核同步中得不到鎖而掛載到鎖的等待隊列中,很多關中斷就不必真正的禁止硬件中斷了,而是禁止內核進程搶占,從而減小了中斷延遲[4]。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 嵌入式Linux實時性能優化
- Linux最新2.6內核的Makefile體系詳細資料分析 0次下載
- linux內核入門教材之linux內核設計與實現第二版中文版免費下載 0次下載
- REDIce-Linux--靈活的實時Linux內核 12次下載
- 關于Linux 2.6內核Makefile的分析 1次下載
- 基于Linux 2.6內核Makefile分析 0次下載
- linux2.6內核設備驅動模型精華 20次下載
- 基于ARM9的嵌入式Web遠程實時溫度監控系統設計 158次下載
- 編譯Linux2.6內核并添加一個系統調用 46次下載
- Android的Linux內核與驅動程序開發教程 335次下載
- 嵌入式Linux下的實時性增強方案
- 嵌入式Linux2.6在S3C2410上的移植技術探析
- 嵌入式Linux內核實時性研究及改進
- 基于Linux的實時內核RTAI的分析與研究
- 嵌入式Linux 實時性分析與實時性改進
- 使用 PREEMPT_RT 在 Ubuntu 中構建實時 Linux 內核 2658次閱讀
- Linux內核的安全性對Android的影響 1306次閱讀
- 為什么要使用反向映射 Linux2.6中如何實現反向映射 523次閱讀
- OpenHarmony內核標準庫與Linux標準庫有何區別 3461次閱讀
- Linux:QEMU調試內核的步驟 3172次閱讀
- Linux內核與Android的關系 4606次閱讀
- 關于嵌入式系統的特點和Linux內核的實時應用分析 1141次閱讀
- 怎么才能更好的理解嵌入式操作系統Linux實時化技術? 1242次閱讀
- 以Linux 2.6為基礎的提高Linux實時性的方法探討 1594次閱讀
- 基于Linux2.6內核的實時性增強方案設計 1021次閱讀
- 為什么選擇Linux操作系統?制約標準Linux操作系統實時性的因素 5488次閱讀
- Linux內核地址映射模型與Linux內核高端內存詳解 3474次閱讀
- 基于FPGA嵌入式系統的設備驅動開發 2338次閱讀
- Linux內核開發工具介紹 4720次閱讀
- Linux2.6內核中的最新電源管理技術綜述 829次閱讀
下載排行
本周
- 1GD100PIX120C6SNA規格書
- 0.98 MB | 3次下載 | 免費
- 2一款入耳式耳機的仿真與分析
- 0.44 MB | 2次下載 | 免費
- 3Eurotherm TKS Temperature 用戶手冊
- 1.46 MB | 2次下載 | 免費
- 4人形機器人電機驅動和傳感報告
- 4.27 MB | 2次下載 | 免費
- 5無線系統中天線和RF元件電磁建模
- 7.48 MB | 1次下載 | 4 積分
- 6Multisim模擬電路仿真教程
- 1.93 MB | 1次下載 | 3 積分
- 7DMP300C1型微機變壓器保護測控裝置技術說明書
- 4.11 MB | 次下載 | 10 積分
- 8用MT3540芯片設計BOOST電路 1(可下載)
- 445.66 KB | 次下載 | 免費
本月
- 1晶體三極管的電流放大作用詳細說明
- 0.77 MB | 32次下載 | 2 積分
- 2Python從入門到精通背記手冊
- 18.77 MB | 27次下載 | 1 積分
- 3雙極型三極管放大電路的三種基本組態的學習課件免費下載
- 4.03 MB | 25次下載 | 1 積分
- 4AIWA HS-J303 MKⅡ維修手冊
- 22.47 MB | 23次下載 | 10 積分
- 5多級放大電路的學習課件免費下載
- 1.81 MB | 21次下載 | 2 積分
- 6九陽豆漿機高清原理圖
- 2.47 MB | 20次下載 | 1 積分
- 7AIWA HS-J202/HS-J202M/HS-J800維修手冊
- 13.60 MB | 15次下載 | 10 積分
- 81875功放原理圖
- 0.04 MB | 11次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420063次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191382次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183337次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81585次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73814次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評論