《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于APIC時鐘的嵌入式Linux的實時性分析
基于APIC時鐘的嵌入式Linux的實時性分析
電子發(fā)燒友
摘要: 引言嵌入式Linux是指對Linux進(jìn)行剪裁后,將其固化在單片機(jī)或者存儲器中,應(yīng)用于特定場合的專用Linux系統(tǒng)。嵌入式系統(tǒng)要求實時性能高,但Linux為分時系統(tǒng)設(shè)計的操作系統(tǒng),盡管最新的內(nèi)核在實時性能方面有所提高,但它仍然不是一個實時系統(tǒng),在很多場合不能滿足實時性要求。一般地,通過改造Linux的內(nèi)核以提高其實時性能有2種策略:一種是采用底層編程的方法對Linux內(nèi)核進(jìn)行修改(如調(diào)度算法、時鐘修改等),典型的系統(tǒng)有Kansas大學(xué)開發(fā)的KURT。文獻(xiàn)提出了搶占式內(nèi)核調(diào)度算法,容易引起內(nèi)核優(yōu)先級翻轉(zhuǎn),文獻(xiàn)針對非搶占式內(nèi)核,增加搶占點,該方法需要優(yōu)秀的調(diào)度算法。另一種途徑是Linux的外部實時性擴(kuò)展,在原有Linux基礎(chǔ)上再設(shè)計一個用于專門處理實時進(jìn)程的內(nèi)核,典型的系統(tǒng)有RTLinux、RTAI等。此方法的不足是RTLinux現(xiàn)在已經(jīng)停止了更新,目前的開源版本僅支持2.4內(nèi)核,RTAI的設(shè)計原理和RTLinux類似,也是一個實時性應(yīng)用接口。本文采用APIC時鐘修改的方法對Linux內(nèi)核進(jìn)行實時化改造,修改APIC中斷函數(shù),將APIC中斷和8254中斷排序,使得硬實時中斷的優(yōu)先級大于普通8254中斷。通過多組仿真
Abstract:
Key words :

  引言

  嵌入式Linux是指對Linux進(jìn)行剪裁后,將其固化在單片機(jī)或者存儲器中,應(yīng)用于特定場合的專用Linux系統(tǒng)。嵌入式系統(tǒng)要求實時性能高,但Linux為分時系統(tǒng)設(shè)計的操作系統(tǒng),盡管最新的內(nèi)核在實時性能方面有所提高,但它仍然不是一個實時系統(tǒng),在很多場合不能滿足實時性要求。一般地,通過改造Linux的內(nèi)核以提高其實時性能有2種策略:一種是采用底層編程的方法對Linux內(nèi)核進(jìn)行修改(如調(diào)度算法、時鐘修改等),典型的系統(tǒng)有Kansas大學(xué)開發(fā)的KURT。文獻(xiàn)提出了搶占式內(nèi)核調(diào)度算法,容易引起內(nèi)核優(yōu)先級翻轉(zhuǎn),文獻(xiàn)針對非搶占式內(nèi)核,增加搶占點,該方法需要優(yōu)秀的調(diào)度算法。另一種途徑是Linux的外部實時性擴(kuò)展,在原有Linux基礎(chǔ)上再設(shè)計一個用于專門處理實時進(jìn)程的內(nèi)核,典型的系統(tǒng)有RTLinux、RTAI等。此方法的不足是RTLinux現(xiàn)在已經(jīng)停止了更新,目前的開源版本僅支持2.4內(nèi)核,RTAI的設(shè)計原理和RTLinux類似,也是一個實時性應(yīng)用接口。

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

  1 嵌入式Linux的實時性分析

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

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

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

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

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

  

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

 

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

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

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

  簡單地修改赫茲參數(shù)HZ進(jìn)行實時化的方法顯然并不可取。Linux 2.6內(nèi)核的時鐘粒度是1 ms,但仍然與嵌入式領(lǐng)域的實時化要求差距較遠(yuǎn),因此需要更高精度的時鐘。目前常見的修改時鐘系統(tǒng)達(dá)到實時化的方法都是從軟件層面著手,這方面己獲得較大進(jìn)展,但是從時鐘系統(tǒng)的硬件結(jié)構(gòu)分析并開展實時化工作也是一個值得注意的方向。本文利用先進(jìn)的APIC時鐘實現(xiàn)一個高精度時鐘系統(tǒng),提供了高精度的中斷響應(yīng),從而以較少的改動獲得較高的實時性。

  APIC以總線頻率工作,可立即執(zhí)行所有的定時器操作,目前x86都有片內(nèi)APIC,用戶可在單CPU內(nèi)使用APIC。APIC除了能提供高精度的時鐘外還具有一個重要的優(yōu)點,是由于它位于片內(nèi),對其編程只需幾個CPU指令周期,而對IntelX86的8254存取需要若干慢速的ISA總線指令。

  在100MHz的CPU系統(tǒng)中,處理一個中斷的時間不到10μs,因此高速CPU完全可在更短的時間內(nèi)處理更多的APIC中斷。理論上APIC可實現(xiàn)10 ns左右的系統(tǒng)時鐘,但實際上在處理中斷時要耗費一些時間,因此中斷的響應(yīng)時間要大于10 ns。

  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)先級高于軟中斷,此時硬中斷線程得到優(yōu)先處理,從而提高內(nèi)核的實時性能。Irp_exit函數(shù)的核心代碼如下:

  

 

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

  

 

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

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

  3 實時性能測試與分析

  實驗條件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)存延遲及模擬外部中斷來評價改造前后的性能。統(tǒng)計測試結(jié)果,如圖2、圖3所示。

  

 

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

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

  

 

  4 結(jié)語

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


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲永久精品国产| 欧美精品一区二区三区久久久竹菊 | 欧美高清视频在线| 久久久精品动漫| 久久国产欧美精品| 欧美自拍偷拍| 亚洲欧洲99久久| 亚洲女同同性videoxma| 亚洲婷婷国产精品电影人久久| 亚洲精品在线免费| 亚洲精品日韩欧美| 亚洲另类在线视频| 一区二区三区免费网站| 制服丝袜激情欧洲亚洲| 一区二区三区黄色| 亚洲影音一区| 欧美一区二区播放| 久久久久国产一区二区三区四区 | 午夜精品一区二区三区在线视| 亚洲午夜精品| 亚洲欧美日韩精品综合在线观看| 亚洲影院免费观看| 午夜激情久久久| 久久gogo国模裸体人体| 亚洲黄网站在线观看| 亚洲人成绝费网站色www| 亚洲精品一区二区三区av| 99视频在线精品国自产拍免费观看| 艳妇臀荡乳欲伦亚洲一区| 亚洲天堂第二页| 欧美在线不卡| 免费成人高清在线视频| 欧美日本一区| 国产精品久久久久久久久借妻 | 久久爱91午夜羞羞| 久久久精品国产99久久精品芒果| 卡一卡二国产精品| 欧美精品尤物在线| 国产精品乱人伦一区二区| 国产日韩欧美视频在线| 精品福利av| 亚洲精品日韩精品| 亚洲女人av| 亚洲国内自拍| 亚洲一二三级电影| 久久久99免费视频| 欧美理论大片| 国产欧美一区二区三区另类精品 | 亚洲国产视频直播| 一区二区三区日韩| 欧美在线观看视频一区二区| 久久久久久免费| 欧美激情亚洲综合一区| 国产精品视频自拍| 在线观看一区欧美| 亚洲午夜一区二区| 久久精品人人做人人爽| 亚洲天堂激情| 久久综合九色欧美综合狠狠| 欧美日韩一区二区在线观看视频| 国产欧美一区二区视频| 亚洲国产精品精华液网站| 亚洲香蕉在线观看| 亚洲精品一区二区三区在线观看| 性18欧美另类| 欧美国产日韩在线观看| 国产美女精品视频免费观看| 亚洲国产成人精品女人久久久| 亚洲视屏在线播放| 亚洲人成绝费网站色www| 午夜国产精品影院在线观看| 欧美sm视频| 国产欧美精品在线播放| 亚洲精品乱码久久久久久按摩观| 午夜精品福利在线| 夜夜嗨av一区二区三区免费区| 久久精品99国产精品日本| 欧美猛交免费看| 黄色一区三区| 亚洲一区日韩| 一区二区三区四区五区在线| 久久久人人人| 国产精品日韩在线观看| 91久久久在线| 亚洲高清在线观看| 欧美伊人久久| 国产精品久久久久久福利一牛影视| 在线色欧美三级视频| 新片速递亚洲合集欧美合集 | 亚洲一区二区三区乱码aⅴ| 男人的天堂亚洲在线| 国产欧美一区二区精品性 | 亚洲午夜精品国产| av成人免费| 免费看成人av| 黄色亚洲大片免费在线观看| 亚洲欧美综合国产精品一区| 亚洲综合成人婷婷小说| 欧美日韩国产精品| 亚洲精品1234| 亚洲激情影视| 久久一区精品| 韩国三级在线一区| 久久国产精彩视频| 久久精品伊人| 国产欧美日韩亚州综合| 亚洲夜间福利| 亚洲欧美韩国| 欧美性理论片在线观看片免费| 亚洲精美视频| 日韩视频在线观看| 欧美精品久久一区| 亚洲激情网站免费观看| 亚洲三级性片| 欧美精品色网| 亚洲激情校园春色| 999亚洲国产精| 欧美日韩成人综合在线一区二区| 亚洲国产日韩美| 亚洲精品国产系列| 欧美xart系列高清| 亚洲第一福利在线观看| 亚洲精品日韩欧美| 欧美精品亚洲一区二区在线播放| 亚洲国产一区二区三区青草影视 | 欧美中文字幕在线播放| 国产欧美1区2区3区| 亚洲少妇最新在线视频| 亚洲自拍三区| 国产精品美女在线| 亚洲欧美综合精品久久成人| 久久狠狠亚洲综合| 国产综合网站| 最新中文字幕亚洲| 欧美高清在线| 亚洲精品视频在线| 亚洲一区日韩| 国产精品婷婷午夜在线观看| 亚洲影院在线| 久久九九热re6这里有精品 | 亚洲高清不卡av| 亚洲最新合集| 国产精品白丝av嫩草影院| 亚洲视频免费在线观看| 欧美一区二区精品久久911| 国产日韩欧美视频| 亚洲国产成人精品女人久久久| 欧美承认网站| 日韩网站在线| 亚洲欧美中文在线视频| 国产日产欧产精品推荐色| 久久精品理论片| 欧美日本一道本| 亚洲一区欧美| 美女主播精品视频一二三四| 亚洲黄色精品| 午夜国产欧美理论在线播放| 国模套图日韩精品一区二区| 亚洲精品一区中文| 国产精品亚洲综合色区韩国| 欧美在线一级视频| 欧美久色视频| 欧美一级片一区| 欧美国产日韩a欧美在线观看| 一本色道久久综合亚洲精品小说| 久久丁香综合五月国产三级网站| 亚洲第一色在线| 亚洲欧美日韩中文视频| 在线成人激情黄色| 亚洲伊人网站| 激情校园亚洲| 亚洲午夜国产一区99re久久| 国产亚洲人成a一在线v站| 日韩一级大片在线| 国产一区二区三区四区在线观看 | 久久久噜噜噜久噜久久| 亚洲精品在线观看免费| 欧美在线二区| 亚洲三级影片| 久久手机精品视频| aa国产精品| 麻豆久久婷婷| 亚洲男同1069视频| 欧美日韩1区2区3区| 欧美一区二区视频网站| 欧美日韩p片| 久久丁香综合五月国产三级网站| 欧美日韩中文在线观看| 亚洲国产精品久久久久婷婷884| 欧美视频一区二区在线观看 | 免费观看30秒视频久久| 亚洲与欧洲av电影| 欧美男人的天堂| 久久精品国产免费观看| 国产精品护士白丝一区av| 亚洲区在线播放| 国产日韩欧美一区在线| 一本色道88久久加勒比精品| 国内精品一区二区| 欧美一区日韩一区|