電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開發(fā)>淺談嵌入式Linux實時技術(shù)改進

淺談嵌入式Linux實時技術(shù)改進

2017-10-30 | rar | 0.3 MB | 次下載 | 1積分

資料介紹

1、簡介
  隨著微處理器技術(shù)的發(fā)展,嵌入式系統(tǒng)已經(jīng)成為計算機應(yīng)用領(lǐng)域的一個重要的組成部分。Linux雖然為分時操作系統(tǒng),但由于其功能強大、源代碼開放以及可移植性強等優(yōu)勢,已成為日益流行的嵌入式實時操作系統(tǒng)的解決方案,然而,在實時方面它還不能很好地滿足實時系統(tǒng)方面的需要,其本身僅僅提供了一些實時處理的支持。為使Linux滿足實時應(yīng)用的要求,常用的方法是通過對Linux的內(nèi)核進行裁減和修改,使其能夠滿足實時性的要求。目前,我們根據(jù)實際需要對于Linux采用以下方法進行改進。
  2、實現(xiàn)低延遲
  使用兩種方法來實現(xiàn)低延遲:一種就是鎖分解,即把大循環(huán)中保持的鎖分解為每一輪循環(huán)中都獲得鎖和釋放鎖,典型的代碼結(jié)構(gòu)示例如下:
  淺談嵌入式Linux實時技術(shù)改進
  另一種是增加搶占點,即自愿被搶占。增加搶占點之后:
  淺談嵌入式Linux實時技術(shù)改進
  語句cond_resched()將判斷是否有進程需要搶占當前進程,如果是將立即發(fā)生調(diào)度,這就是增加的搶占點,它支持四種搶占模式:
 ?。?).No Forced Preemption (Server),這種模式等同于沒有使能搶占選項的標準內(nèi)核,主要適用于科學計算等服務(wù)器環(huán)境。
 ?。?).Voluntary Kernel Preemption (Desktop),這種模式使能了自愿搶占,但仍然失效搶占內(nèi)核選項,它通過增加搶占點縮減了搶占延遲,因此適用于一些需要較好的響應(yīng)性的環(huán)境,如桌面環(huán)境,當然這種好的響應(yīng)性是以犧牲一些吞吐率為代價的。
 ?。?).Preemptible Kernel (Low-Latency Desktop),這種模式既包含了自愿搶占,又使能了可搶占內(nèi)核選項,因此有很好的響應(yīng)延遲,實際上在一定程度上已經(jīng)達到了軟實時性。它主要適用于桌面和一些嵌入式系統(tǒng),但是吞吐率比模式2更低。
 ?。?).Complete Preemption (Real-Time),這種模式使能了所有實時功能,因此完全能夠滿足軟實時需求,它適用于延遲要求為100微秒或稍低的實時系統(tǒng)。
  實現(xiàn)實時是以犧牲系統(tǒng)的吞吐率為代價的,因此實時性越好,系統(tǒng)吞吐率就越低。
  3、中斷線程化
  中斷線程化是實現(xiàn)Linux實時性的一個重要步驟,在Linux標準內(nèi)核中,中斷是最高優(yōu)先級的執(zhí)行單元,不管內(nèi)核當時處理什么,只要有中斷事件,系統(tǒng)將立即響應(yīng)該事件并執(zhí)行相應(yīng)的中斷處理代碼,除非當時中斷關(guān)閉。因此,如果系統(tǒng)有嚴重的網(wǎng)絡(luò)或I/O負載,中斷將非常頻繁,后發(fā)生的實時任務(wù)將很難有機會運行,也就是說,毫無實時性可言。中斷線程化之后,中斷將作為內(nèi)核線程運行而且賦予不同的實時優(yōu)先級,實時任務(wù)可以有比中斷線程更高的優(yōu)先級,這樣,實時任務(wù)就可以作為最高優(yōu)先級的執(zhí)行單元來運行,即使在嚴重負載下仍有實時性保證。
  中斷線程化的另一個重要原因是spinlock被mutex取代。中斷處理代碼中大量地使用了spinlock,當spinlock被mutex取代之后,中斷處理代碼就有可能因為得不到鎖而需要被掛到等待隊列上,但是只有可調(diào)度的進程才可以這么做,如果中斷處理代碼仍然使用原來的spinlock,則spinlock取代mutex的努力將大打折扣,因此為了滿足這一要求,中斷必須被線程化,包括IRQ和softirq。
  中斷線程化的實現(xiàn)方法是:對于IRQ,在內(nèi)核初始化階段init(該函數(shù)在內(nèi)核源碼樹的文件init/main.c中定義)調(diào)用init_hardirqs(該函數(shù)在內(nèi)核源碼樹的文件kernel/irq/manage.c中定義)來為每一個IRQ創(chuàng)建一個內(nèi)核線程,IRQ號為0的中斷賦予實時優(yōu)先級49,IRQ號為1的賦予實時優(yōu)先級48,依次類推直到25,因此任何IRQ線程的最低實時優(yōu)先級為25。原來的do_IRQ被分解成兩部分,架構(gòu)相關(guān)的放在類似于arch/*/kernel/irq.c的文件中,名稱仍然為do_IRQ,而架構(gòu)獨立的部分被放在IRQ子系統(tǒng)的位置kernel/irq/handle.c中,名稱為_do_IRQ。當發(fā)生中斷時,CPU將執(zhí)行do_IRQ來處理相應(yīng)的中斷,do_IRQ將做了必要的架構(gòu)相關(guān)的處理后調(diào)用_do_IRQ。函數(shù)_do_IRQ將判斷該中斷是否已經(jīng)被線程化(如果中斷描述符的狀態(tài)字段不包含SA_NODELAY標志說明中斷被線程化了),如果是將喚醒相應(yīng)的處理線程,否則將直接調(diào)用handle_IRQ_event(在IRQ子系統(tǒng)位置的kernel/irq/handle.c文件中)來處理。對于已經(jīng)線程化的情況,中斷處理線程被喚醒并開始運行后,將調(diào)用do_hardirq(在源碼樹的IRQ子系統(tǒng)位置的文件kernel/irq/manage.c中定義)來處理相應(yīng)的中斷,該函數(shù)將判斷是否有中斷需要被處理(中斷描述符的狀態(tài)標志IRQ_INPROGRESS),如果有就調(diào)用handle_IRQ_event來處理。handle_IRQ_event將直接調(diào)用相應(yīng)的中斷處理句柄來完成中斷處理。
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1TC358743XBG評估板參考手冊
  2. 1.36 MB  |  330次下載  |  免費
  3. 2開關(guān)電源基礎(chǔ)知識
  4. 5.73 MB  |  6次下載  |  免費
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計
  8. 0.60 MB  |  3次下載  |  免費
  9. 5基于FPGA的光纖通信系統(tǒng)的設(shè)計與實現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費
  11. 6基于FPGA的C8051F單片機開發(fā)板設(shè)計
  12. 0.70 MB  |  2次下載  |  免費
  13. 751單片機窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費
  15. 8基于51單片機的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21548次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6653次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191185次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183278次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費