999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于APIC時鐘的嵌入式Linux內核實時化研究

2010-04-12 00:00:00峰,童曉陽
現代電子技術 2010年14期

摘 要:在分析目前Linux的各種實時化方法的基礎上,提出了基于APIC時鐘修改的方法,以獲得更高的硬實時性能。對APIC中斷函數進行修改,將APIC中斷和8254中斷排序,使得硬實時中斷的優先級大于普通8254中斷,從而獲得了更高的實時性能。多組仿真實驗驗證了該方法的有效性。

關鍵詞:嵌入式系統; 實時化改造;Linux; APIC

中圖分類號:TN911; TP311 文獻標識碼:A 文章編號:1004-373X(2010)14-0193-03

Real-time Improvement for Embedded Linux Based on APIC Clock

HOU Feng, TONG Xiao-yang

(School of Electrical Engineering, Southwest Jiaotong University, Chengdu 610031, China)

Abstract: The method based on APIC (high-quality programmable controller)clock modification is proposed to obtain more hard real-time performance by analyzing the present method of real-time Linux. To modify the interrupt function of APIC, and sort the APIC interrupt and 8254 interrupt, the priority of the hard real-time is higher than the normal8254 interrupt, a better real-time performance is gained. Multiple sets of simulation results verify the effectiveness of the method.

Keywords: embedded system; real-time transformation; Linux; APIC

0 引 言

嵌入式Linux是指對Linux進行剪裁后,將其固化在單片機或者存儲器中,應用于特定場合的專用Linux系統[1]。嵌入式系統要求實時性能高,但Linux為分時系統設計的操作系統,盡管最新的內核在實時性能方面有所提高,但它仍然不是一個實時系統,在很多場合不能滿足實時性要求。

一般地,通過改造Linux的內核以提高其實時性能有2種策略:一種是采用底層編程的方法對Linux內核進行修改(如調度算法、時鐘修改等),典型的系統有Kansas大學開發的KURT。文獻[2]提出了搶占式內核調度算法,容易引起內核優先級翻轉,文獻[3]針對非搶占式內核,增加搶占點,該方法需要優秀的調度算法。另一種途徑是Linux的外部實時性擴展,在原有Linux基礎上再設計一個用于專門處理實時進程的內核,典型的系統有RTLinux、RTAI等。此方法的不足是RTLinux現在已經停止了更新,目前的開源版本僅支持2.4內核,RTAI的設計原理和RTLinux類似,也是一個實時性應用接口。

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

1 嵌入式Linux的實時性分析

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

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

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

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

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

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

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

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

圖1 Linux調度機制框圖

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

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

在100 MHz的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函數的核心代碼如下:

void irq_exit(void)

{account_system_vtime(current);

trace_hardirq_exit();

sub_preempt_count(IRQ_EXIT_OFFSET);

if (!in_interrupt() local_softirq_pending())

/*判斷當前是否有硬件中斷嵌套,并且是否有軟中斷*/

/*在pending狀態,只有兩個條件同時滿足時,才能調*/

/*用do_softirq()進入軟中斷。*/

invoke_softirq();

/*調用 do_softirq() 執行軟中斷*/

preempt_enable_no_resched(); }

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

if (pending 1) {

/*得到當前所有 pending 的軟中斷*/

h>action(h); /*如果硬中斷時刻大于軟中斷時刻*/

rcu_bh_qsctr_inc(cpu);

Update_process_times(user_mode(regs)); }

/*更新當前任務為硬中斷,APIC中斷優先處理*/

每個處理器時間片上能夠處理的中斷只有一個,通過更新當前任務時間片,使硬中斷在第一時間獲得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/O讀/寫和文件打開和關閉,改進型內核的實時性能都有明顯提高,模擬TCP通道子項,改進型內核性能提高了約6倍,但在對中斷響應要求不是很高的1 call測試中,中斷響應時間幾乎相同。改進型內核中斷響應速度始終穩定在微妙級。

在處理器負荷較輕時原始內核有著良好的內存延遲,隨著處理器負荷的進一步加重,原始內核的內存延遲急劇增加。在最差情況下,系統響應速度較慢,延遲時間達到5 μs。而改進型內核在處理器負荷變化時,系統的響應速度變化不明顯,而且中斷響應速度始終穩定在2 μs以下,性能穩定。

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

圖2 實驗條件1下上下文切換的比較

圖3 實驗條件1下內存延遲比較曲線

4 結 語

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

圖4 實驗條件2下文件系統延遲比較

參考文獻

[1]楊志勇,章小丹.嵌入式 Linux實時化方法研究[ J] .計算機與數字工程,2007,38(6):37-39.

[2]宋豐末. 關于RTOS 搶占式調度及優先級反轉的幾點探討[ J] .計算機工程與設計,2007,28(19):4719-4720.

[3]謝覺,趙惠斌,葉以民.一種基于改進時鐘系統的Linux實時化方案[ J] .計算機工程與應用,2003,34:133-136.

[4]臺飛,李曼.改善嵌入式Linux實時性能的方法研究[ J] .科技風,2009(11):29-30.

[5]劉妮娜.嵌入式Linux操作系統實時性的研究[ D] .沈陽:沈陽工業大學,2006.

[6]黃武陵,何小慶,艾云峰.嵌入式Linux實時化技術[ J] .電子產品世界,2009(2):57-60.

[7]JAY Lin-kwei, WANG Yu-chung.The design and implementation of real-time schedulers in RED-LINUX[ J] .Proceedings of the IEEE,2003,91(7):1114-1129.

[8]HUANG Jim. RT nanokernel for embedded linux[ EB/OL] . [ 2007-02-20] .http://blog.Linux.org.tw/jserv/.

[9]CLARK Chris. Running Linux applications in an embedded real-time environment[ J] . Dedicated Systems Magazine, 2000, 3: 13-17.

主站蜘蛛池模板: 国产小视频免费观看| 精品视频第一页| 91亚洲视频下载| 久久精品亚洲热综合一区二区| 亚洲综合欧美在线一区在线播放| 久久99这里精品8国产| 蝴蝶伊人久久中文娱乐网| 亚洲欧美不卡中文字幕| 亚洲人成网站在线播放2019| 欧美另类精品一区二区三区| 日日噜噜夜夜狠狠视频| 欧美在线伊人| 激情六月丁香婷婷四房播| 99久久免费精品特色大片| 亚洲av色吊丝无码| 鲁鲁鲁爽爽爽在线视频观看| 国产精品福利社| 亚洲精品无码av中文字幕| 日韩小视频在线播放| 91精品亚洲| 青青青视频免费一区二区| 日韩精品无码一级毛片免费| 一级爆乳无码av| 亚洲永久精品ww47国产| 自慰高潮喷白浆在线观看| 福利在线一区| 亚洲最大福利网站| 国产av无码日韩av无码网站| 91综合色区亚洲熟妇p| 亚洲高清中文字幕在线看不卡| 沈阳少妇高潮在线| 国产亚洲精久久久久久无码AV| 国产成人福利在线视老湿机| jizz亚洲高清在线观看| 国产国产人免费视频成18| 天天操精品| 日本道综合一本久久久88| 久久精品日日躁夜夜躁欧美| 99视频在线免费观看| 欧美日韩免费观看| 久久黄色影院| 狠狠色狠狠综合久久| 日韩欧美国产中文| 中文字幕在线日本| 欧美无遮挡国产欧美另类| 亚洲三级色| 国产精品分类视频分类一区| 国产午夜精品一区二区三| 在线国产91| 国产成人做受免费视频 | 欧美一区二区自偷自拍视频| 亚洲日韩精品伊甸| 亚洲毛片一级带毛片基地| 亚洲乱码在线视频| 国产一级毛片yw| 国产成人精品一区二区秒拍1o| 久久无码免费束人妻| 性做久久久久久久免费看| 一本大道东京热无码av| 91小视频在线播放| 国产日韩av在线播放| 国产精品成人观看视频国产| 免费三A级毛片视频| 国产高颜值露脸在线观看| 国产乱人激情H在线观看| 91丝袜在线观看| 亚洲国产精品无码AV| 国产一级小视频| 国产成人综合在线观看| 亚洲国产中文在线二区三区免| 国产十八禁在线观看免费| 亚洲国产精品日韩欧美一区| 青青青国产视频手机| 美女国产在线| av在线人妻熟妇| 激情综合网激情综合| 亚洲精品自拍区在线观看| 乱色熟女综合一区二区| 18禁黄无遮挡网站| 综合人妻久久一区二区精品 | 91免费观看视频| 毛片大全免费观看|