音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

嵌入式Linux的實(shí)時(shí)性分析

出處:songfei002 發(fā)布于:2011-09-03 15:51:11

  引言

  嵌入式 Linux是以Linux為基礎(chǔ)的嵌入式作業(yè)系統(tǒng),它被廣泛應(yīng)用在移動電話、個(gè)人數(shù)字助理(PDA)、媒體播放器、消費(fèi)性電子產(chǎn)品以及航空航天等領(lǐng)域中……

  嵌入式系統(tǒng)出現(xiàn)于60年代晚期,它初被用于控制機(jī)電電話交換機(jī),如今已被廣泛的應(yīng)用于工業(yè)制造、過程控制、通訊、儀器、儀表、汽車、船舶、航空、航天、軍事裝備、消費(fèi)類產(chǎn)品等眾多領(lǐng)域。計(jì)算機(jī)系統(tǒng)CPU,每年在范圍內(nèi)的產(chǎn)量大概在二十億顆左右,其中超過80%應(yīng)用于各類專用性很強(qiáng)的嵌入式系統(tǒng)。一般的說,凡是帶有微處理器的專用軟硬件系統(tǒng)都可以稱為嵌入式系統(tǒng)。

  本文采用APIC時(shí)鐘修改的方法對Linux內(nèi)核進(jìn)行實(shí)時(shí)化改造,修改APIC中斷函數(shù),將APIC中斷和8254中斷排序,使得硬實(shí)時(shí)中斷的優(yōu)先級大于普通8254中斷。通過多組仿真實(shí)驗(yàn),驗(yàn)證了該改造方法是有效的。

  1 嵌入式Linux的實(shí)時(shí)性分析

  Linux設(shè)計(jì)的初衷是系統(tǒng)吞吐量的平衡,其內(nèi)核試圖通過一種公平分配的策略來實(shí)現(xiàn)各進(jìn)程平均地共享系統(tǒng)資源:

 ?。?)內(nèi)核的不可搶占性:Linux的內(nèi)核在單處理器上不可搶占,當(dāng)一個(gè)任務(wù)進(jìn)入內(nèi)核態(tài)運(yùn)行時(shí),一個(gè)具有更高優(yōu)先級的進(jìn)程,只有等待處于態(tài)的系統(tǒng)調(diào)用返回后方能執(zhí)行,這將導(dǎo)致優(yōu)先級逆轉(zhuǎn)。

 ?。?)進(jìn)程調(diào)度的不可搶占性:Linux作為一個(gè)分時(shí)系統(tǒng),采用多級反饋輪轉(zhuǎn)調(diào)度算法,它保證了每一個(gè)進(jìn)程都有一種調(diào)度策略,但是都放在同一個(gè)隊(duì)列中運(yùn)行,這也是Linux作為實(shí)時(shí)操作系統(tǒng)的一個(gè)弱點(diǎn)。圖1是Linux調(diào)度機(jī)制框圖。

 ?。?)時(shí)鐘中斷的不高:Linux 2.4.X內(nèi)核的時(shí)鐘中斷周期為10 ms,時(shí)鐘粒度太過于粗糙,不能滿足實(shí)時(shí)性要求。

 ?。?)Linux的虛擬存儲管理:Linux采用段和頁機(jī)制的虛擬存儲管理技術(shù),進(jìn)程在硬盤和內(nèi)存間的換入換出必然帶來額外的開銷,造成很大的延遲。

Linux調(diào)度機(jī)制框圖 www.elecfans.com

  由此可見,要將Linux應(yīng)用于嵌入式系統(tǒng),必須對其進(jìn)行實(shí)時(shí)化改造,以適應(yīng)嵌入式領(lǐng)域要求。

  2 嵌入式Linux系統(tǒng)特點(diǎn)應(yīng)用

  就是利用Linux其自身的許多特點(diǎn),把它應(yīng)用到嵌入式系統(tǒng)里。

  Linux做嵌入式的優(yōu)勢,首先,Linux是開放源代碼的,不存在黑箱技術(shù),遍布的眾多Linux愛好者又是Linux開發(fā)者的強(qiáng)大技術(shù)支持;其次,Linux的內(nèi)核小、效率高,內(nèi)核的更新速度很快,linux是可以定制的,其系統(tǒng)內(nèi)核只有約134KB。第三,Linux是的OS,在價(jià)格上極具競爭力。 Linux還有著嵌入式操作系統(tǒng)所需要的很多特色,突出的就是Linux適應(yīng)于多種CPU和多種硬件平臺,是一個(gè)跨平臺的系統(tǒng)。到目前為止,它可以支持二三十種CPU。而且性能穩(wěn)定,裁剪性很好,開發(fā)和使用都很容易。很多CPU包括家電業(yè)芯片,都開始做Linux的平臺移植工作。移植的速度遠(yuǎn)遠(yuǎn)超過Java的開發(fā)環(huán)境。也就是說,如果今天用Linux環(huán)境開發(fā)產(chǎn)品,那么將來換CPU就不會遇到困擾。同時(shí),Linux內(nèi)核的結(jié)構(gòu)在網(wǎng)絡(luò)方面是非常完整的,Linux對網(wǎng)絡(luò)中常用的TCP/IP協(xié)議有完備的支持。提供了包括十兆、百兆、千兆的以太網(wǎng)絡(luò),以及無線網(wǎng)絡(luò),Toker ring(令牌環(huán)網(wǎng))、光纖甚至衛(wèi)星的支持。所以Linux很適于做信息家電的開發(fā)。

  還有使用Linux為的是來開發(fā)無線連接產(chǎn)品的開發(fā)者越來越多。Linux在快速增長的無線連接應(yīng)用主場中有一個(gè)非常重要的優(yōu)勢,就是有足夠快的開發(fā)速度。這是因?yàn)長Inux有很多工具,并且Linux為眾多程序員所熟悉。因此,我們要在嵌入式系統(tǒng)中使用Linux操作系統(tǒng)。

  3 基于時(shí)鐘修改的內(nèi)核改造方案

  在單CPU系統(tǒng)中,與時(shí)間有關(guān)的活動都是由8254時(shí)鐘芯片來驅(qū)動的,8254產(chǎn)生0號中斷。直接修改內(nèi)核定時(shí)參數(shù)HZ的初值就可構(gòu)造細(xì)粒度定時(shí)器。這種方式實(shí)現(xiàn)起來很簡單,但是由此帶來頻繁的定時(shí)中斷使得系統(tǒng)的開銷很大,當(dāng)然隨著硬件速度的提高,這種開銷會逐步降低。

  Linux是的自由電腦操作系統(tǒng)內(nèi)核。它是一個(gè)用C語言和匯編語言寫成,符合POSIX標(biāo)準(zhǔn)的類Unix操作系統(tǒng)。Linux早是由芬蘭黑客林納斯。托瓦茲(Linus B. Torvalds)為嘗試在英特爾x86架構(gòu)上提供自由的類Unix操作系統(tǒng)而開發(fā)的。該計(jì)劃開始于1991年,林納斯·托瓦茲當(dāng)時(shí)在Usenet新聞組comp.os.minix登載帖子,這份著名的帖子標(biāo)示著Linux計(jì)劃的正式開始。

  簡單地修改赫茲參數(shù)HZ進(jìn)行實(shí)時(shí)化的方法顯然并不可取。Linux 2.6內(nèi)核的時(shí)鐘粒度是1 ms,但仍然與嵌入式領(lǐng)域的實(shí)時(shí)化要求差距較遠(yuǎn),因此需要更高的時(shí)鐘。本文利用先進(jìn)的APIC時(shí)鐘實(shí)現(xiàn)一個(gè)高時(shí)鐘系統(tǒng),提供了高的中斷響應(yīng),從而以較少的改動獲得較高的實(shí)時(shí)性。

  APIC 是裝置的擴(kuò)充組合用來驅(qū)動 Interrupt 控制器。在目前的建置中,系統(tǒng)的每一個(gè)部份都是經(jīng)由 APIC Bus 連接的。"本機(jī) APIC" 為系統(tǒng)的一部份,負(fù)責(zé)傳遞 Interrupt 至指定的處理器;舉例來說,當(dāng)一臺機(jī)器上有三個(gè)處理器則它必須相對的要有三個(gè)本機(jī) APIC。自 1994 年的 Pentium P54c 開始Intel 已經(jīng)將本機(jī) APIC 建置在它們的處理器中。實(shí)際建置了 Intel 處理器的電腦就已經(jīng)包含了 APIC 系統(tǒng)的部份。

  系統(tǒng)中另一個(gè)重要的部份為 I/O APIC。系統(tǒng)中多可擁有 8 個(gè) I/O APIC。它們會收集來自 I/O 裝置的 Interrupt 訊號且在當(dāng)那些裝置需要 interrupt 時(shí)傳送訊息至本機(jī) APIC。每個(gè) I/O APIC 有一個(gè)專有的 interrupt 輸入 (或 IRQ) 號碼。Intel 過去與目前的 I/O APIC 通常有 24 個(gè)輸入 -- 其它的可能有多逹 64 個(gè)。而且有些機(jī)器擁有數(shù)個(gè) I/O APIC,每一個(gè)分別有自己的輸入號碼,加起來一臺機(jī)器上會有上百個(gè) IRQ 可供裝置 Interrupt 使用。

  APIC本身提供了中斷處理函數(shù)apic_timer_interrupt,該函數(shù)包括Irq_enter(),Run_realtimer_queue()和irq_exit(),其中函數(shù)irq_ exit通常負(fù)責(zé)判斷當(dāng)前是否有8254產(chǎn)生的軟中斷存在,如果存在,就會觸發(fā)8254軟中斷,這樣會造成APIC硬中斷處理延遲。本文的思路就是修改irq_exit,在其中將各軟中斷線程和硬中斷線程進(jìn)行排序,使APIC硬中斷的優(yōu)先級高于軟中斷,此時(shí)硬中斷線程得到優(yōu)先處理,從而提高內(nèi)核的實(shí)時(shí)性能。Irp_exit函數(shù)的代碼如下:

  上面調(diào)用invoke_softirq()函數(shù)執(zhí)行軟中斷使本文修改的重點(diǎn),修改中斷向量表,對向量表中所有軟中斷和實(shí)時(shí)中斷進(jìn)行排序,提前硬中斷的時(shí)間片,這樣使當(dāng)前處于pending狀態(tài)的軟中斷被屏蔽和懸掛,直到硬中斷處理完成為止。將invoke_softirq()函數(shù)修改為:

  每個(gè)處理器時(shí)間片上能夠處理的中斷只有一個(gè),通過更新當(dāng)前任務(wù)時(shí)間片,使硬中斷在時(shí)間獲得CPU的響應(yīng),此時(shí)軟中斷將被屏蔽,這就保證了硬中斷能夠得到實(shí)時(shí)的響應(yīng)。

  由于Linux采用8254完成時(shí)序分配,8254需要保留以保證系統(tǒng)的穩(wěn)定性。這樣的話,8254定時(shí)器和APIC必須共存,對于硬實(shí)時(shí)應(yīng)用,可采用APIC時(shí)鐘進(jìn)行計(jì)時(shí)。在8254中斷過程中,如果產(chǎn)生APIC中斷,采用通過本文的方琺必須對優(yōu)先對APIC時(shí)鐘進(jìn)行響應(yīng),會出現(xiàn)8254中斷被搶占,此時(shí)上下文切換等操作可能導(dǎo)致不可預(yù)料的錯(cuò)誤。解決問題的方法可采取在APIC相應(yīng)中斷期間,關(guān)閉軟中斷,只有當(dāng)APIC中斷執(zhí)行完畢后,8254軟中斷才能夠被響應(yīng)。

  4 實(shí)時(shí)性能測試與分析

  實(shí)驗(yàn)條件1:CPU:PⅢ300 MHz,內(nèi)存為128 MB,硬盤為5 400轉(zhuǎn)的15 GB臺式機(jī)硬盤,操作系統(tǒng)為Fedora2.6.18內(nèi)核。環(huán)境一(vd-d1)采用原版內(nèi)核,環(huán)境二(vd-d2)采用改進(jìn)型內(nèi)核。測試方法為通過測試內(nèi)核的上、下文切換、內(nèi)存延遲及模擬外部中斷來評價(jià)改造前后的性能。統(tǒng)計(jì)測試結(jié)果,如圖2、圖3所示。

  從實(shí)驗(yàn)結(jié)果可知,在上、下文切換中I/0讀/寫和文件打開和關(guān)閉,改進(jìn)型內(nèi)核的實(shí)時(shí)性能都有明顯提高,模擬TCP通道子項(xiàng),改進(jìn)型內(nèi)核性能提高了約6倍,但在對中斷響應(yīng)要求不是很高的null call測試中,隨著處理器負(fù)荷的進(jìn)一步加重,原始內(nèi)核的內(nèi)存延遲急劇增加。在差情況下,系統(tǒng)響應(yīng)速度較慢,延遲時(shí)間達(dá)到5μs。而改進(jìn)型內(nèi)核在處理器負(fù)荷變化時(shí),系統(tǒng)的響應(yīng)速度變化不明顯,而且中斷響應(yīng)速度始終穩(wěn)定在2μs以下,性能穩(wěn)定。

  實(shí)驗(yàn)條件2:采用改進(jìn)型內(nèi)核,環(huán)境一(vd-d2)CPU:PIII 300 MHz,環(huán)境二(vd-d3)CPU降頻為200 MHz(接近ARM9)。統(tǒng)計(jì)測試結(jié)果,獲得它們的文件系統(tǒng)延遲結(jié)果見圖4。圖4反映了同樣采用改進(jìn)型內(nèi)核,將CPU降頻前后,測試結(jié)果差距在10μs以內(nèi),可看出在文件系統(tǒng)延遲中,處理器頻率的較小差距對內(nèi)核的影響不大。如采用高主頻的處理器,實(shí)驗(yàn)結(jié)果差距較大。

  5 結(jié)語

  本文通過修改APIC時(shí)鐘,可顯著地改進(jìn)嵌入式系統(tǒng)的實(shí)時(shí)性能,通過對比試驗(yàn)可看出改進(jìn)型內(nèi)核具有良好的實(shí)時(shí)性能,滿足了系統(tǒng)實(shí)時(shí)性和穩(wěn)定性要求。本文方法使得嵌入式Linux系統(tǒng)在高實(shí)時(shí)性領(lǐng)域中得到實(shí)際的應(yīng)用。


  
關(guān)鍵詞:嵌入式

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問題,請?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機(jī)號碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時(shí)間周一至周五
9:00-17:30

關(guān)注官方微信號,
第一時(shí)間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務(wù)的動力!意見一經(jīng)采納,將有感恩紅包奉上哦!