国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種進程調(diào)度方法及裝置與流程

      文檔序號:12063466閱讀:296來源:國知局
      一種進程調(diào)度方法及裝置與流程

      本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別是涉及一種進程調(diào)度方法及裝置。



      背景技術(shù):

      隨著計算機技術(shù)的快速發(fā)展,Linux、Unix等操作系統(tǒng)也得到了快速發(fā)展,應用程序?qū)ο到y(tǒng)提出的要求越來越高,在不同場景下對進程的響應速度和調(diào)度的公平性都有不同的要求。

      目前,Linux、Unix等操作系統(tǒng)的內(nèi)核對于進程的調(diào)度是根據(jù)進程的優(yōu)先級進行的,即先調(diào)度優(yōu)先級高的進程,優(yōu)先級高的進程任務執(zhí)行完成后,才會調(diào)度優(yōu)先級低的進程。這樣使得優(yōu)先級低的進程總要等待優(yōu)先級高的進程任務執(zhí)行完成后才能運行,執(zhí)行相應任務,進程調(diào)度的公平性和實時性較差。



      技術(shù)實現(xiàn)要素:

      本發(fā)明的目的是提供一種進程調(diào)度方法及裝置,以保證高優(yōu)先級進程優(yōu)先調(diào)度的同時,保證低優(yōu)先級進程也得到執(zhí)行的機會,兼顧進程調(diào)度的公平性和實時性。

      為解決上述技術(shù)問題,本發(fā)明提供如下技術(shù)方案:

      一種進程調(diào)度方法,包括:

      針對系統(tǒng)內(nèi)的每個進程,根據(jù)該進程對應任務的類型,確定該進程對應的進程組,所述系統(tǒng)包含多個進程組,不同進程組具有不同優(yōu)先級;

      在進程調(diào)度周期內(nèi),按照進程組的優(yōu)先級順序依次調(diào)度每個進程組中的進程;

      針對每個進程組,在要對該進程組中的進程進行調(diào)度時,根據(jù)該進程組中每個進程的虛擬時間,確定待進行調(diào)度的進程。

      在本發(fā)明的一種具體實施方式中,所述在進程調(diào)度周期內(nèi),按照進程組的優(yōu)先級順序依次調(diào)度每個進程組中的進程,包括:

      在當前進程調(diào)度周期內(nèi),按照進程組的優(yōu)先級順序依次將每個進程組確定為目標進程組;

      對所述目標進程組中的進程進行調(diào)度;

      在所述目標進程組中的進程運行時間達到預設(shè)的所述目標進程組對應的組時間片時,將所述目標進程組中運行的進程停止;

      確定所述目標進程組的優(yōu)先級是否最低;

      如果否,則對優(yōu)先級低于所述目標進程組的進程組中的進程進行調(diào)度;

      如果是,則進行下一進程調(diào)度周期的進程調(diào)度。

      在本發(fā)明的一種具體實施方式中,在所述將所述目標進程組中運行的進程停止之后,還包括:

      確定被停止的進程的虛擬時間;

      根據(jù)進程的虛擬時間,對所述目標進程組中的進程進行排序。

      在本發(fā)明的一種具體實施方式中,所述針對每個進程組,在對該進程組中的進程進行調(diào)度時,根據(jù)該進程組中每個進程的虛擬時間,確定待進行調(diào)度的進程,包括:

      針對每個進程組,在對該進程組中的進程進行調(diào)度時,根據(jù)該進程組中每個進程的虛擬時間的大小,對該進程組中的進程進行排序;

      將虛擬時間最小的進程確定為待進行調(diào)度的進程。

      在本發(fā)明的一種具體實施方式中,所述虛擬時間為:根據(jù)進程執(zhí)行任務還需要的時間和進程執(zhí)行任務所需總時間的比值確定的。

      一種進程調(diào)度裝置,包括:

      進程組確定模塊,用于針對系統(tǒng)內(nèi)的每個進程,根據(jù)該進程對應任務的類型,確定該進程對應的進程組,所述系統(tǒng)包含多個進程組,不同進程組具有不同優(yōu)先級;

      進程調(diào)度模塊,用于在進程調(diào)度周期內(nèi),按照進程組的優(yōu)先級順序依次調(diào)度每個進程組中的進程;

      待調(diào)度進程確定模塊,用于針對每個進程組,在要對該進程組中的進程進行調(diào)度時,根據(jù)該進程組中每個進程的虛擬時間,確定待進行調(diào)度的進程。

      在本發(fā)明的一種具體實施方式中,所述進程調(diào)度模塊,具體用于:

      在當前進程調(diào)度周期內(nèi),按照進程組的優(yōu)先級順序依次將每個進程組確定為目標進程組;

      對所述目標進程組中的進程進行調(diào)度;

      在所述目標進程組中的進程運行時間達到預設(shè)的所述目標進程組對應的組時間片時,將所述目標進程組中運行的進程停止;

      確定所述目標進程組的優(yōu)先級是否最低;

      如果否,則對優(yōu)先級低于所述目標進程組的進程組中的進程進行調(diào)度;

      如果是,則進行下一進程調(diào)度周期的進程調(diào)度。

      在本發(fā)明的一種具體實施方式中,所述進程調(diào)度模塊,還用于:

      在所述將所述目標進程組中運行的進程停止之后,確定被停止的進程的虛擬時間;

      根據(jù)進程的虛擬時間,對所述目標進程組中的進程進行排序。

      在本發(fā)明的一種具體實施方式中,所述待調(diào)度進程確定模塊,具體用于:

      針對每個進程組,在對該進程組中的進程進行調(diào)度時,根據(jù)該進程組中每個進程的虛擬時間的大小,對該進程組中的進程進行排序;

      將虛擬時間最小的進程確定為待進行調(diào)度的進程。

      在本發(fā)明的一種具體實施方式中,所述虛擬時間為:根據(jù)進程執(zhí)行任務還需要的時間和進程執(zhí)行任務所需總時間的比值確定的。

      應用本發(fā)明實施例所提供的技術(shù)方案,系統(tǒng)包含多個進程組,不同進程組具有不同的優(yōu)先級,針對系統(tǒng)內(nèi)的每個進程,根據(jù)進程對應任務的類型,確定進程對應的進程組,在進程調(diào)度周期內(nèi),按照進程組的優(yōu)先級順序依次調(diào)度每個進程組中的進程,針對每個進程組,在要對該進程組中的進程進行調(diào)度時,根據(jù)該進程組中每個進程的虛擬時間,確定待進行調(diào)度的進程。這樣,在保證高優(yōu)先級進程優(yōu)先調(diào)度的同時,保證低優(yōu)先級進程也得到執(zhí)行的機會,兼顧進程調(diào)度的公平性和實時性。

      附圖說明

      為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

      圖1為本發(fā)明實施例中一種進程調(diào)度方法的實施流程圖;

      圖2為本發(fā)明實施例中進程組間調(diào)度示意圖;

      圖3為本發(fā)明實施例中進程組內(nèi)調(diào)度示意圖;

      圖4為本發(fā)明實施例中一種進程調(diào)度裝置的結(jié)構(gòu)示意圖。

      具體實施方式

      為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面結(jié)合附圖和具體實施方式對本發(fā)明作進一步的詳細說明。顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。

      參見圖1所示,為本發(fā)明實施例所提供的一種進程調(diào)度方法的實施流程圖,該方法可以包括以下步驟:

      S110:針對系統(tǒng)內(nèi)的每個進程,根據(jù)該進程對應任務的類型,確定該進程對應的進程組。

      系統(tǒng)包含多個進程組,不同進程組具有不同優(yōu)先級。

      在實際應用中,系統(tǒng)內(nèi)的進程是動態(tài)生成、關(guān)閉的過程。不同進程執(zhí)行任務的類型不同,有的進程執(zhí)行的是交互類任務,有的進程執(zhí)行的是IO操作類任務。在本發(fā)明實施例中,可以將系統(tǒng)內(nèi)所有進程劃分為多個進程組,不同進程組具有不同優(yōu)先級。

      比如,可以將進程劃分為三個進程組,分別為SCHED_URG進程組、SCHED_NORMAL進程組、SCHED_IDLE進程組。SCHED_URG進程組的優(yōu)先級高于SCHED_NORMAL進程組的優(yōu)先級,SCHED_NORMAL進程組的優(yōu)先級高于SCHED_IDLE進程組的優(yōu)先級。

      針對系統(tǒng)內(nèi)的每個進程,可以根據(jù)進程對應任務的類型,確定進程對應的進程組。比如,執(zhí)行交互類任務的進程對應SCHED_URG進程組,執(zhí)行IO操作類任務的進程對應SCHED_NORMAL進程組,執(zhí)行其他類任務的進程對應SCHED_IDLE進程組。

      S120:在進程調(diào)度周期內(nèi),按照進程組的優(yōu)先級順序依次調(diào)度每個進程組中的進程。

      在本發(fā)明實施例中,在進程調(diào)度周期內(nèi),可以按照進程組的優(yōu)先級順序依次調(diào)度每個進程組中的進程。比如,按照SCHED_URG進程組、SCHED_NORMAL進程組、SCHED_IDLE進程組的順序依次調(diào)度每個進程組中的進程。一個進程調(diào)度周期內(nèi)對進程組進行輪詢調(diào)度,完成對每個進程組中進程的一次調(diào)度。

      在本發(fā)明的一種具體實施方式中,步驟S120可以包括以下步驟:

      步驟一:在當前進程調(diào)度周期內(nèi),按照進程組的優(yōu)先級順序依次將每個進程組確定為目標進程組;

      步驟二:對目標進程組中的進程進行調(diào)度;

      步驟三:在目標進程組中的進程運行時間達到預設(shè)的目標進程組對應的組時間片時,將目標進程組中運行的進程停止;

      步驟四:確定目標進程組的優(yōu)先級是否最低,如果否,則執(zhí)行步驟五,如果是,則執(zhí)行步驟六;

      步驟五:對優(yōu)先級低于目標進程組的進程組中的進程進行調(diào)度;

      步驟六:進行下一進程調(diào)度周期的進程調(diào)度。

      為便于理解,將上述六個步驟結(jié)合起來進行說明。

      在當前進程調(diào)度周期內(nèi),按照進程組的優(yōu)先級順序依次將每個進程組確定為目標進程組。對目標進程組中的進程進行調(diào)度,被調(diào)度的進程開始運行。

      在本發(fā)明實施例中,預先設(shè)定每個進程組對應的組時間片,通過組時間片規(guī)定進程組中的進程的運行時間。比如,設(shè)定SCHED_URG進程組對應的組時間片為Turg、SCHED_NORMAL進程組對應的組時間片為Tnormal、SCHED_IDLE進程組對應的組時間片為Tidle。Turg可以大于Tnormal,Tnormal可以大于Tidle。

      在目標進程組中的進程運行時間達到預設(shè)的目標進程組對應的組時間片時,將目標進程組中運行的進程停止。比如,目標進程組對應的組時間片為1秒,在目標進程組中的進程運行時間達到1秒時,將目標進程組中運行的進行停止。

      確定目標進程組的優(yōu)先級是否為所有進程組中優(yōu)先級最低的進程組。如果否,則可以對優(yōu)先級低于目標進程組的進程組中的進程進行調(diào)度,如果是,則可以進行下一進程調(diào)度周期的進程調(diào)度。

      舉例而言,如圖2所示,SCHED_URG進程組為高優(yōu)先級、SCHED_NORMAL進程組為中優(yōu)先級、SCHED_IDLE進程組為低優(yōu)先級,p11、p23、p3x等表示進程。在一個進程調(diào)度周期內(nèi),先對SCHED_URG進程組中的進程進行調(diào)度,如調(diào)度進程p1x,在該進程組中的進程運行時間達到Turg時,將該進程組中運行的進程停止;SCHED_URG進程組的優(yōu)先級非最低,進一步,可以對SCHED_NORMAL進程組中的進程進行調(diào)度,如調(diào)度進程p2x,在該進程組中的進程運行時間達到Tnormal時,將該進程組中運行的進程停止;SCHED_NORMAL進程組的優(yōu)先級非最低,進一步,可以對SCHED_IDLE進程組中的進程進行調(diào)度,如調(diào)度進程p3x,在該進程組組中的進程運行時間達到Tidle時,將該進程組中運行的進程停止;因SCHED_IDLE進程組的優(yōu)先級最低,所以,當前進程調(diào)度周期結(jié)束,開始進行下一進程調(diào)度周期的進程調(diào)度。

      S130:針對每個進程組,在要對該進程組中的進程進行調(diào)度時,根據(jù)該進程組中每個進程的虛擬時間,確定待進行調(diào)度的進程。

      在本發(fā)明實施例中,引入虛擬時間的概念,每個進程具有相應的虛擬時間。虛擬時間為:根據(jù)進程執(zhí)行任務還需要的時間和進程執(zhí)行任務所需總時間的比值確定的。

      每個進程從啟動到設(shè)定的截止時間(deadline)為進程執(zhí)行任務所需總時間,可以表示為Tall。隨著進程的執(zhí)行,進程執(zhí)行任務已用時間不斷增加,還需要的時間減小,還需要的時間可以表示Tneed。

      在本發(fā)明實施例中,可以使用優(yōu)先級表征數(shù)值prio對每個進程組內(nèi)部進程進行優(yōu)先級劃分。比如,分別將SCHED_URG進程組、SCHED_NORMAL進程組、SCHED_IDLE進程組劃分10個優(yōu)先級,一共30個優(yōu)先級,從SCHED_URG進程組到SCHED_IDLE進程組的優(yōu)先級依次降低,SCHED_IDLE進程組的優(yōu)先級最低。優(yōu)先級越低,優(yōu)先級表征數(shù)值越大。最高的優(yōu)先級的優(yōu)先級表征數(shù)值為1。

      根據(jù)Tall可以定義進程執(zhí)行的步長Tstep=Tall*prio。根據(jù)進程執(zhí)行任務還需要的時間Tneed可以計算得到進程的虛擬時間Tvirt。在本發(fā)明實施例中,Tvirt=Tstep/Tneed=(Tall/Tneed)*prio。

      針對每個進程組,在要對該進程組中的進程進行調(diào)度時,可以根據(jù)該進程組中每個進程的虛擬時間,確定待進行調(diào)度的進程,確定后,即可對該待進行調(diào)度的進程進行調(diào)度。

      在本發(fā)明的一種具體實施方式中,針對每個進程組,在對該進程組中的進程進行調(diào)度時,可以根據(jù)該進程組中每個進程的虛擬時間的大小,對該進程組中的進程進行排序,將虛擬時間最小的進程確定為待進行調(diào)度的進程。

      通過引入虛擬時間Tvirt,在相同Tneed和Tall的情況下,高優(yōu)先級的進程可以得到優(yōu)先調(diào)度,當高優(yōu)先級進程運行一段時間后,隨著Tneed的減小導致Tvirt增大,當大于低優(yōu)先級進程的Tvirt后,可以讓出CPU給低優(yōu)先級進程運行,從而保證低優(yōu)先級進程也有被調(diào)度的機會。

      在本發(fā)明實施例中,將目標進程組中運行的進程停止之后,可以確定被停止的進程的虛擬時間,根據(jù)進程的虛擬時間,可以對目標進程組中的進程進行排序。進程每運行一次后,其所在進程組中的進程都會進行一次排序,保證高優(yōu)先級進程可以優(yōu)先調(diào)度的同時,也可以保證低優(yōu)先級進程得到執(zhí)行的機會,兼顧效率和公平性。具體的,每個進程組內(nèi)所有進程根據(jù)虛擬時間可以形成一個小根堆,堆頂元素為下次待調(diào)度進程。當進程被選為待調(diào)度進程后,至少運行一個組時間片再進行下一次調(diào)度。

      如圖3所示,在一個進程組內(nèi),該進程組中的進程根據(jù)Tvirt組成小根堆,該進程組中的進程執(zhí)行時間達到該進程組的組時間片時,停止,重新計算Tvirt后進行堆調(diào)整,堆頂元素為下次待調(diào)度進程。

      應用本發(fā)明實施例所提供的方法,系統(tǒng)包含多個進程組,不同進程組具有不同的優(yōu)先級,針對系統(tǒng)內(nèi)的每個進程,根據(jù)進程對應任務的類型,確定進程對應的進程組,在進程調(diào)度周期內(nèi),按照進程組的優(yōu)先級順序依次調(diào)度每個進程組中的進程,針對每個進程組,在要對該進程組中的進程進行調(diào)度時,根據(jù)該進程組中每個進程的虛擬時間,確定待進行調(diào)度的進程。這樣,在保證高優(yōu)先級進程優(yōu)先調(diào)度的同時,保證低優(yōu)先級進程也得到執(zhí)行的機會,兼顧進程調(diào)度的公平性和實時性。

      相應于上面的方法實施例,本發(fā)明實施例還提供了一種進程調(diào)度裝置,下文描述的一種進程調(diào)度裝置與上文描述的一種進程調(diào)度方法可相互對應參照。

      參見圖4所示,該裝置包括以下模塊:

      進程組確定模塊410,用于針對系統(tǒng)內(nèi)的每個進程,根據(jù)該進程對應任務的類型,確定該進程對應的進程組,系統(tǒng)包含多個進程組,不同進程組具有不同優(yōu)先級;

      進程調(diào)度模塊420,用于在進程調(diào)度周期內(nèi),按照進程組的優(yōu)先級順序依次調(diào)度每個進程組中的進程;

      待調(diào)度進程確定模塊430,用于針對每個進程組,在要對該進程組中的進程進行調(diào)度時,根據(jù)該進程組中每個進程的虛擬時間,確定待進行調(diào)度的進程。

      應用本發(fā)明實施例所提供的裝置,系統(tǒng)包含多個進程組,不同進程組具有不同的優(yōu)先級,針對系統(tǒng)內(nèi)的每個進程,根據(jù)進程對應任務的類型,確定進程對應的進程組,在進程調(diào)度周期內(nèi),按照進程組的優(yōu)先級順序依次調(diào)度每個進程組中的進程,針對每個進程組,在要對該進程組中的進程進行調(diào)度時,根據(jù)該進程組中每個進程的虛擬時間,確定待進行調(diào)度的進程。這樣,在保證高優(yōu)先級進程優(yōu)先調(diào)度的同時,保證低優(yōu)先級進程也得到執(zhí)行的機會,兼顧進程調(diào)度的公平性和實時性。

      在本發(fā)明的一種具體實施方式中,進程調(diào)度模塊420,具體用于:

      在當前進程調(diào)度周期內(nèi),按照進程組的優(yōu)先級順序依次將每個進程組確定為目標進程組;

      對目標進程組中的進程進行調(diào)度;

      在目標進程組中的進程運行時間達到預設(shè)的目標進程組對應的組時間片時,將目標進程組中運行的進程停止;

      確定目標進程組的優(yōu)先級是否最低;

      如果否,則對優(yōu)先級低于目標進程組的進程組中的進程進行調(diào)度;

      如果是,則進行下一進程調(diào)度周期的進程調(diào)度。

      在本發(fā)明的一種具體實施方式中,進程調(diào)度模塊420,還用于:

      在將目標進程組中運行的進程停止之后,確定被停止的進程的虛擬時間;

      根據(jù)進程的虛擬時間,對目標進程組中的進程進行排序。

      在本發(fā)明的一種具體實施方式中,待調(diào)度進程確定模塊430,具體用于:

      針對每個進程組,在對該進程組中的進程進行調(diào)度時,根據(jù)該進程組中每個進程的虛擬時間的大小,對該進程組中的進程進行排序;

      將虛擬時間最小的進程確定為待進行調(diào)度的進程。

      在本發(fā)明的一種具體實施方式中,虛擬時間為:根據(jù)進程執(zhí)行任務還需要的時間和進程執(zhí)行任務所需總時間的比值確定的。

      本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其它實施例的不同之處,各個實施例之間相同或相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應,所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。

      專業(yè)人員還可以進一步意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應認為超出本發(fā)明的范圍。

      結(jié)合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實施。軟件模塊可以置于隨機存儲器(RAM)、內(nèi)存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。

      本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的技術(shù)方案及其核心思想。應當指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以對本發(fā)明進行若干改進和修飾,這些改進和修飾也落入本發(fā)明權(quán)利要求的保護范圍內(nèi)。

      當前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1