資料介紹
Linux以其功能強大、源代碼開放、支持多種硬件平臺、模塊化設(shè)計方案以及豐富的開發(fā)工具支持等特點廣泛應(yīng)用在嵌入式系統(tǒng)領(lǐng)域。作為嵌入式產(chǎn)品的操作系統(tǒng)平臺,具有較好的實時性、系統(tǒng)可靠性、任務(wù)處理隨機性是系統(tǒng)追求的目標(biāo),目前商業(yè)嵌入式操作系統(tǒng)實時性能可以滿足嵌入式領(lǐng)域的需求,但由于其價格昂貴,應(yīng)用受到了限制[1]。而嵌入式Linux以其非常低廉的價格,可以大大地降低成本,逐漸成為嵌入式操作系統(tǒng)的首選。但由于其在實時應(yīng)用領(lǐng)域的技術(shù)障礙,要應(yīng)用在嵌入式領(lǐng)域,還必須對Linux內(nèi)核作必要的改進。本文以S3C2410+Linux作為移動機器人操作平臺,為了提高機器人任務(wù)處理的實時性,針對影響Linux OS實時性能的若干方面進行研究,并利用相應(yīng)的解決方法基于標(biāo)準Linux2.6內(nèi)核加以實現(xiàn),最后通過測試,驗證了此改進方法的效果。
1 Linux內(nèi)核實時性分析
1.1 Linux內(nèi)核制約實時性的因素
衡量操作系統(tǒng)實時性的指標(biāo)主要有中斷延遲和搶占延遲。嵌入式系統(tǒng)中很多實時任務(wù)是靠中斷驅(qū)動的,中斷事件必須在限定的時限內(nèi)處理,否則將產(chǎn)生災(zāi)難性的后果。大多數(shù)實時系統(tǒng)都是處理一些周期性的或非周期性的重復(fù)事件,事件產(chǎn)生的頻度就確定了任務(wù)的執(zhí)行時限,因此每次事件發(fā)生時,相應(yīng)的處理任務(wù)必須及時響應(yīng)處理,否則將無法滿足時限[2]。搶占延遲就反映了系統(tǒng)的響應(yīng)及時程度。針對Linux內(nèi)核,中斷關(guān)閉及中斷優(yōu)先級執(zhí)行機制、內(nèi)核不可搶占性、自旋鎖(spinlock)及大內(nèi)核鎖及一些O(n)的任務(wù)調(diào)度算法影響了系統(tǒng)的實時性能。
1.2 現(xiàn)存增強Linux內(nèi)核實時性的技術(shù)
多年來,Linux實時性改進技術(shù)的發(fā)展主要有兩種技術(shù)方案:(1)直接修改Linux內(nèi)核。針對內(nèi)核數(shù)據(jù)結(jié)構(gòu)、調(diào)度函數(shù)、中斷方式進行改動,重新設(shè)計一個由優(yōu)先級驅(qū)動的實時調(diào)度器,替換原有Linux內(nèi)核中的進程調(diào)度器sched.c。這一方案主要是針對中斷機制、任務(wù)調(diào)度算法進行改進的,較為成功的案例為Kansas大學(xué)開發(fā)的Kurt-Linux。Kurt提高了Linux系統(tǒng)中的實時精度,將時鐘芯片設(shè)置為單觸發(fā)狀態(tài)。對于實時任務(wù)的調(diào)度,Kurt-Linux采用基于時間的靜態(tài)實時CPU調(diào)度算法。實時任務(wù)在設(shè)計階段就需要明確地說明其實時事件要發(fā)生的時間。這種調(diào)度算法對于那些循環(huán)執(zhí)行的任務(wù)能夠取得較好的調(diào)度效果;(2)在Linux內(nèi)核之外進行實時性擴展,添加一個實時內(nèi)核。實時內(nèi)核接管硬件所有中斷,并依據(jù)是否為實時任務(wù)給予響應(yīng)。Fsm Labs公司開發(fā)的RTLinux就是依據(jù)這種策略開發(fā)設(shè)計的[3]。以上論述的兩種技術(shù)方案有其可借鑒之處,但如果綜合考慮任務(wù)響應(yīng)、內(nèi)核可搶占性、實時調(diào)度策略等都將影響操作系統(tǒng)的實時性能,因此,這兩種技術(shù)還不能很好地滿足實時性要求。為了增強嵌入式Linux實時性能,下面將介紹中斷機制、內(nèi)核的搶占性以及大內(nèi)核鎖等相關(guān)問題。
2 Linux實時性改進方法
Linux2.4及以前版本內(nèi)核是不可搶占的,在Linux2.6中,內(nèi)核已經(jīng)可以搶占,實時性有所增強。但是內(nèi)核中仍然有不可搶占的區(qū)域,如自旋鎖spinlock保護的臨界區(qū)等。另外,影響內(nèi)核實時性能的因素還有中斷運行機制、大內(nèi)核鎖機制以及調(diào)度算法等。
2.1 中斷運行機制改進
在Linux標(biāo)準內(nèi)核中,中斷是最高優(yōu)先級的執(zhí)行單元,硬件架構(gòu)決定了硬件中斷到來的時候在該中斷沒有被屏蔽的條件下必須處理。不管內(nèi)核當(dāng)時處理什么,即便是Linux中最高優(yōu)先級的實時進程,只要有中斷發(fā)生,系統(tǒng)將立即響應(yīng)該事件并執(zhí)行相應(yīng)的中斷處理程序,這就大大削弱了Linux的實時性能。特別是系統(tǒng)有嚴重的網(wǎng)絡(luò)或I/O負載時,中斷將非常頻繁,實時任務(wù)將很難有機會運行,這對于Linux的實時應(yīng)用來說是不可接受的。Linux采用的關(guān)中斷技術(shù)在關(guān)中斷區(qū)域使相應(yīng)實時任務(wù)得不到響應(yīng),增加了實時任務(wù)的中斷延遲。Linux實時化后自旋鎖變?yōu)榛コ怄i的技術(shù),但由于自旋鎖的中斷處理不能及時響應(yīng),降低了系統(tǒng)的實時性能。因此,借鑒Ingo Molnar實時補丁的實時化方法,采用中斷線程化技術(shù)改進中斷運行機制,中斷將作為內(nèi)核線程運行而且賦予不同的實時優(yōu)先級,實時任務(wù)可以有比中斷線程更高的優(yōu)先級,這樣,實時任務(wù)就可以作為最高優(yōu)先級的執(zhí)行單元來運行了,即使在嚴重負載下仍有實時性保證。另一方面,中斷處理線程也可以因為在內(nèi)核同步中得不到鎖而掛載到鎖的等待隊列中,很多關(guān)中斷就不必真正的禁止硬件中斷了,而是禁止內(nèi)核進程搶占,從而減小了中斷延遲[4]。
1 Linux內(nèi)核實時性分析
1.1 Linux內(nèi)核制約實時性的因素
衡量操作系統(tǒng)實時性的指標(biāo)主要有中斷延遲和搶占延遲。嵌入式系統(tǒng)中很多實時任務(wù)是靠中斷驅(qū)動的,中斷事件必須在限定的時限內(nèi)處理,否則將產(chǎn)生災(zāi)難性的后果。大多數(shù)實時系統(tǒng)都是處理一些周期性的或非周期性的重復(fù)事件,事件產(chǎn)生的頻度就確定了任務(wù)的執(zhí)行時限,因此每次事件發(fā)生時,相應(yīng)的處理任務(wù)必須及時響應(yīng)處理,否則將無法滿足時限[2]。搶占延遲就反映了系統(tǒng)的響應(yīng)及時程度。針對Linux內(nèi)核,中斷關(guān)閉及中斷優(yōu)先級執(zhí)行機制、內(nèi)核不可搶占性、自旋鎖(spinlock)及大內(nèi)核鎖及一些O(n)的任務(wù)調(diào)度算法影響了系統(tǒng)的實時性能。
1.2 現(xiàn)存增強Linux內(nèi)核實時性的技術(shù)
多年來,Linux實時性改進技術(shù)的發(fā)展主要有兩種技術(shù)方案:(1)直接修改Linux內(nèi)核。針對內(nèi)核數(shù)據(jù)結(jié)構(gòu)、調(diào)度函數(shù)、中斷方式進行改動,重新設(shè)計一個由優(yōu)先級驅(qū)動的實時調(diào)度器,替換原有Linux內(nèi)核中的進程調(diào)度器sched.c。這一方案主要是針對中斷機制、任務(wù)調(diào)度算法進行改進的,較為成功的案例為Kansas大學(xué)開發(fā)的Kurt-Linux。Kurt提高了Linux系統(tǒng)中的實時精度,將時鐘芯片設(shè)置為單觸發(fā)狀態(tài)。對于實時任務(wù)的調(diào)度,Kurt-Linux采用基于時間的靜態(tài)實時CPU調(diào)度算法。實時任務(wù)在設(shè)計階段就需要明確地說明其實時事件要發(fā)生的時間。這種調(diào)度算法對于那些循環(huán)執(zhí)行的任務(wù)能夠取得較好的調(diào)度效果;(2)在Linux內(nèi)核之外進行實時性擴展,添加一個實時內(nèi)核。實時內(nèi)核接管硬件所有中斷,并依據(jù)是否為實時任務(wù)給予響應(yīng)。Fsm Labs公司開發(fā)的RTLinux就是依據(jù)這種策略開發(fā)設(shè)計的[3]。以上論述的兩種技術(shù)方案有其可借鑒之處,但如果綜合考慮任務(wù)響應(yīng)、內(nèi)核可搶占性、實時調(diào)度策略等都將影響操作系統(tǒng)的實時性能,因此,這兩種技術(shù)還不能很好地滿足實時性要求。為了增強嵌入式Linux實時性能,下面將介紹中斷機制、內(nèi)核的搶占性以及大內(nèi)核鎖等相關(guān)問題。
2 Linux實時性改進方法
Linux2.4及以前版本內(nèi)核是不可搶占的,在Linux2.6中,內(nèi)核已經(jīng)可以搶占,實時性有所增強。但是內(nèi)核中仍然有不可搶占的區(qū)域,如自旋鎖spinlock保護的臨界區(qū)等。另外,影響內(nèi)核實時性能的因素還有中斷運行機制、大內(nèi)核鎖機制以及調(diào)度算法等。
2.1 中斷運行機制改進
在Linux標(biāo)準內(nèi)核中,中斷是最高優(yōu)先級的執(zhí)行單元,硬件架構(gòu)決定了硬件中斷到來的時候在該中斷沒有被屏蔽的條件下必須處理。不管內(nèi)核當(dāng)時處理什么,即便是Linux中最高優(yōu)先級的實時進程,只要有中斷發(fā)生,系統(tǒng)將立即響應(yīng)該事件并執(zhí)行相應(yīng)的中斷處理程序,這就大大削弱了Linux的實時性能。特別是系統(tǒng)有嚴重的網(wǎng)絡(luò)或I/O負載時,中斷將非常頻繁,實時任務(wù)將很難有機會運行,這對于Linux的實時應(yīng)用來說是不可接受的。Linux采用的關(guān)中斷技術(shù)在關(guān)中斷區(qū)域使相應(yīng)實時任務(wù)得不到響應(yīng),增加了實時任務(wù)的中斷延遲。Linux實時化后自旋鎖變?yōu)榛コ怄i的技術(shù),但由于自旋鎖的中斷處理不能及時響應(yīng),降低了系統(tǒng)的實時性能。因此,借鑒Ingo Molnar實時補丁的實時化方法,采用中斷線程化技術(shù)改進中斷運行機制,中斷將作為內(nèi)核線程運行而且賦予不同的實時優(yōu)先級,實時任務(wù)可以有比中斷線程更高的優(yōu)先級,這樣,實時任務(wù)就可以作為最高優(yōu)先級的執(zhí)行單元來運行了,即使在嚴重負載下仍有實時性保證。另一方面,中斷處理線程也可以因為在內(nèi)核同步中得不到鎖而掛載到鎖的等待隊列中,很多關(guān)中斷就不必真正的禁止硬件中斷了,而是禁止內(nèi)核進程搶占,從而減小了中斷延遲[4]。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 嵌入式Linux實時性能優(yōu)化
- Linux最新2.6內(nèi)核的Makefile體系詳細資料分析 0次下載
- linux內(nèi)核入門教材之linux內(nèi)核設(shè)計與實現(xiàn)第二版中文版免費下載 0次下載
- REDIce-Linux--靈活的實時Linux內(nèi)核 12次下載
- 關(guān)于Linux 2.6內(nèi)核Makefile的分析 1次下載
- 基于Linux 2.6內(nèi)核Makefile分析 0次下載
- linux2.6內(nèi)核設(shè)備驅(qū)動模型精華 20次下載
- 基于ARM9的嵌入式Web遠程實時溫度監(jiān)控系統(tǒng)設(shè)計 158次下載
- 編譯Linux2.6內(nèi)核并添加一個系統(tǒng)調(diào)用 46次下載
- Android的Linux內(nèi)核與驅(qū)動程序開發(fā)教程 335次下載
- 嵌入式Linux下的實時性增強方案
- 嵌入式Linux2.6在S3C2410上的移植技術(shù)探析
- 嵌入式Linux內(nèi)核實時性研究及改進
- 基于Linux的實時內(nèi)核RTAI的分析與研究
- 嵌入式Linux 實時性分析與實時性改進
- 使用 PREEMPT_RT 在 Ubuntu 中構(gòu)建實時 Linux 內(nèi)核 2658次閱讀
- Linux內(nèi)核的安全性對Android的影響 1306次閱讀
- 為什么要使用反向映射 Linux2.6中如何實現(xiàn)反向映射 523次閱讀
- OpenHarmony內(nèi)核標(biāo)準庫與Linux標(biāo)準庫有何區(qū)別 3461次閱讀
- Linux:QEMU調(diào)試內(nèi)核的步驟 3172次閱讀
- Linux內(nèi)核與Android的關(guān)系 4606次閱讀
- 關(guān)于嵌入式系統(tǒng)的特點和Linux內(nèi)核的實時應(yīng)用分析 1141次閱讀
- 怎么才能更好的理解嵌入式操作系統(tǒng)Linux實時化技術(shù)? 1242次閱讀
- 以Linux 2.6為基礎(chǔ)的提高Linux實時性的方法探討 1594次閱讀
- 基于Linux2.6內(nèi)核的實時性增強方案設(shè)計 1021次閱讀
- 為什么選擇Linux操作系統(tǒng)?制約標(biāo)準Linux操作系統(tǒng)實時性的因素 5488次閱讀
- Linux內(nèi)核地址映射模型與Linux內(nèi)核高端內(nèi)存詳解 3474次閱讀
- 基于FPGA嵌入式系統(tǒng)的設(shè)備驅(qū)動開發(fā) 2338次閱讀
- Linux內(nèi)核開發(fā)工具介紹 4720次閱讀
- Linux2.6內(nèi)核中的最新電源管理技術(shù)綜述 829次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關(guān)電源基礎(chǔ)知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計與實現(xiàn)
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發(fā)板設(shè)計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多