两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

動(dòng)態(tài)調(diào)整進(jìn)程的優(yōu)先值的調(diào)度方法

文檔序號:6580430閱讀:262來源:國知局
專利名稱:動(dòng)態(tài)調(diào)整進(jìn)程的優(yōu)先值的調(diào)度方法
技術(shù)領(lǐng)域
本發(fā)明是關(guān)于一種調(diào)度方法,特別是關(guān)于一種動(dòng)態(tài)調(diào)整進(jìn)程的優(yōu)先值的調(diào)度方 法。
背景技術(shù)
許多現(xiàn)今計(jì)算機(jī)的操作系統(tǒng)利用多任務(wù)調(diào)度器來提供多的計(jì)算機(jī)的任務(wù)(task, 例如程序或進(jìn)程)同時(shí)運(yùn)行。其概念是將很短的時(shí)間片(time slice)連續(xù)分配給各個(gè)程序 /進(jìn)程(process)的線程(thread)執(zhí)行。由于每個(gè)時(shí)間片的長度很小(一般在20至120 毫秒),因此以人類對時(shí)間的感知而言,這些任務(wù)看起來是同時(shí)運(yùn)行。而分配時(shí)間片給任務(wù) 的調(diào)度方法中,以根據(jù)任務(wù)的優(yōu)先值決定執(zhí)行順序的方法為大部分。例如在Linux操作系統(tǒng)中,可以由進(jìn)程所具有的一任務(wù)結(jié)構(gòu)(task struct)來 得知進(jìn)程的種類以及優(yōu)先值。任務(wù)結(jié)構(gòu)中可包括四個(gè)參數(shù)策略(policy)、動(dòng)態(tài)優(yōu)先級 (counter)、靜態(tài)優(yōu)先級(priority),以及實(shí)時(shí)優(yōu)先級(rt_priority)。其中策略參數(shù)紀(jì)錄 此進(jìn)禾呈為一實(shí)時(shí)進(jìn)禾呈(real time process)或是一普通進(jìn)禾呈(conventional process)。若 進(jìn)程為實(shí)時(shí)進(jìn)程,則其優(yōu)先權(quán)為實(shí)時(shí)優(yōu)先級;而若進(jìn)程為普通進(jìn)程,則其優(yōu)先權(quán)為動(dòng)態(tài)優(yōu)先 級以及靜態(tài)優(yōu)先級。靜態(tài)優(yōu)先值即為一般所稱的(普通進(jìn)程的)優(yōu)先級,代表進(jìn)程所能獲得而被中央 處理器(Central Processing Unit,CPU)執(zhí)行的時(shí)間片的數(shù)量。而動(dòng)態(tài)優(yōu)先級表示進(jìn)程剩 下的可被執(zhí)行的時(shí)間片的數(shù)量,其初始值為靜態(tài)優(yōu)先級。普通進(jìn)程每獲得一次時(shí)間片,動(dòng)態(tài) 優(yōu)先級都會(huì)減1。當(dāng)所有的普通進(jìn)程的動(dòng)態(tài)優(yōu)先級都?xì)w零后,操作系統(tǒng)便會(huì)依據(jù)靜態(tài)優(yōu)先級 恢復(fù)動(dòng)態(tài)優(yōu)先級的值。任務(wù)的反應(yīng)時(shí)間對使用者而言是非常重要的。然而若是在待執(zhí)行的進(jìn)程當(dāng)中有優(yōu) 先權(quán)特別高的進(jìn)程,這種進(jìn)程會(huì)持續(xù)地占用CPU資源,使得其它的進(jìn)程無法被執(zhí)行,而一直 無法響應(yīng)給使用者。又或是在待執(zhí)行的進(jìn)程當(dāng)中有優(yōu)先權(quán)特別低的進(jìn)程時(shí),優(yōu)先權(quán)低的進(jìn) 程可能幾乎等不到被執(zhí)行的機(jī)會(huì),而一直處于饑餓的狀態(tài)。在此提供一十分有名的案例。在 美國加州柏克萊大學(xué)(Universityof California, Berkeley)的某一實(shí)驗(yàn)室執(zhí)行久違的大 清查時(shí),發(fā)現(xiàn)某臺(tái)服務(wù)器中竟有一個(gè)進(jìn)程于三十年間都沒有被執(zhí)行到,而持續(xù)著饑餓的狀 態(tài)?;谏鲜?,傳統(tǒng)的依據(jù)優(yōu)先值的調(diào)度方法具優(yōu)先權(quán)高的進(jìn)程容易過度占用CPU資 源,使得其它的進(jìn)程難以被執(zhí)行,而造成進(jìn)程的平均反應(yīng)時(shí)間被拉長的問題。

發(fā)明內(nèi)容
為了達(dá)成上述的目的,本發(fā)明提供一種動(dòng)態(tài)調(diào)整進(jìn)程的優(yōu)先值的調(diào)度方法,適用 于中央處理器與隊(duì)列。其中隊(duì)列中包括至少一進(jìn)程,且每一進(jìn)程均具有優(yōu)先值。本發(fā)明以 監(jiān)控總占有率與觀察占有率判斷是否有高優(yōu)先值的進(jìn)程過度占用CPU資源,并階段式地調(diào) 降/恢復(fù)觀察進(jìn)程的優(yōu)先級。因此上述的實(shí)施范例可以有效增加低優(yōu)先值的進(jìn)程被執(zhí)行的機(jī)率以及時(shí)間長度,進(jìn)而縮短平均反應(yīng)時(shí)間。根據(jù)本發(fā)明的一實(shí)施范例,調(diào)度方法首先執(zhí)行監(jiān)控進(jìn)程。監(jiān)控進(jìn)程偵測CPU的總 占用率,并判斷總占用率是否為100%。當(dāng)總占用率為100%時(shí),執(zhí)行下列步驟監(jiān)控進(jìn)程 偵測觀察進(jìn)程的觀察占用率,其中觀察進(jìn)程為隊(duì)列中的至少一個(gè)進(jìn)程。且每一觀察進(jìn)程具 有一調(diào)整次數(shù)值,該調(diào)整次數(shù)值的初始值為0,監(jiān)控進(jìn)程并判斷觀察占用率是否大于第一閾 值。當(dāng)觀察占用率大于第一閾值時(shí),監(jiān)控進(jìn)程將調(diào)整標(biāo)志值設(shè)為1并進(jìn)行休眠。而監(jiān)控進(jìn) 程于經(jīng)過一段休眠時(shí)間后再度被執(zhí)行。根據(jù)本發(fā)明的一實(shí)施范例,當(dāng)總占用率不為100%時(shí),調(diào)度方法另可執(zhí)行下列步 驟。監(jiān)控進(jìn)程判斷總占用率是否小于第一閾值;而當(dāng)總占用率小于第一閾值時(shí),監(jiān)控進(jìn)程將 調(diào)整標(biāo)志值設(shè)為0并進(jìn)入休眠。而監(jiān)控進(jìn)程亦于經(jīng)過一休眠時(shí)間后再度被執(zhí)行。監(jiān)控進(jìn)程進(jìn)入休眠后,CPU繼續(xù)執(zhí)行其它進(jìn)程。而同時(shí)調(diào)度方法判斷執(zhí)行中的進(jìn) 程是否為觀察進(jìn)程。當(dāng)執(zhí)行中的進(jìn)程為觀察進(jìn)程時(shí),再判斷調(diào)整標(biāo)志值是否等于1。而當(dāng)執(zhí) 行中的進(jìn)程為觀察進(jìn)程,且調(diào)整標(biāo)志值等于1時(shí),調(diào)度方法執(zhí)行調(diào)整進(jìn)程以調(diào)降觀察進(jìn)程 的優(yōu)先值。此外,當(dāng)執(zhí)行中的進(jìn)程為觀察進(jìn)程且調(diào)整標(biāo)志值等于0時(shí),調(diào)度方法另可執(zhí)行恢 復(fù)進(jìn)程以恢復(fù)被調(diào)降過的觀察進(jìn)程的優(yōu)先權(quán)。較佳的是,每一進(jìn)程具有調(diào)整次數(shù)值,且調(diào)整次數(shù)值的初始值為0。根據(jù)本發(fā)明的 一實(shí)施范例,執(zhí)行調(diào)整進(jìn)程以調(diào)降觀察進(jìn)程的優(yōu)先值的步驟可包括判斷調(diào)整次數(shù)值是否 等于0 ;當(dāng)調(diào)整次數(shù)值等于0時(shí),將觀察進(jìn)程的優(yōu)先值紀(jì)錄為初始優(yōu)先值;判斷調(diào)整旗次數(shù) 是否小于第二閾值;當(dāng)調(diào)整旗次數(shù)小于第二閾值時(shí),執(zhí)行第一調(diào)降方法;以及當(dāng)調(diào)整次數(shù) 值不小于第二閾值時(shí),調(diào)整進(jìn)程執(zhí)行第二調(diào)降方法。上述第一調(diào)降方法可先判斷觀察進(jìn)程是否為普通進(jìn)程(conventionalprocess)。 當(dāng)觀察進(jìn)程為普通進(jìn)程時(shí),觀察進(jìn)程的優(yōu)先值為動(dòng)態(tài)優(yōu)先級(counter)以及靜態(tài)優(yōu)先級 (priority),調(diào)整進(jìn)程并將觀察進(jìn)程的動(dòng)態(tài)優(yōu)先級設(shè)為0,以及增加調(diào)整次數(shù)值。第一調(diào)降方法另可包括當(dāng)觀察進(jìn)程不為普通進(jìn)程時(shí),判斷觀察進(jìn)程為一實(shí)時(shí)進(jìn)程 (real-time process)。當(dāng)觀察進(jìn)程為實(shí)時(shí)進(jìn)程時(shí),觀察進(jìn)程的優(yōu)先值是為實(shí)時(shí)優(yōu)先級(rt_ priority),調(diào)整進(jìn)程并降低實(shí)時(shí)優(yōu)先級,以及增加調(diào)整次數(shù)值。根據(jù)本發(fā)明的一實(shí)施范例,上述第二調(diào)降方法則可判斷觀察進(jìn)程是否為普通進(jìn) 程;而當(dāng)觀察進(jìn)程為普通進(jìn)程時(shí),觀察進(jìn)程的優(yōu)先值為動(dòng)態(tài)優(yōu)先級以及靜態(tài)優(yōu)先級。調(diào)整進(jìn) 程并將動(dòng)態(tài)優(yōu)先級設(shè)為0,以及將靜態(tài)優(yōu)先級設(shè)為隊(duì)列中具有最低的靜態(tài)優(yōu)先級的普通進(jìn) 程的靜態(tài)優(yōu)先級,以及增加調(diào)整次數(shù)值。第二調(diào)降方法另可包括當(dāng)觀察進(jìn)程不為普通進(jìn)程時(shí),判斷觀察進(jìn)程為實(shí)時(shí)進(jìn)程; 而當(dāng)觀察進(jìn)程為實(shí)時(shí)進(jìn)程時(shí),調(diào)整進(jìn)程可執(zhí)行下列步驟。調(diào)整進(jìn)程將觀察進(jìn)程改設(shè)為普通 進(jìn)程,并將觀察進(jìn)程的優(yōu)先值改設(shè)為動(dòng)態(tài)優(yōu)先級以及靜態(tài)優(yōu)先級。調(diào)整進(jìn)程接著將動(dòng)態(tài)優(yōu) 先級設(shè)為0,以及將靜態(tài)優(yōu)先級設(shè)為隊(duì)列中具有最高的靜態(tài)優(yōu)先級的普通進(jìn)程的靜態(tài)優(yōu)先 級,以及增加調(diào)整次數(shù)值。根據(jù)本發(fā)明的一實(shí)施范例,執(zhí)行恢復(fù)進(jìn)程以恢復(fù)被調(diào)降過的觀察進(jìn)程的優(yōu)先權(quán)的 步驟可包括判斷觀察進(jìn)程是否為實(shí)時(shí)進(jìn)程;當(dāng)觀察進(jìn)程為實(shí)時(shí)進(jìn)程時(shí),依據(jù)初始優(yōu)先值 恢復(fù)優(yōu)先值,并將調(diào)整次數(shù)值設(shè)為0 ;當(dāng)觀察進(jìn)程不為實(shí)時(shí)進(jìn)程時(shí),判斷觀察進(jìn)程第一次被 執(zhí)行調(diào)整進(jìn)程時(shí)是否為普通進(jìn)程;以及當(dāng)觀察進(jìn)程第一次被執(zhí)行調(diào)整進(jìn)程時(shí)為普通進(jìn)程時(shí),依據(jù)初始優(yōu)先值恢復(fù)優(yōu)先值,并將調(diào)整次數(shù)值設(shè)為0。此外,當(dāng)觀察進(jìn)程第一次被執(zhí)行調(diào)整進(jìn)程時(shí)為普通進(jìn)程時(shí),依據(jù)初始優(yōu)先值恢復(fù) 優(yōu)先值之后,恢復(fù)進(jìn)程另可判斷總占用率是否為小于第一閾值。且當(dāng)總占用率小于第一閾 值時(shí),恢復(fù)進(jìn)程判斷是否觀察進(jìn)程為普通進(jìn)程,且觀察進(jìn)程第一次被執(zhí)行調(diào)整進(jìn)程時(shí)為實(shí) 時(shí)進(jìn)程。若是,恢復(fù)持續(xù)將觀察進(jìn)程恢復(fù)為實(shí)時(shí)進(jìn)程,并依據(jù)初始優(yōu)先值恢復(fù)優(yōu)先值,并將 調(diào)整次數(shù)值設(shè)為0。根據(jù)本發(fā)明的動(dòng)態(tài)調(diào)整進(jìn)程的優(yōu)先值的調(diào)度方法,具有高優(yōu)先權(quán)且較可能過度占 用CPU的進(jìn)程被設(shè)定為觀察進(jìn)程。監(jiān)控進(jìn)程監(jiān)控總占有率與觀察占有率以觀察進(jìn)程是否過 度占用CPU資源,并階段式地調(diào)降/恢復(fù)觀察進(jìn)程的優(yōu)先級。故此調(diào)度方法可有效增加低優(yōu) 先值的進(jìn)程被執(zhí)行的機(jī)率以及時(shí)間長度,進(jìn)而縮短平均反應(yīng)時(shí)間。此外,借由階段式的調(diào)降 進(jìn)程,可以避免明顯影響觀察進(jìn)程的執(zhí)行是效率;而借由階段式的恢復(fù)進(jìn)程,可以避免CPU 負(fù)載突然升高,或是避免觀察進(jìn)程再度獨(dú)占CPU資源。以下結(jié)合附圖和具體實(shí)施例對本發(fā)明進(jìn)行詳細(xì)描述,但不作為對本發(fā)明的限定。


圖1為根據(jù)本發(fā)明一實(shí)施范例的進(jìn)程示意圖;圖2為根據(jù)本發(fā)明一實(shí)施范例的主流程示意圖;圖3為根據(jù)本發(fā)明一實(shí)施范例的監(jiān)控進(jìn)程的流程示意圖;圖4為根據(jù)本發(fā)明一實(shí)施范例的調(diào)整進(jìn)程的流程示意圖;圖5為根據(jù)本發(fā)明一實(shí)施范例的第一調(diào)降方法的流程示意圖;圖6為根據(jù)本發(fā)明一實(shí)施范例的第二調(diào)降方法的流程示意圖;圖7為根據(jù)本發(fā)明一實(shí)施范例的恢復(fù)進(jìn)程的流程示意圖。其中,附圖標(biāo)記20 中央處理器(CPU)22 隊(duì)列24 進(jìn)程26 觀察進(jìn)程28 線程
具體實(shí)施例方式以下在實(shí)施方式中詳細(xì)敘述本發(fā)明的詳細(xì)特征以及優(yōu)點(diǎn),其內(nèi)容足以使任何熟悉 相關(guān)技藝者了解本發(fā)明的技術(shù)內(nèi)容并據(jù)以實(shí)施,且根據(jù)本說明書所揭露的內(nèi)容、申請專利 范圍及圖式,任何熟悉相關(guān)技藝者可輕易地理解本發(fā)明相關(guān)的目的及優(yōu)點(diǎn)。根據(jù)本發(fā)明提供一種動(dòng)態(tài)調(diào)整進(jìn)程的優(yōu)先值的調(diào)度方法,適用于中央處理器 (CPU)與隊(duì)列(queue)。請參照圖1,其為根據(jù)本發(fā)明一實(shí)施范例的進(jìn)程示意圖。由圖1可 以見悉,隊(duì)列22中具有至少一進(jìn)程(process) 24等待CPU 20執(zhí)行,其中每一個(gè)進(jìn)程24都 具有至少一個(gè)線程(thread)28。且在隊(duì)列22之中,至少有一個(gè)進(jìn)程24被選為一觀察進(jìn)程 26。其中CPU 20可以是運(yùn)行于一個(gè)人計(jì)算機(jī)或是服務(wù)器等不同的計(jì)算器是統(tǒng)。就一般的操作系統(tǒng)來說,進(jìn)程24可具有多個(gè)線程28,這些線程28會(huì)共享進(jìn)程24所擁有的硬件資源,例如內(nèi)存空間或是對輸入輸出裝置的存取。進(jìn)程24具有一優(yōu)先值,而 優(yōu)先值乃依據(jù)進(jìn)程24的種類等被操作系統(tǒng)決定。進(jìn)程24內(nèi)所有的線程28的優(yōu)先值都與 進(jìn)程24相同,操作系統(tǒng)依據(jù)此優(yōu)先值決定執(zhí)行線程28的順序。Linux操作系統(tǒng)中,進(jìn)程24所具有的任務(wù)結(jié)構(gòu)(task struct)可包括四個(gè)參數(shù) 策略(policy)、動(dòng)態(tài)優(yōu)先級(counter)、靜態(tài)優(yōu)先級(priority),以及實(shí)時(shí)優(yōu)先級(rt_ priority)。由策略參數(shù)可得知進(jìn)程24為一實(shí)時(shí)進(jìn)程(realtime process)或是一普通進(jìn) 程(conventional process) 0而由實(shí)時(shí)優(yōu)先級、靜態(tài)優(yōu)先級以及動(dòng)態(tài)優(yōu)先級可以得知進(jìn)程 24優(yōu)先值。隊(duì)列22是指集合了處于可執(zhí)行狀態(tài)(ready state)的進(jìn)程24的可執(zhí)行隊(duì)列 (ready queue)。當(dāng)進(jìn)程24被生成或由等待狀態(tài)(wait state,又稱休眠狀態(tài))被喚醒后, 就會(huì)處于等待被CPU 20執(zhí)行的可執(zhí)行狀態(tài),并進(jìn)入隊(duì)列22。操作系統(tǒng)根據(jù)優(yōu)先值決定下一 個(gè)要讓CPU 20執(zhí)行的進(jìn)程24為何。但此處的操作系統(tǒng)依據(jù)優(yōu)先級讓CPU 20執(zhí)行進(jìn)程24 為一概念性的說法。實(shí)際上CPU 20是執(zhí)行各個(gè)進(jìn)程24所具有的線程28。也就是說,操作 系統(tǒng)根據(jù)隊(duì)列22中每一個(gè)線程28所屬的進(jìn)程24的優(yōu)先值,決定接下來要讓CPU 20執(zhí)行 的線程28。在隊(duì)列22的進(jìn)程24之中,至少有一個(gè)進(jìn)程24被選為觀察進(jìn)程26。觀察進(jìn)程26 為具有高優(yōu)先值,且可能占用大量CPU資源的進(jìn)程24。為了避免高優(yōu)先值的進(jìn)程24不斷重 復(fù)被執(zhí)行而排擠其它進(jìn)程24被執(zhí)行的權(quán)益,根據(jù)本發(fā)明所提供的調(diào)度方法監(jiān)測所有的觀 察進(jìn)程26 (與其所包括的所有線程28),并在觀察進(jìn)程26占用太多CPU資源時(shí)調(diào)整觀察進(jìn) 程26的優(yōu)先值,增加其它進(jìn)程24被執(zhí)行的機(jī)會(huì)。每一觀察進(jìn)程26并具有一調(diào)整次數(shù)值。 調(diào)整次數(shù)值表示此觀察進(jìn)程26被調(diào)降優(yōu)先值的次數(shù),而調(diào)整次數(shù)值的初始值為0。根據(jù)本發(fā)明的一實(shí)施范例,操作系統(tǒng)可將目前使用中的程序與相對應(yīng)的進(jìn)程24 列表并提供給使用者,并由使用者指定觀察進(jìn)程26。根據(jù)本發(fā)明的另一實(shí)施范例,操作系統(tǒng) 可根據(jù)進(jìn)程24的性質(zhì)、內(nèi)容、被執(zhí)行時(shí)平均的優(yōu)先值、通常被執(zhí)行時(shí)的狀況,或是過往被使 用者指定為觀察進(jìn)程26的紀(jì)錄自動(dòng)將隊(duì)列22中的至少一個(gè)進(jìn)程24選定為觀察進(jìn)程26。接下來將詳述根據(jù)本發(fā)明所提供的調(diào)度方法。請參照圖2,其為根據(jù)本發(fā)明一實(shí) 施范例的主流程示意圖。由圖可知,于本實(shí)施例之中,動(dòng)態(tài)調(diào)整進(jìn)程的優(yōu)先值的調(diào)度方法可 包含步驟S30 執(zhí)行一監(jiān)控進(jìn)程;步驟S31 判斷執(zhí)行中的進(jìn)程24是否為觀察進(jìn)程26 ;步驟 S32 判斷一調(diào)整標(biāo)志值是否等于1 ;步驟S33 執(zhí)行一調(diào)整進(jìn)程以調(diào)降觀察進(jìn)程26的優(yōu)先 值;步驟S34 判斷調(diào)整標(biāo)志值是否等于0 ;步驟S35 執(zhí)行一恢復(fù)進(jìn)程以恢復(fù)被調(diào)降過的觀 察進(jìn)程26的優(yōu)先權(quán);以及步驟S36 執(zhí)行下一個(gè)進(jìn)程24。首先于步驟S30,操作系統(tǒng)令CPU 20執(zhí)行監(jiān)控進(jìn)程。監(jiān)控進(jìn)程監(jiān)控CPU 20被使用 情況,并判斷使否有調(diào)整觀察進(jìn)程26的優(yōu)先值的必要。更佳的是,監(jiān)控進(jìn)程為一守護(hù)進(jìn)程 (daemon)。監(jiān)控進(jìn)程以調(diào)整標(biāo)志值表示目前CPU 20的狀況,而監(jiān)控進(jìn)程的執(zhí)行步驟請容后 詳述。每當(dāng)一個(gè)線程28被CPU 20執(zhí)行時(shí),步驟S31判斷執(zhí)行中的線程28所屬的進(jìn)程24 是否為觀察進(jìn)程26。若否,則當(dāng)執(zhí)行中的進(jìn)程24結(jié)束后,于步驟S36中CPU 20執(zhí)行下一個(gè) 進(jìn)程24 (意指CPU 20執(zhí)行下一個(gè)線程28),并在以步驟S31判斷新的執(zhí)行中的進(jìn)程24是否 為觀察進(jìn)程26。
若執(zhí)行中的進(jìn)程24為觀察進(jìn)程26,于步驟S32中操作系統(tǒng)判斷調(diào)整標(biāo)志值是否等 于1。當(dāng)調(diào)整標(biāo)志值為1時(shí),于步驟S33執(zhí)行調(diào)整進(jìn)程,以將觀察進(jìn)程26的優(yōu)先值調(diào)降;而 若調(diào)整標(biāo)志值不等于1,于步驟S34判斷調(diào)整標(biāo)志值是否等于0。當(dāng)調(diào)整標(biāo)志值等于0時(shí), 于步驟S35執(zhí)行恢復(fù)進(jìn)程,以恢復(fù)觀察進(jìn)程26的優(yōu)先值。其中調(diào)整進(jìn)程以及恢復(fù)進(jìn)程的執(zhí) 行時(shí)機(jī)可以是在作為對象的觀察進(jìn)程26被執(zhí)行之前或是被執(zhí)行之后,本發(fā)明并無限制。而 在執(zhí)行完調(diào)整進(jìn)程或是恢復(fù)進(jìn)程之后,CPU 20于步驟S36中繼續(xù)執(zhí)行下一個(gè)進(jìn)程24,并在 以步驟S31判斷新的執(zhí)行中的進(jìn)程24是否為觀察進(jìn)程26。接著說明監(jiān)控進(jìn)程的詳細(xì)步驟,而調(diào)整進(jìn)程以及恢復(fù)進(jìn)程的執(zhí)行步驟請容后詳 述。請參照圖3,其為根據(jù)本發(fā)明一實(shí)施范例的監(jiān)控進(jìn)程的流程示意圖。由圖可以見悉,監(jiān) 控進(jìn)程可包括步驟S40 偵測中央處理器20的一總占用率;步驟S41 判斷總占用率是否為 100%;步驟S42 偵測觀察進(jìn)程26的一觀察占用率;步驟S43 判斷觀察占用率是否大于一 第一閾值;步驟S44 將調(diào)整標(biāo)志值設(shè)為1 ;步驟S45 監(jiān)控進(jìn)程進(jìn)入休眠;步驟S46 判斷總 占用率是否小于第一閾值;步驟S47 將調(diào)整標(biāo)志值設(shè)為0 ;以及步驟S48 將調(diào)整標(biāo)志值設(shè) 為2。首先,監(jiān)控進(jìn)程于步驟S40偵測總占有率,也就是CPU 20被使用的狀況。總占有率 是指CPU 20執(zhí)行包含操作系統(tǒng)等所有進(jìn)程的被使用率,若總占有率過高,CPU 20便難有余 去處理優(yōu)先值低下的進(jìn)程24。監(jiān)控進(jìn)程并于步驟S41判斷總占有率是否為100%。若總占 有率高達(dá)100%,則表示有很高的機(jī)率是有某個(gè)或是某些高優(yōu)先值的進(jìn)程24過度搶奪CPU 資源。如此一來,優(yōu)先值較低的進(jìn)程24可能永遠(yuǎn)不會(huì)被執(zhí)行到,而一直維持在饑餓的狀態(tài)。然而即使總占用率高達(dá)100%,亦有可能是同時(shí)有太多的進(jìn)程24在隊(duì)列22中等待 著要被執(zhí)行。因此監(jiān)控進(jìn)程于步驟S42中,判斷觀察占有率是否大于第一閾值。觀察占有 率是指CPU 20被所有的觀察進(jìn)程26占用的情況;也就是說,觀察占用率是CPU 20執(zhí)行所 有的觀察進(jìn)程26的被使用率。第一閾值例如可以是但不限定是80%,亦可以是由使用者指 定。當(dāng)監(jiān)控進(jìn)程判斷觀察進(jìn)程26過度搶奪CPU 20的資源時(shí),監(jiān)控進(jìn)程于步驟S44將 調(diào)整標(biāo)志值設(shè)為1,代表觀察進(jìn)程26需要被調(diào)降其優(yōu)先值。設(shè)置完調(diào)整旗標(biāo)后,監(jiān)控進(jìn)程于 步驟S45進(jìn)入休眠狀態(tài)。操作系統(tǒng)可令監(jiān)控進(jìn)程進(jìn)入一等待隊(duì)列(wait queue)中休眠,且 經(jīng)過一休眠時(shí)間后,操作系統(tǒng)會(huì)再度執(zhí)行監(jiān)控進(jìn)程這個(gè)守護(hù)進(jìn)程以監(jiān)控最新的CPU 20的 總占用率。相對的,當(dāng)總占用率不等于100%時(shí),監(jiān)控進(jìn)程于步驟S46判斷總占有率是否小于 第一閾值。當(dāng)總占有率小于第一閾值時(shí),表示現(xiàn)在CPU 20尚有足夠的余力可以多執(zhí)行一些 進(jìn)程24。則調(diào)整標(biāo)志值在步驟S47被設(shè)為0,表示如果的前有觀察進(jìn)程26因被調(diào)低優(yōu)先值 而無法獲得觀察進(jìn)程26所期望的執(zhí)行時(shí)間,現(xiàn)在的狀況已允許這種觀察進(jìn)程26恢復(fù)其優(yōu) 先值并取得更多的時(shí)間片(time slice)來執(zhí)行。此外,若總占有率為100%但觀察占有率小于第一閾值,表示然CPU 20處于極為 忙碌的狀態(tài),但這種狀況并非由觀察進(jìn)程26所造成的。在其它的進(jìn)程24被執(zhí)行結(jié)束后應(yīng) 該就可緩解CPU 20過于忙碌的狀況,故調(diào)度方法可不對以狀況作處理。然根據(jù)本發(fā)明的另 一實(shí)施范例,調(diào)度方法令可以其它的調(diào)度算法進(jìn)行處理。而若總占有率并非100%但大于第 一閾值,換句話說,總占有率介于第一閾值與100%之間,表示CPU 20可能還不夠有余提供更多的資源給觀察進(jìn)程26。因此在這兩種狀況之中,監(jiān)控進(jìn)程于步驟S47將調(diào)整旗標(biāo)設(shè)為 2,代表調(diào)度方法不用執(zhí)行調(diào)整進(jìn)程亦不用執(zhí)行恢復(fù)進(jìn)程??偟卣f來,監(jiān)控進(jìn)程偵測總占用率以及觀察占用率以判斷目前CPU 20執(zhí)行的狀 況,并設(shè)定調(diào)整標(biāo)志值。監(jiān)控進(jìn)程以調(diào)整標(biāo)志值表示目前CPU 20的狀況,調(diào)度方法便可依 調(diào)整標(biāo)志值判斷是否需要調(diào)降或是恢復(fù)觀察進(jìn)程26的優(yōu)先值。以下詳述調(diào)整進(jìn)程所執(zhí)行的步驟,請參閱圖4,其為根據(jù)本發(fā)明一實(shí)施范例的調(diào)整 進(jìn)程的流程示意圖。由圖4」可知,調(diào)整進(jìn)程包括步驟S50 判斷調(diào)整次數(shù)值是否等于0 ;步 驟S51 將觀察進(jìn)程26的優(yōu)先值紀(jì)錄為一初始優(yōu)先值;步驟S52 判斷調(diào)整次數(shù)是否小于一 第二閾值;步驟S53 執(zhí)行一第一調(diào)降方法;以及步驟S54 執(zhí)行一第二調(diào)降方法。調(diào)整進(jìn)程首先于步驟S50判斷調(diào)整次數(shù)值是否等于0。觀察進(jìn)程26的調(diào)整次數(shù)值 紀(jì)錄觀察進(jìn)程26被調(diào)降優(yōu)先值的次數(shù),而每當(dāng)觀察進(jìn)程26被執(zhí)行恢復(fù)進(jìn)程后調(diào)整次數(shù)值 會(huì)被重置為0。若觀察進(jìn)程26的調(diào)整次數(shù)值為0,表示目前觀察進(jìn)程26所具有的優(yōu)先值是 操作系統(tǒng)所賦予的優(yōu)先值,也就是此觀察進(jìn)程26應(yīng)具有的優(yōu)先值。為了在CPU 20的總使 用率下降時(shí)恢復(fù)觀察進(jìn)程26的優(yōu)先值,調(diào)整進(jìn)程于步驟S51將觀察進(jìn)程26目前的優(yōu)先值 保存為初始優(yōu)先值,以供后續(xù)的恢復(fù)進(jìn)程使用。于步驟S52,調(diào)整進(jìn)程判斷調(diào)整次數(shù)值是否小于第二閾值。調(diào)整進(jìn)程分兩階段調(diào)降 觀察進(jìn)程26的優(yōu)先值,第一階段僅(逐次)稍許降低優(yōu)先值,而第二階段大幅降低優(yōu)先值。 若以第一階段的調(diào)整即可解決觀察占有率過高,也就是其余的進(jìn)程24反應(yīng)過慢的問題,就 可避免觀察進(jìn)程26的優(yōu)先值一口氣被降低,而劇烈影響到觀察進(jìn)程26的執(zhí)行效能。因此 當(dāng)調(diào)整次數(shù)值尚低時(shí),表示此觀察進(jìn)程26并不常過度占用CPU資源,僅需于步驟S53中執(zhí) 行第一調(diào)降方法,以進(jìn)行第一階段的調(diào)整。相反的,若觀察進(jìn)程26被調(diào)低過多次優(yōu)先值卻 仍一直占用CPU資源,此觀察進(jìn)程26便須于步驟S54被執(zhí)行第二調(diào)降方法,大幅拉低其優(yōu) 先值,以將此觀察進(jìn)程26過度占用的CPU資源讓出給其它進(jìn)程24。請參照圖5,其為根據(jù)本發(fā)明一實(shí)施范例的第一調(diào)降方法的流程示意圖。由圖可以 見悉,第一調(diào)降方法包括步驟S60 判斷觀察進(jìn)程26是否為普通進(jìn)程;步驟S61 將動(dòng)態(tài)優(yōu) 先級設(shè)為0 ;步驟S62 增加調(diào)整次數(shù)值;以及步驟S63 降低實(shí)時(shí)優(yōu)先級。第一調(diào)降方法于步驟S60判斷觀察進(jìn)程26是普通進(jìn)程或是實(shí)時(shí)進(jìn)程。若觀察進(jìn) 程26為普通進(jìn)程,則其優(yōu)先值為動(dòng)態(tài)優(yōu)先級以及靜態(tài)優(yōu)先級。觀察進(jìn)程26的動(dòng)態(tài)優(yōu)先級 于步驟S61被設(shè)為0。如此一來,直到隊(duì)列22中所有的普通進(jìn)程的動(dòng)態(tài)優(yōu)先級均被消耗至 0之前,此觀察進(jìn)程26都不會(huì)被CPU 20執(zhí)行。但在所有動(dòng)態(tài)優(yōu)先級都?xì)w零后,操作系統(tǒng)自 動(dòng)將此觀察進(jìn)程26的動(dòng)態(tài)優(yōu)先級與其它的普通進(jìn)程一起依據(jù)個(gè)別的靜態(tài)優(yōu)先級恢復(fù)(重 設(shè))個(gè)別的動(dòng)態(tài)優(yōu)先級。且在調(diào)降過觀察進(jìn)程26的動(dòng)態(tài)優(yōu)先級之后,于步驟S62中此觀察 進(jìn)程26的調(diào)整次數(shù)值被加1。類似地,若觀察進(jìn)程26為實(shí)時(shí)進(jìn)程,第一調(diào)降方法于步驟S63調(diào)低實(shí)時(shí)優(yōu)先級,例 如可將實(shí)時(shí)優(yōu)先級減1。且調(diào)降實(shí)時(shí)優(yōu)先級后,亦于步驟S62中將此觀察進(jìn)程26的調(diào)整次 數(shù)值加1。當(dāng)?shù)谝徽{(diào)降方法已經(jīng)觀察進(jìn)程26的優(yōu)先值調(diào)降了數(shù)次,此觀察進(jìn)程仍然頻繁占 用CPU 20,這表示隊(duì)列22中其它的進(jìn)程24的優(yōu)先值遠(yuǎn)小于此觀察進(jìn)程26。此時(shí)調(diào)降進(jìn)程 以第二調(diào)降方法處理此觀察進(jìn)程26的優(yōu)先值。
請參照圖6,其為根據(jù)本發(fā)明一實(shí)施范例的第二調(diào)降方法的流程示意圖。由圖可以 知悉,第二調(diào)降方法包括步驟S70 判斷觀察進(jìn)程26是否為普通進(jìn)程;步驟S71 將動(dòng)態(tài)優(yōu) 先級設(shè)為0 ;步驟S72 將靜態(tài)優(yōu)先級設(shè)為隊(duì)列22中具有最低的靜態(tài)優(yōu)先級的普通進(jìn)程的 靜態(tài)優(yōu)先級;步驟S73 增加調(diào)整次數(shù)值;步驟S74 將觀察進(jìn)程26改設(shè)為一普通進(jìn)程;步驟 S75 將觀察進(jìn)程26的優(yōu)先值改設(shè)為動(dòng)態(tài)優(yōu)先級以及靜態(tài)優(yōu)先級;步驟S76 將動(dòng)態(tài)優(yōu)先級 設(shè)為0 ;以及步驟S77 將靜態(tài)優(yōu)先級設(shè)為隊(duì)列22中具有最高的靜態(tài)優(yōu)先級的普通進(jìn)程的 靜態(tài)優(yōu)先級。第二調(diào)降方法于步驟S70判斷觀察進(jìn)程26是普通進(jìn)程或是實(shí)時(shí)進(jìn)程。當(dāng)觀察進(jìn) 程26為普通進(jìn)程時(shí),第二調(diào)降方法先于步驟S71將觀察進(jìn)程26的動(dòng)態(tài)優(yōu)先級設(shè)為0,并在 步驟S72調(diào)降觀察進(jìn)程26的靜態(tài)優(yōu)先級。第二調(diào)降方法于隊(duì)列22中找尋具有最低的靜態(tài) 優(yōu)先級的普通進(jìn)程,并將此最低的靜態(tài)優(yōu)先級作為觀察進(jìn)程26的靜態(tài)優(yōu)先級。如此一來, 即使操作系統(tǒng)依據(jù)靜態(tài)優(yōu)先級恢復(fù)所有普通進(jìn)程的動(dòng)態(tài)優(yōu)先級,觀察進(jìn)程26仍只能獲得 較低的動(dòng)態(tài)優(yōu)先級。接著于步驟S73,觀察進(jìn)程26的調(diào)整次數(shù)值被加1。當(dāng)觀察進(jìn)程26為實(shí)時(shí)進(jìn)程,且觀察進(jìn)程26即使逐次地被減低實(shí)時(shí)優(yōu)先級仍然頻 繁占用CPU 20時(shí),這表示隊(duì)列22中可能只有此觀察進(jìn)程26是實(shí)時(shí)進(jìn)程,或是其它的實(shí)時(shí) 進(jìn)程的實(shí)時(shí)優(yōu)先級都遠(yuǎn)低于此觀察進(jìn)程26。因此第二調(diào)降方法直接將觀察進(jìn)程26設(shè)為普 通進(jìn)程,但仍給予此觀察進(jìn)程26較高的靜態(tài)優(yōu)先值。第二調(diào)降方法于步驟S74將觀察進(jìn)程26由實(shí)時(shí)進(jìn)程改為普通進(jìn)程,且于步驟S75 將觀察進(jìn)程26的優(yōu)先值由實(shí)時(shí)優(yōu)先級改設(shè)為靜態(tài)優(yōu)先級以及動(dòng)態(tài)優(yōu)先級。第二調(diào)降方法 于步驟S76將動(dòng)態(tài)優(yōu)先級設(shè)為0,并于步驟S77于隊(duì)列22中找尋具有最高的靜態(tài)優(yōu)先級的 普通進(jìn)程,將此最高的靜態(tài)優(yōu)先級作為觀察進(jìn)程26的靜態(tài)優(yōu)先級。接著第二調(diào)降方法亦于 步驟S73將觀察進(jìn)程26的調(diào)整次數(shù)值被加1。調(diào)整進(jìn)程以第一調(diào)降方法緩和地減低觀察進(jìn)程26的優(yōu)先值,但若觀察進(jìn)程26已 被調(diào)整多次后仍舊過度占用CPU資源,調(diào)降進(jìn)程以第二調(diào)降方法大幅調(diào)降其優(yōu)先值,以提 高隊(duì)列22中其它不是觀察進(jìn)程的進(jìn)程24被執(zhí)行的時(shí)間。接下來詳述恢復(fù)進(jìn)程的執(zhí)行步驟。對應(yīng)上述階段式的調(diào)整方法,恢復(fù)進(jìn)程亦階段 式地恢復(fù)優(yōu)先值。請參閱圖7」,其是為根據(jù)本發(fā)明一實(shí)施范例的恢復(fù)進(jìn)程的流程示意圖。 由「圖7可以見悉,恢復(fù)進(jìn)程包括步驟S80 判斷觀察進(jìn)程26是否為實(shí)時(shí)進(jìn)程;步驟S81 依據(jù)初始優(yōu)先值恢復(fù)優(yōu)先值,并將調(diào)整次數(shù)值設(shè)為0 ;步驟S82 判斷觀察進(jìn)程26第一次被 執(zhí)行調(diào)整進(jìn)程時(shí)是否為普通進(jìn)程;步驟S83 判斷總占用率是否為小于第一閾值;步驟S84 判斷是否觀察進(jìn)程26為普通進(jìn)程,且觀察進(jìn)程第一次被執(zhí)行調(diào)整進(jìn)程時(shí)為實(shí)時(shí)進(jìn)程;步驟 S85 將觀察進(jìn)程26恢復(fù)為實(shí)時(shí)進(jìn)程;步驟S86 依據(jù)初始優(yōu)先值恢復(fù)實(shí)時(shí)進(jìn)程的優(yōu)先值, 并將調(diào)整次數(shù)值設(shè)為0 ;以及步驟S87 結(jié)束恢復(fù)進(jìn)程。恢復(fù)進(jìn)程被啟動(dòng)后首先于步驟S80判斷觀察進(jìn)程26是否為實(shí)質(zhì)進(jìn)程,若不是,便 于步驟S82判斷觀察進(jìn)程26是否原先就是普通進(jìn)程,而非被調(diào)整進(jìn)程由實(shí)時(shí)進(jìn)程改設(shè)為普 通進(jìn)程。也就是說,步驟S80與步驟S82判斷觀察進(jìn)程26是否僅被第一調(diào)降方法處理過。 若是,則于步驟S81依據(jù)初始優(yōu)先值將實(shí)時(shí)優(yōu)先級或動(dòng)態(tài)優(yōu)先級恢復(fù)為被調(diào)降之前的值, 此為第一階段的恢復(fù)方法。經(jīng)過第一階段的恢復(fù)后,總占有率以及觀察占有率都可能上升。因此于步驟S83,恢復(fù)進(jìn)程判斷經(jīng)過第一階段的恢復(fù)后的總占有率是否仍小于第一閾值,以確認(rèn)能否執(zhí)行第 二階段的恢復(fù)。當(dāng)總占有率超過第一閾值時(shí),恢復(fù)進(jìn)程不進(jìn)行第二階段的恢復(fù),而于步驟 S87結(jié)束。相對的,當(dāng)經(jīng)過第一階段的恢復(fù)后總占有率仍低于低一閾值時(shí),恢復(fù)進(jìn)程于步驟 S85將曾被調(diào)整進(jìn)程改設(shè)為普通進(jìn)程的觀察進(jìn)程26恢復(fù)為實(shí)時(shí)進(jìn)程,并于步驟S86依據(jù)初 始優(yōu)先值恢復(fù)實(shí)時(shí)優(yōu)先值??偟貋碚f,成功提高其它進(jìn)程24的CPU 20的占有率且CPU 20亦有余力時(shí),恢復(fù) 進(jìn)程亦階段式地恢復(fù)觀察進(jìn)程的優(yōu)先權(quán),以確保被恢復(fù)優(yōu)先值的觀察進(jìn)程26不會(huì)再度過 分地占用CPU資源。而根據(jù)本發(fā)明的一實(shí)施范例,當(dāng)所有的觀察進(jìn)程26均已離開待執(zhí)行隊(duì) 列時(shí)(例如已執(zhí)行完畢或是進(jìn)入等待隊(duì)列中),作為守護(hù)進(jìn)程執(zhí)行的監(jiān)控進(jìn)程持續(xù)監(jiān)控總 使用率。若監(jiān)控進(jìn)程得知總使用率為100%,且又有觀察進(jìn)程26位于隊(duì)列22時(shí),即依照上 述方法設(shè)定調(diào)整標(biāo)志值以進(jìn)行調(diào)整/恢復(fù)優(yōu)先值的步驟。雖上述調(diào)度方法僅以單CPU系統(tǒng) 為例,然動(dòng)態(tài)調(diào)整進(jìn)程的優(yōu)先值的調(diào)度方法亦是于多CPU系統(tǒng)。根據(jù)本發(fā)明的動(dòng)態(tài)調(diào)整進(jìn)程的優(yōu)先值的調(diào)度方法,具有高優(yōu)先權(quán)且較可能過度占 用CPU的進(jìn)程被設(shè)定為觀察進(jìn)程。監(jiān)控進(jìn)程監(jiān)控總占有率與觀察占有率以觀察進(jìn)程是否過 度占用CPU資源,并階段式地調(diào)降/恢復(fù)觀察進(jìn)程的優(yōu)先級。故此調(diào)度方法可有效增加低優(yōu) 先值的進(jìn)程被執(zhí)行的機(jī)率以及時(shí)間長度,進(jìn)而縮短平均反應(yīng)時(shí)間。此外,借由階段式的調(diào)降 進(jìn)程,可以避免明顯影響觀察進(jìn)程的執(zhí)行是效率;而借由階段式的恢復(fù)進(jìn)程,可以避免CPU 負(fù)載突然升高,或是避免觀察進(jìn)程再度獨(dú)占CPU資源。當(dāng)然,本發(fā)明還可有其它多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟 悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變 形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1.一種動(dòng)態(tài)調(diào)整進(jìn)程的優(yōu)先值的調(diào)度方法,其特征在于,適用于一中央處理器與一隊(duì) 列,該隊(duì)列包括至少一進(jìn)程,每一該進(jìn)程具有一優(yōu)先值,該調(diào)度方法包括執(zhí)行一監(jiān)控進(jìn)程,該監(jiān)控進(jìn)程包括 偵測該中央處理器的一總占用率; 判斷該總占用率是否為100% ;以及 當(dāng)該總占用率為100%時(shí),執(zhí)行下列步驟偵測一觀察進(jìn)程的一觀察占用率,其中該觀察進(jìn)程為該隊(duì)列中的至少一個(gè)該進(jìn)程,且 每一該觀察進(jìn)程具有一調(diào)整次數(shù)值,該調(diào)整次數(shù)值的初始值為0 ; 判斷該觀察占用率是否大于一第一閾值; 當(dāng)該觀察占用率大于該第一閾值時(shí),將一調(diào)整標(biāo)志值設(shè)為1 ;以及 令該監(jiān)控進(jìn)程休眠,該監(jiān)控進(jìn)程于經(jīng)過一休眠時(shí)間后再度被執(zhí)行; 判斷執(zhí)行中的該進(jìn)程是否為該觀察進(jìn)程;當(dāng)執(zhí)行中的該進(jìn)程為該觀察進(jìn)程時(shí),判斷該調(diào)整標(biāo)志值是否等于1 ;以及 當(dāng)該調(diào)整標(biāo)志值等于1時(shí),執(zhí)行一調(diào)整進(jìn)程以調(diào)降該觀察進(jìn)程的該優(yōu)先值。
2.根據(jù)權(quán)利要求1所述的動(dòng)態(tài)調(diào)整進(jìn)程的優(yōu)先值的調(diào)度方法,其特征在于,該監(jiān)控進(jìn) 程另包括當(dāng)該總占用率不為100%時(shí),執(zhí)行下列步驟判斷該總占用率是否小于該第一閾值;當(dāng)該總占用率小于該第一閾值時(shí),將該調(diào)整標(biāo)志值設(shè)為0 ;以及令該監(jiān)控進(jìn)程休眠,該監(jiān)控進(jìn)程于經(jīng)過一休眠時(shí)間后再度被執(zhí)行。
3.根據(jù)權(quán)利要求1所述的動(dòng)態(tài)調(diào)整進(jìn)程的優(yōu)先值的調(diào)度方法,其特征在于,另包括 當(dāng)該調(diào)整標(biāo)志值等于0時(shí),執(zhí)行一恢復(fù)進(jìn)程以恢復(fù)被調(diào)降過的該觀察進(jìn)程的該優(yōu)先值。
4.根據(jù)權(quán)利要求1所述的動(dòng)態(tài)調(diào)整進(jìn)程的優(yōu)先值的調(diào)度方法,其特征在于,該執(zhí)行一 調(diào)整進(jìn)程以調(diào)降該觀察進(jìn)程的該優(yōu)先值的步驟包括判斷該調(diào)整次數(shù)值是否等于0 ;當(dāng)該調(diào)整次數(shù)值等于0時(shí),將該觀察進(jìn)程的該優(yōu)先值紀(jì)錄為一初始優(yōu)先值; 判斷該調(diào)整旗次數(shù)是否小于一第二閾值; 當(dāng)該調(diào)整旗次數(shù)小于該第二閾值時(shí),執(zhí)行一第一調(diào)降方法;以及 當(dāng)該調(diào)整次數(shù)值不小于該第二閾值時(shí),執(zhí)行一第二調(diào)降方法。
5.根據(jù)權(quán)利要求4所述的動(dòng)態(tài)調(diào)整進(jìn)程的優(yōu)先值的調(diào)度方法,其特征在于,該執(zhí)行一 第一調(diào)降方法的步驟包括判斷該觀察進(jìn)程是否為一普通進(jìn)程;當(dāng)該觀察進(jìn)程為該普通進(jìn)程時(shí),該觀察進(jìn)程的該優(yōu)先值為一動(dòng)態(tài)優(yōu)先級以及一靜態(tài)優(yōu) 先級,并將該動(dòng)態(tài)優(yōu)先級設(shè)為0 ;以及 增加該調(diào)整次數(shù)值。
6.根據(jù)權(quán)利要求5所述的動(dòng)態(tài)調(diào)整進(jìn)程的優(yōu)先值的調(diào)度方法,其特征在于,而該執(zhí)行 一第一調(diào)降方法的步驟另包括當(dāng)該觀察進(jìn)程不為該普通進(jìn)程時(shí),該觀察進(jìn)程為一實(shí)時(shí)進(jìn)程,該觀察進(jìn)程的該優(yōu)先值為一實(shí)時(shí)優(yōu)先級,并降低該實(shí)時(shí)優(yōu)先級;以及 增加該調(diào)整次數(shù)值。
7.根據(jù)權(quán)利要求4所述的動(dòng)態(tài)調(diào)整進(jìn)程的優(yōu)先值的調(diào)度方法,其特征在于,該執(zhí)行一 第二調(diào)降方法的步驟包括判斷該觀察進(jìn)程是否為一普通進(jìn)程;以及當(dāng)該觀察進(jìn)程為該普通進(jìn)程時(shí),該觀察進(jìn)程的該優(yōu)先值為一動(dòng)態(tài)優(yōu)先級以及一靜態(tài)優(yōu) 先級,并執(zhí)行下列步驟 將該動(dòng)態(tài)優(yōu)先級設(shè)為0 ;將該靜態(tài)優(yōu)先級設(shè)為該隊(duì)列中具有最低的該靜態(tài)優(yōu)先級的該普通進(jìn)程的該靜態(tài)優(yōu)先 級;以及增加該調(diào)整次數(shù)值。
8.根據(jù)權(quán)利要求7所述的動(dòng)態(tài)調(diào)整進(jìn)程的優(yōu)先值的調(diào)度方法,其特征在于,該執(zhí)行一 第二調(diào)降方法的步驟另包括當(dāng)該觀察進(jìn)程不為該普通進(jìn)程時(shí),該觀察進(jìn)程為一實(shí)時(shí)進(jìn)程,并執(zhí)行下列步驟 將該觀察進(jìn)程改設(shè)為該普通進(jìn)程;將該觀察進(jìn)程的該優(yōu)先值改設(shè)為該動(dòng)態(tài)優(yōu)先級以及該靜態(tài)優(yōu)先級; 將該動(dòng)態(tài)優(yōu)先級設(shè)為0 ;將該靜態(tài)優(yōu)先級設(shè)為該隊(duì)列中具有最高的該靜態(tài)優(yōu)先級的該普通進(jìn)程的該靜態(tài)優(yōu)先 級;以及增加該調(diào)整次數(shù)值。
9.根據(jù)權(quán)利要求3所述的動(dòng)態(tài)調(diào)整進(jìn)程的優(yōu)先值的調(diào)度方法,其特征在于,該執(zhí)行一 恢復(fù)進(jìn)程以恢復(fù)被調(diào)降過的該觀察進(jìn)程的該優(yōu)先值的步驟包括判斷該觀察進(jìn)程是否為一實(shí)時(shí)進(jìn)程;當(dāng)該觀察進(jìn)程為一實(shí)時(shí)進(jìn)程時(shí),依據(jù)該初始優(yōu)先值恢復(fù)該優(yōu)先值,并將該調(diào)整次數(shù)值 設(shè)為0;當(dāng)該觀察進(jìn)程不為該實(shí)時(shí)進(jìn)程時(shí),判斷該觀察進(jìn)程第一次被執(zhí)行該調(diào)整進(jìn)程時(shí)是否為 一普通進(jìn)程;以及當(dāng)該觀察進(jìn)程第一次被執(zhí)行該調(diào)整進(jìn)程時(shí)為該普通進(jìn)程時(shí),依據(jù)該初始優(yōu)先值恢復(fù)該 優(yōu)先值,并將該調(diào)整次數(shù)值設(shè)為0。
10.根據(jù)權(quán)利要求9所述的動(dòng)態(tài)調(diào)整進(jìn)程的優(yōu)先值的調(diào)度方法,其特征在于,當(dāng)該觀察 進(jìn)程第一次被執(zhí)行該調(diào)整進(jìn)程時(shí)為該普通進(jìn)程時(shí),依據(jù)該初始優(yōu)先值恢復(fù)該優(yōu)先值之后的 步驟另包括判斷該總占用率是否為小于該第一閾值;以及 當(dāng)該總占用率小于該第一閾值時(shí),執(zhí)行以下步驟判斷是否該觀察進(jìn)程為該普通進(jìn)程,且該觀察進(jìn)程第一次被執(zhí)行該調(diào)整進(jìn)程時(shí)為該實(shí) 時(shí)進(jìn)程;以及若是,將該觀察進(jìn)程恢復(fù)為該實(shí)時(shí)進(jìn)程;并依據(jù)該初始優(yōu)先值恢復(fù)該優(yōu)先值,并將該調(diào) 整次數(shù)值設(shè)為0。
全文摘要
本發(fā)明公開了一種動(dòng)態(tài)調(diào)整進(jìn)程的優(yōu)先值的調(diào)度方法,適用于中央處理器與隊(duì)列。隊(duì)列中包括至少一進(jìn)程,且每一進(jìn)程均具有優(yōu)先值。調(diào)度方法首先執(zhí)行監(jiān)控進(jìn)程以偵測中央處理器的總占用率,當(dāng)總占用率為100%時(shí),偵測觀察進(jìn)程的觀察占用率。當(dāng)觀察占用率大于第一閾值時(shí),監(jiān)控進(jìn)程將調(diào)整標(biāo)志值設(shè)為1并進(jìn)入休眠。調(diào)度方法接著判斷執(zhí)行中的進(jìn)程是否為觀察進(jìn)程。當(dāng)執(zhí)行中的進(jìn)程為觀察進(jìn)程,且調(diào)整標(biāo)志值等于1時(shí),調(diào)度方法執(zhí)行調(diào)整進(jìn)程以調(diào)降觀察進(jìn)程的優(yōu)先值。
文檔編號G06F9/50GK102033782SQ20091017417
公開日2011年4月27日 申請日期2009年9月30日 優(yōu)先權(quán)日2009年9月30日
發(fā)明者焦旭東, 陳玄同 申請人:英業(yè)達(dá)股份有限公司, 英業(yè)達(dá)集團(tuán)(天津)電子技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
平潭县| 连城县| 卓尼县| 长岭县| 安化县| 永宁县| 获嘉县| 博乐市| 巴林右旗| 繁昌县| 安丘市| 万源市| 清丰县| 北碚区| 紫阳县| 报价| 林芝县| 景泰县| 江源县| 刚察县| 寿光市| 盘锦市| 读书| 桦南县| 中牟县| 青州市| 黎平县| 工布江达县| 乌审旗| 东阳市| 油尖旺区| 漾濞| 湘乡市| 辽宁省| 九江市| 黄陵县| 星子县| 伊川县| 祁东县| 哈密市| 滕州市|