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的調度粒度,對於許多實時系統來說,通常需要做微秒級的響應,這種調度精度很難滿足實時系統對系統響應速度的要求。