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

  引言

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

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

  1 嵌入式Linux的實時性分析

  Linux設計的初衷是系統吞吐量的平衡,其內核試圖通過一種公平分配的策略來實現各進程平均地共享系統資源:

  (1)內核的不可搶占性:Linux的內核在單處理器上不可搶占,當一個任務進入內核態運行時,一個具有更高優先級的進程,只有等待處于核心態的系統調用返回后方能執行,這將導致優先級逆轉。

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

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

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

  

Linux調度機制框圖 www.elecfans.com

 

  由此可見,要將Linux應用于嵌入式系統,必須對其進行實時化改造,以適應嵌入式領域要求。

  2 基于時鐘修改的內核改造方案

  在單CPU系統中,與時間有關的活動都是由8254時鐘芯片來驅動的,8254產生0號中斷。直接修改內核定時參數HZ的初值就可構造細粒度定時器。這種方式實現起來很簡單,但是由此帶來頻繁的定時中斷使得系統的開銷很大,當然隨著硬件速度的提高,這種開銷會逐步降低。

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

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

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

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

  

 

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

  

 

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

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

  3 實時性能測試與分析

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

  

 

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

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

  

 

  4 結語

  本文通過修改APIC時鐘,可顯著地改進嵌入式系統的實時性能,通過對比試驗可看出改進型內核具有良好的實時性能,滿足了系統實時性和穩定性要求。本文方法使得嵌入式Linux系統在高實時性領域中得到實際的應用。


此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
一区二区欧美日韩| 亚洲国产精品视频一区| 一区二区三区在线免费视频| 国产麻豆日韩欧美久久| 国产精品日韩欧美一区二区| 欧美午夜国产| 国产精品成人在线观看| 欧美午夜精品理论片a级大开眼界 欧美午夜精品理论片a级按摩 | 久久野战av| 久久久久久夜精品精品免费| 欧美一二三区精品| 羞羞答答国产精品www一本| 亚洲欧美影院| 午夜视频一区二区| 欧美在线综合| 久久精品九九| 狂野欧美一区| 欧美好骚综合网| 欧美日韩国产区一| 欧美日韩在线大尺度| 国产精品成人免费精品自在线观看| 国产精品成人免费| 国产日韩精品在线观看| 国产在线精品一区二区夜色| 黄色成人片子| 亚洲清纯自拍| 在线视频精品一区| 亚洲欧美日韩天堂一区二区| 久久高清国产| 亚洲乱码久久| 亚洲在线一区二区三区| 欧美在线视频全部完| 久久久久综合| 欧美激情视频网站| 国产精品视频xxxx| 激情欧美一区二区三区| 亚洲人成在线观看| 亚洲自拍三区| 亚洲国产精品视频| 亚洲在线观看免费视频| 久久久久久**毛片大全| 欧美大学生性色视频| 国产精品v欧美精品v日韩精品| 国产日韩欧美综合一区| 亚洲国产精品一区制服丝袜| 野花国产精品入口| 久久成人羞羞网站| 9国产精品视频| 欧美在线影院| 欧美精品日韩一区| 国产乱码精品一区二区三| 激情国产一区二区| 亚洲精品免费电影| 性欧美1819sex性高清| 亚洲美女视频在线观看| 欧美一区二区三区免费看| 女人色偷偷aa久久天堂| 国产精品jvid在线观看蜜臀| 国产综合欧美| 99国产精品久久久久久久久久 | 亚洲第一天堂无码专区| 中文一区在线| 久热re这里精品视频在线6| 欧美视频一区二区三区在线观看| 国产日韩欧美夫妻视频在线观看| 亚洲国产精品黑人久久久| 亚洲一区欧美一区| 亚洲日本欧美日韩高观看| 午夜精品999| 欧美另类综合| 极品尤物一区二区三区| 亚洲视频第一页| 亚洲精品四区| 久久久777| 国产精品高清在线观看| 在线看一区二区| 欧美亚洲一区三区| 亚洲一区在线看| 欧美黄色aaaa| 一区免费观看| 欧美一区成人| 午夜国产欧美理论在线播放 | 国产精品成人一区二区三区吃奶| 在线日本成人| 欧美一区二区视频97| 亚洲在线黄色| 欧美日韩综合视频| 亚洲国产第一页| 久久精品国产久精国产爱| 欧美一区二区三区视频在线观看| 欧美日韩一区在线观看| 亚洲国产精品va| 久久精品欧美| 久久久国产精品亚洲一区 | 亚洲午夜伦理| 亚洲图片欧美日产| 欧美激情精品久久久久久蜜臀 | 亚洲精品国偷自产在线99热| 久久精品亚洲国产奇米99| 国产精品一区一区三区| 夜夜嗨av色综合久久久综合网| 亚洲精品黄色| 欧美国产激情二区三区| 欧美精品久久99| 老司机午夜免费精品视频| 国产噜噜噜噜噜久久久久久久久| 亚洲乱码国产乱码精品精天堂| 亚洲高清在线观看一区| 欧美一区二区三区婷婷月色| 欧美日韩天堂| 亚洲乱码久久| 在线视频亚洲| 欧美日韩精品中文字幕| 亚洲精品一级| 亚洲精品一区在线观看| 欧美成人精品在线观看| 亚洲成色www久久网站| 亚洲激情视频在线播放| 老司机午夜精品| 黄色日韩在线| 亚洲激情小视频| 免费亚洲一区| 亚洲国产女人aaa毛片在线| 亚洲精品免费网站| 欧美精品91| 亚洲免费高清| 亚洲视频 欧洲视频| 欧美午夜精品理论片a级按摩| 亚洲神马久久| 久久成人人人人精品欧| 国产一区二区三区不卡在线观看 | 欧美三日本三级少妇三2023| 亚洲精品在线电影| 在线视频欧美日韩| 国产精品日韩久久久久| 午夜精品一区二区三区四区| 久久久国产精品一区二区三区| 伊人久久成人| 亚洲毛片av在线| 国产精品第13页| 欧美影院久久久| 欧美a级在线| 99在线|亚洲一区二区| 午夜精彩国产免费不卡不顿大片| 国产欧美日韩精品丝袜高跟鞋| 久久国产主播精品| 欧美精品色一区二区三区| 一区二区三区日韩欧美精品| 欧美一区二区视频在线观看| 激情欧美一区| 亚洲性视频网址| 国产一区二区三区高清在线观看| 91久久国产综合久久91精品网站| 欧美日韩国产亚洲一区| 亚洲一区日韩在线| 免费不卡亚洲欧美| 中国av一区| 久久综合给合| 9色国产精品| 久久久久国产精品一区二区| 亚洲国产另类久久久精品极度| 亚洲综合电影| 有码中文亚洲精品| 亚洲一区二区三区四区视频| 国产在线麻豆精品观看| aa成人免费视频| 国产视频在线观看一区| 亚洲精品日韩久久| 国产精品综合网站| 亚洲狼人精品一区二区三区| 国产精品一二三四| 亚洲免费高清| 国产乱码精品一区二区三区五月婷 | 亚洲天堂av图片| 卡通动漫国产精品| 亚洲视频久久| 欧美成年人视频| 亚洲欧美视频在线观看视频| 欧美激情综合色综合啪啪| 欧美亚洲一区二区三区| 欧美视频一区二区三区…| 亚洲第一页中文字幕| 国产精品免费网站| 亚洲精品一区久久久久久 | 一区国产精品| 欧美一区2区三区4区公司二百| 亚洲黄色三级| 久久精品视频99| 一区二区欧美在线观看| 欧美**字幕| 欧美资源在线| 国产精品久久久91| 9i看片成人免费高清| 一区二区三区在线免费观看| 欧美一级大片在线免费观看| 日韩午夜在线播放| 欧美精品色综合| 亚洲黄色高清| 狠狠色丁香婷综合久久| 久久成人综合视频|