linux以自由和開發原始碼贏得了許多任務程師的青睞,現在許多嵌入式產品使用的是linux系統,然而linux核心作為實時作業系統有非常,明顯的幾個缺點
1.任務排程的缺點
linux最初的設計預想是設計乙個通用的作業系統核心,盡量縮短系統的平均響應時間,在單位時間內位盡可能多的使用者請求提供服務;在設計上並沒有太考慮實時性的需要,而是在分時作業系統基礎上發展而來,linux核心在任務排程上實現的是一種幾乎公平的分配任務時間,在特殊場合下linux核心在任務排程上實現的是一種幾乎公平的分配任務時間,在特殊場合下linux核心很難滿足系統在響應時間和優先順序上的要求。
linux核心作為實時作業系統的乙個最大缺點就是:linux在使用者態支援可搶占排程策略,而在核心太卻不支援搶占式排程策略,比如:linux在執行乙個低優先順序別的核心態任務,而此時又有一些優先順序更高的實時任務要處理,但核心不支援搶占性,只有等到正在執行的低優先順序的任務執行結束後,才能執行優先級別高的任務,這樣就不能保證系統對於實時性任務的響應時間,這在實時作業系統中一般是不允許發生的。
linux雖然給實時性程序提供可較高的優先順序,但是並沒有加入時間限制。例如完成的最後期限,應在多長時間內完成和執行週期等。同時,其他大量的非實時程序也可能對實時程序造成阻塞,無法確保實時程序的響應時間。
2.中斷處理的缺點
linux核心對於中斷處理採用 bottom half handling方法(詳細請自己查谷歌),這種處理方法在處理中斷過程中,遮蔽了系統其它中斷,而且優先級別高的任務也不能搶占處理,所以linux中斷控制代碼是不可排程的;但在實時系統中,有事期望能在乙個可排程整體內處理這些中斷控制代碼,從而能更有效地區分不同實時任務的密度,分配不同的優先順序。因此,單純採用bottom half hadling縮短時間片方法在對實時性恩能夠嚴格要求的場合仍有些不適合。
3.記憶體管理的缺點
linux系統採用虛擬記憶體管理機制,在虛擬記憶體中,系統會根據當前任務使用的記憶體情況,把一些任務或使用者程序交換出記憶體,保持在磁碟檔案系統頁面上,在以後需要時,再將它們調入記憶體,這種方法提高了記憶體的使用效率,但調入過程需要花費一定的時間。這種採用時間換空間的方法,在實時應用場景下,往往造成任務的響應時間加長或有限時間內無法執行完畢。
4.時鐘精度
linux中硬體時鐘中斷的預設時間間隔是10ms,所有的軟體時鐘都是靠硬體來觸發的。linux核心的任務排程也依靠這個時鐘,時鐘頻率直接影響到系統響應速度和上下文切換的系統開銷。最小時間片為10ms,決定了linux任務排程能提供最小10ms的排程粒度,對於許多實時系統來說,通常需要做微秒級的響應,這種排程精度很難滿足實時系統對系統響應速度的要求。
嵌入式Linux實時效能優化
1 引言 分析了linux的實時性,針對其在實時應用中的技術障礙,在參考了與此相關研究基礎上,從三方面提出了改善linux實時效能的改進措施。為提高嵌入式應用響應時間精度,提出兩種細化linux時鐘粒度方法 為增強系統核心對實時任務的響應能力,採用插入搶占點和修改核心法增強linux核心的可搶占性 ...
嵌入式 Linux 實時化之路 總覽
引子 最近做了linux的實時方面的一些摸索,從xenomai rt patch都進行了應用,花了不少功夫,也走了不少彎路。特在此記錄下,既給自己做個記錄總結,如能給任然針扎在linux 實時性方面探索的一些參考也算善莫大焉。使用linux已經不是啥新鮮事了,但一遇到效能問題總拿linux實時性說事...
實時嵌入式系統簡介
嵌入式系統設計中最早的決策點之一是系統是否需要實時計算功能。實時計算描述了在有限的時間範圍內對輸入做出反應並提供規定的輸出的能力。使用實時計算的裝置部署在應用程式中,在這些應用程式中,它們的正確功能可以改變生與死。例如,考慮傳統家庭轎車中的安全氣囊。當車輛在發生碰撞時突然停止時,安全氣囊必須在一瞬間...