新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Linux在嵌入式系統中有關進程調度算法的實時性改進

        Linux在嵌入式系統中有關進程調度算法的實時性改進

        作者: 時間:2012-04-06 來源:網絡 收藏


        從上面的goodness() 函數可以看出普通 內核的算法只是軟實時的,并不是硬實時的。 尤其不能作為硬實時應用,主要有以下幾個原因:

        (1) L INUX 內核的實時進程的調度算法當中,SCHED RR 和SCHED RR 調度策略的主要不同點在于,SCHED RR 進程在一個時間片運行完以后被放到運行隊列的最后。 L INUX的每一個進程都有一個調度策略,在進程描述結構task struct 中規定policy 屬性。 所有的進程不管采用哪一種調度策略,都放在同一個運行隊列中。這樣做,就對實時進程的響應產生了影響。

        (2) 的內核是非搶占式的( non-preemptive) 。

        (3) 策略不是完全搶占式的。

        (4) Linux 的虛擬內存技術(virtual memory)增加了系統的不確定性。

        (5) Linux 采用的時鐘中斷的精度不高。

        (6) Linux 系統的一些額外操作會延遲實時進程的執行。

        綜上所述,不經處理的Linux 是不適合做實時的,即便是軟實時,在系統負荷重的情況下也不能保證其。 但通過對Linux 內核的改造完全可以提高Linux 的,甚至可以滿足實時的要求。

        LINUX 改造的實現方法

        實現LINUX 的實時性一般有兩種方法: 一種是對普通的LINUX 的內核的數據結構、調度函數、中斷方式等進行修改使其能夠處理實時進程。另一種是在LINUX 內核之外,進行實時性擴展。 也就是在普通LINUX 的基礎之上再設計一個用于專門處理實時進程的內核。 為了提高LINUX 的實時性,并且使之能夠在嵌入式系統中更好地滿足硬實時系統的要求,采用上述兩種方法結合的兩種方式來提高系統的實時性。

        外部實時性擴展

        對LINUX 做外部實時性擴展最主要的思想是在硬件中斷與原來的LINUX 內核之間增加一個實時內核。 在原來的LINUX 內核的基礎上,增加一個實時內核可以解決LINUX 原有內核的關中斷的問題。

        對于實時內核來說,它始終不關閉硬件中斷,可以接受所有的中斷信號。 當中斷信號需要實時進程來處理時,實時進程將搶占LINUX 內核,在RTLINUX中把原來的LINUX 內核作為一個普通進程來對待,并且它的優先級是最低的。 如果中斷信號需要原來的LINUX 內核來處理,則由實時內核信號傳遞給LINUX 內核。 同時內核中提供一個標志位用來模擬原來的LINUX 內核的關中斷情況。這個標志字在LINUX 打開中斷的時候置1 ,關中斷的時候置0。 實時內核在中斷到來的時候檢查這個標志位,如果是置1 的,那立刻將中斷傳給LINUX 內核,否則的話,將所有待處理的中斷放入一個隊列中,一直到LINUX 打開中斷時才將它們一起傳給內核。

        內部實時性改造

        對Linux 內部實時性改造有兩個方面的工作: (1) 對時鐘機制的改造。 (2) 在內核方面的搶占性改造。 改造的目的是為了縮短Linux 內核的響應延時。

        (1) 在時鐘機制的改造方面,可以通過提高系統時鐘的精度來增強系統的實時性,特別是對外部中斷的響應。因為精確的時鐘是進行準確的調度工作的必不可少的條件。 執行調度就要求在特定的時間進行任務切換。不精確的時鐘會導致調度偏差,從而導致無法預計的結果。所以提高時鐘精度,減少調度偏差是非常重要的。在中,時鐘精度不高的原因之一是因為:周期性時鐘中斷的使用。操作系統不得不將大量的時間開銷用于處理時鐘中斷。 Linux。 操作系統也是如此。 在Linux 中,它的中斷頻率被設為100Hz。即大約每10ms 產生一次定時中斷。

        (2) 在內核搶占性方面的改造有兩種方法:一種是搶占點的方法。另一種是搶占式內核的設計。所謂搶占就是內核在某個合適的地方調用schedule() 函數來檢查是否有高優先級的任務已經處于ready 狀態并讓這個高優先級任務運行。為了提高系統的實時性,搶占的選擇要合理,既不能時間間隔太短,也不能太長,因此,在設置搶占點的時候要測試內核中的運行路徑,在較長的運行路徑中插入schedule() 。 進行調度,這個地方就是搶占點。

        另一種是搶占式內核的設計,即允許處于系統調用狀態的用戶進程被剛剛喚醒的高優先級進程所搶占。 但是這種搶占方式并不是在內核代碼的所有地方都是安全的,如在臨界區就不能搶占。

        結論

        綜上所述,不經改進的Linux 操作系統是不適合做實時操作系統的,即便是軟實時,在系統負荷重的情況下也不能保證其實時性。 但通過對Linux 的改造可以完全提高Linux 的實時性,甚至可以滿足硬實時的要求。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 景东| 焦作市| 道真| 南溪县| 平顺县| 德令哈市| 沈丘县| 外汇| 滦平县| 通许县| 武陟县| 凤翔县| 民勤县| 泸西县| 威远县| 八宿县| 田东县| 永胜县| 澄迈县| 嘉禾县| 寻乌县| 盘山县| 永年县| 岑巩县| 东源县| 永新县| 石柱| 桃源县| 凤城市| 商南县| 高平市| 长寿区| 基隆市| 怀宁县| 玉树县| 霍林郭勒市| 仪征市| 石台县| 菏泽市| 泰宁县| 寿光市|