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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 關(guān)于內(nèi)核的可剝奪性

          關(guān)于內(nèi)核的可剝奪性

          作者: 時間:2012-09-06 來源:網(wǎng)絡(luò) 收藏

          盡管是可,不同的可還有一個在一個進程處理器使用杈時的 強硬程度的區(qū)別。

          本文引用地址:http://www.ex-cimer.com/article/148450.htm

          前面講過,實時操作系統(tǒng)的必須是可剝奪型。為此,系統(tǒng)中的每個進程都必須有一個 表示其緊急程度的優(yōu)先級別,以使調(diào)度器可根據(jù)等待進程的優(yōu)先級別來決定是否要剝奪當前 進程的處理器使用權(quán)。其實,這個優(yōu)先級別只表示了進程有可能獲得處理器使用權(quán)的大小,至 于調(diào)度器在剝奪時的強硬程度是與操作系統(tǒng)啟動調(diào)度器的時機相關(guān)的。

          可以想到,隨時的、全然不顧的剝奪一定是最強硬的剝奪。那么在哪個時機可以這樣做呢?系統(tǒng)時鐘中斷!在系統(tǒng)中所有進程都具有各自唯一優(yōu)先級別的基礎(chǔ)上,在系統(tǒng)實時時鐘中斷服務(wù)中啟動調(diào)度器型調(diào)度,可使調(diào)度器一旦發(fā)現(xiàn)待運行進程中有高于當前進程優(yōu)先級別的進程存在,就會馬上剝奪當前進程的處理器使用權(quán)。當然,考慮到諸多問題,這樣做是不妥當?shù)摹?/p>

          另一個方法是,在系統(tǒng)中的每個進程各自具有一個唯一優(yōu)先級別的前提下,把調(diào)度的時機 選在進程調(diào)用系統(tǒng)服務(wù)及用戶中斷服務(wù)的末尾,即放在系統(tǒng)服務(wù)程序模塊和用戶中斷服務(wù)程 序的尾部。這樣就可在不破壞系統(tǒng)服務(wù)的原子性前提下,實現(xiàn)了較為強硬的可剝奪型內(nèi)核。

          使內(nèi)核的剝奪行為更為柔和的一種方法是,按進程任務(wù)的緊急程度把系統(tǒng)中的進程分為 若干個組,每個組中的進程都具有同一優(yōu)先級別,并且把組中的進程按先進先出的方式組成一個隊列,再給每一個進程都分配一個占用處理器的時間片。系統(tǒng)在進程把分配給自己的時間 片用完之前啟動調(diào)度器,調(diào)度器按照優(yōu)先級別選擇進程隊列,在確定了進程隊列之后,在隊列中按先來先服務(wù)的原則再來確定獲得處理器使用權(quán)進程。顯然,這種調(diào)度方法雖然也是剝奪型的調(diào)度,但是它允許進程把自己的時間片運行完,所以相對來說,這種剝奪行為顯得柔和得多。

          上面的敘述只是為了說明一個概念,同是剝奪型內(nèi)核,但是在調(diào)度方法不同時,它們的實時性也是不一樣的。因此,在設(shè)計和選用實時操作系統(tǒng)時,要根據(jù)實際應用的情況綜合考慮。

          例如,對于硬實時應用來說,操作系統(tǒng)內(nèi)核的剝奪就要強硬一些;反之,就要柔和一些。

          必須說明的是,在以進程的優(yōu)先級別為基礎(chǔ)的進程調(diào)度中,在具備條件的情況下會產(chǎn)生一種低優(yōu)先級別的進程先于高優(yōu)先級別的進程占用處理器的現(xiàn)象,即優(yōu)先級反轉(zhuǎn)。這種現(xiàn)象是實時系統(tǒng)不能容忍的。



          關(guān)鍵詞: 剝奪 內(nèi)核 關(guān)于

          評論


          相關(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); })();