新聞中心

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

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

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

        引言

        作為一種通用的,它最初的設計是用于桌面系統或者小型服務器。 要將 用于嵌入式系統中,需要對 內核作一些改進,使它能更好地為嵌入式系統服務。 在這些改進中,進程管理是相當重要的一塊。

        嵌入式系統的硬件設備與普通PC 有較大的差別。 由于要節省成本、降低功耗,嵌入式系統的CPU 可能不帶MMU ,使用的存儲設備ROM、Flach 、RAM 的容量較小,這些因素決定了需要改變Linux 進程管理,來適應存儲系統方面的變化。進程管理中另一個與嵌入式系統密切相關的方面就是了。盡管不是所有的嵌入式系統都需要具有實時能力,但確實是嵌入式系統最重要的特點之一。 兩者的關系如圖1 所示。



        圖1  嵌入式系統與的關系

        目前市場上商用的嵌入式,如VxWork、pSOS 和QNX 等都具有良好的實時性能。因此本文主要著手討論Linux 實時性方面的改造。

        Linux 在實時應用中的不足之處

        雖然目前Linux 內核在實時性方面有所增強,但它仍然不是實時,Linux 內核的設計關注于應用程序的吞吐量連同內核整體設計的完善。作為提高吞吐量的必然要求,Linux 的調度器試圖提供一種“公平分配”策略來保證所有的進程可以均衡地享有CPU 的資源。 普通Linux 內核提供三種調度策略,分別為SCHEDRR、SCHEDFIFO、SCHEDOTHER。 其中第一個策略為實時進程的基于優先級的輪轉法, schedfifo 為實時進程的先進先出算法,schedother 為非實時進程的基于優先級的輪轉法。前兩種為軟實時策略,后者為普通實時策略。

        普通時分策略保證了每個進程相對于其靜態優先級可以公平地獲取CPU 資源。 由于調度器按照優先級驅動的方式,因此軟實時進程的優先級要高于普通進程,通常軟實時進程的優先級在1000 以上而普通進程的優先級在0~999之間。 由調度器調用的goodness ( ) 函數保證實時進程先于普通進程獲得CPU。

        函數goodness() 如下:

        static inline int goodness ( struct task struct 3 p ,int this
        cpu ,struct mm struct 3 this mm)
        int weight ;
        weight=-1;
        if (p->policy SCHED YIELD) goto out ;
        / 3 非實時進程3 /
        if (p=>policy==SCHED OTHER)
        {weight =p->counter ;
        if ( ! weight) goto out ;
        if (p-> mm==this mm !!! p->mm)
        weight+=1 ;
        weight+=20-p->nice ;
        goto out ;
        }
        / 3 軟實時進程3 /
        weight=1000+p->rt priority ;
        goto out ;
        return weight ;
        } -

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

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 凤翔县| 南昌市| 会泽县| 渭南市| 平山县| 枝江市| 台安县| 广丰县| 南投市| 安吉县| 京山县| 汤阴县| 乐业县| 太保市| 南投市| 神木县| 武功县| 韶山市| 巴林右旗| 乌兰察布市| 江川县| 井冈山市| 遂川县| 齐齐哈尔市| 永济市| 理塘县| 额济纳旗| 北京市| 北碚区| 新巴尔虎左旗| 工布江达县| 大方县| 沙湾县| 会昌县| 惠东县| 唐山市| 扎鲁特旗| 石狮市| 九江市| 道孚县| 隆安县|