關(guān)于內(nèi)核的可剝奪性
盡管是可剝奪型內(nèi)核,不同的可剝奪型內(nèi)核還有一個在剝奪一個進程處理器使用杈時的 強硬程度的區(qū)別。
本文引用地址:http://www.ex-cimer.com/article/148450.htm前面講過,實時操作系統(tǒng)的內(nèi)核必須是可剝奪型。為此,系統(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)不能容忍的。
評論