<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Linux在嵌入式系統(tǒng)中有關(guān)進(jìn)程調(diào)度算法的實(shí)時(shí)性改進(jìn)

          Linux在嵌入式系統(tǒng)中有關(guān)進(jìn)程調(diào)度算法的實(shí)時(shí)性改進(jìn)

          作者: 時(shí)間:2012-04-06 來(lái)源:網(wǎng)絡(luò) 收藏

          引言

          作為一種通用的,它最初的設(shè)計(jì)是用于桌面系統(tǒng)或者小型服務(wù)器。 要將 用于嵌入式系統(tǒng)中,需要對(duì) 內(nèi)核作一些改進(jìn),使它能更好地為嵌入式系統(tǒng)服務(wù)。 在這些改進(jìn)中,進(jìn)程管理是相當(dāng)重要的一塊。

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



          圖1  嵌入式系統(tǒng)與的關(guān)系

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

          Linux 在實(shí)時(shí)應(yīng)用中的不足之處

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

          普通時(shí)分策略保證了每個(gè)進(jìn)程相對(duì)于其靜態(tài)優(yōu)先級(jí)可以公平地獲取CPU 資源。 由于調(diào)度器按照優(yōu)先級(jí)驅(qū)動(dòng)的方式,因此軟實(shí)時(shí)進(jìn)程的優(yōu)先級(jí)要高于普通進(jìn)程,通常軟實(shí)時(shí)進(jìn)程的優(yōu)先級(jí)在1000 以上而普通進(jìn)程的優(yōu)先級(jí)在0~999之間。 由調(diào)度器調(diào)用的goodness ( ) 函數(shù)保證實(shí)時(shí)進(jìn)程先于普通進(jìn)程獲得CPU。

          函數(shù)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 非實(shí)時(shí)進(jìn)程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 軟實(shí)時(shí)進(jìn)程3 /
          weight=1000+p->rt priority ;
          goto out ;
          return weight ;
          } -

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

          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();