国产精品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>

      進(jìn)程調(diào)度方法及裝置與流程

      文檔序號(hào):12463575閱讀:169來源:國知局
      進(jìn)程調(diào)度方法及裝置與流程

      本發(fā)明涉及終端技術(shù)領(lǐng)域,特別涉及一種進(jìn)程調(diào)度方法及裝置。



      背景技術(shù):

      隨著終端技術(shù)的快速發(fā)展,終端中可以設(shè)有多個(gè)CPU(Central Processing Unit,中央處理器),終端可以通過該多個(gè)CPU執(zhí)行進(jìn)程,但是一個(gè)CPU同一時(shí)間只能執(zhí)行一個(gè)進(jìn)程,因此,終端需要對(duì)當(dāng)前待執(zhí)行的多個(gè)進(jìn)程進(jìn)行調(diào)度,并將該多個(gè)進(jìn)程分配給不同的CPU去執(zhí)行。

      目前,終端通常采用的進(jìn)程調(diào)度方法為:當(dāng)一個(gè)進(jìn)程被創(chuàng)建時(shí),終端遍歷多個(gè)CPU中的每個(gè)CPU的就緒隊(duì)列,以從該多個(gè)CPU中確定待執(zhí)行的進(jìn)程最少的PCU,就緒隊(duì)列用于存儲(chǔ)終端為CPU分配的多個(gè)待執(zhí)行的進(jìn)程。之后,該終端可以將創(chuàng)建的進(jìn)程分配給確定的CPU。

      現(xiàn)有的進(jìn)程調(diào)度控制中,大多僅考慮就緒隊(duì)列中待執(zhí)行的進(jìn)程的數(shù)量,而對(duì)其他相關(guān)因素的考慮很少,因此進(jìn)程的調(diào)度控制策略有待優(yōu)化。



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

      為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實(shí)施例提供了一種進(jìn)程調(diào)度方法及裝置,能夠優(yōu)化進(jìn)程的調(diào)度控制,提高系統(tǒng)資源的利用效率。

      一方面,提供了一種進(jìn)程調(diào)度方法,所述方法包括:

      確定第一目標(biāo)中央處理器CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào),所述第一目標(biāo)CPU為多個(gè)CPU中的任一個(gè);

      從多個(gè)就緒隊(duì)列中選擇父進(jìn)程號(hào)與所述第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)一致的進(jìn)程,所述多個(gè)就緒隊(duì)列與所述多個(gè)CPU一一對(duì)應(yīng),且各個(gè)就緒隊(duì)列用于存儲(chǔ)各個(gè)CPU待執(zhí)行的進(jìn)程;

      將選擇的進(jìn)程添加到所述第一目標(biāo)CPU的就緒隊(duì)列中,以實(shí)現(xiàn)進(jìn)程的調(diào)度。

      可選地,所述從多個(gè)就緒隊(duì)列中選擇父進(jìn)程號(hào)與所述第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)一致的進(jìn)程,包括:

      對(duì)多個(gè)就緒隊(duì)列進(jìn)行遍歷,得到所述多個(gè)就緒隊(duì)列中每個(gè)進(jìn)程的父進(jìn)程號(hào);

      判斷所述每個(gè)進(jìn)程的父進(jìn)程號(hào)是否與所述第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)相同,若是,則確定出父進(jìn)程號(hào)與所述第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)一致的進(jìn)程。

      可選地,所述確定第一目標(biāo)中央處理器CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào),包括:

      獲取所述第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的進(jìn)程信息;

      從所述第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的進(jìn)程信息中,確定所述第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)。

      可選地,所述將選擇的進(jìn)程添加到所述第一目標(biāo)CPU的就緒隊(duì)列中之前,還包括:

      確定所述第一目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量,判斷確定的進(jìn)程數(shù)量是否超過預(yù)設(shè)數(shù)量,若否,執(zhí)行所述將選擇的進(jìn)程添加到所述第一目標(biāo)CPU的就緒隊(duì)列中的步驟。

      可選地,所述將選擇的進(jìn)程添加到所述第一目標(biāo)CPU的就緒隊(duì)列中之前,還包括:

      判斷所述多個(gè)CPU中是否存在第二目標(biāo)CPU,所述第二目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)與所述第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)一致;

      若否,則執(zhí)行所述將選擇的進(jìn)程添加到所述第一目標(biāo)CPU的就緒隊(duì)列中的步驟;

      若是,則確定所述第一目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量,以及所述第二目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量,并判斷所述第一目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量是否小于所述第二目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量,若是,則執(zhí)行所述將選擇的進(jìn)程添加到所述第一目標(biāo)CPU的就緒隊(duì)列中的步驟。

      另一方面,提供了一種進(jìn)程調(diào)度裝置,所述裝置包括:

      第一確定模塊,用于確定第一目標(biāo)中央處理器CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào),所述第一目標(biāo)CPU為多個(gè)CPU中的任一個(gè);

      選擇模塊,用于從多個(gè)就緒隊(duì)列中選擇父進(jìn)程號(hào)與所述第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)一致的進(jìn)程,所述多個(gè)就緒隊(duì)列與所述多個(gè)CPU一一對(duì)應(yīng),且各個(gè)就緒隊(duì)列用于存儲(chǔ)各個(gè)CPU待執(zhí)行的進(jìn)程;

      調(diào)度模塊,用于將選擇的進(jìn)程添加到所述第一目標(biāo)CPU的就緒隊(duì)列中,以實(shí)現(xiàn)進(jìn)程的調(diào)度。

      可選地,所述選擇模塊從多個(gè)就緒隊(duì)列中選擇父進(jìn)程號(hào)與所述第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)一致的進(jìn)程,包括:

      對(duì)多個(gè)就緒隊(duì)列進(jìn)行遍歷,得到所述多個(gè)就緒隊(duì)列中每個(gè)進(jìn)程的父進(jìn)程號(hào);

      判斷所述每個(gè)進(jìn)程的父進(jìn)程號(hào)是否與所述第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)相同,若是,則確定出父進(jìn)程號(hào)與所述第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)一致的進(jìn)程。

      可選地,所述第一確定模塊確定第一目標(biāo)中央處理器CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào),包括:

      獲取所述第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的進(jìn)程信息;

      從所述第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的進(jìn)程信息中,確定所述第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)。

      可選地,所述裝置還包括:

      第二確定模塊,用于確定所述第一目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量,判斷確定的進(jìn)程數(shù)量是否超過預(yù)設(shè)數(shù)量,若否,調(diào)用所述調(diào)度模塊將選擇的進(jìn)程添加到所述第一目標(biāo)CPU的就緒隊(duì)列中。

      可選地,所述裝置還包括:

      判斷模塊,用于判斷所述多個(gè)CPU中是否存在第二目標(biāo)CPU,其中,所述第二目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)與所述第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)一致;

      若否,則調(diào)用所述調(diào)度模塊將選擇的進(jìn)程添加到所述第一目標(biāo)CPU的就緒隊(duì)列中,

      若是,則確定所述第一目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量,以及所述第二目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量,并判斷所述第一目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量是否小于所述第二目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量,若第一目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量小于第二目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量,則調(diào)用所述調(diào)度模塊將選擇的進(jìn)程添加到所述第一目標(biāo)CPU的就緒隊(duì)列中。

      本發(fā)明實(shí)施例提供的技術(shù)方案帶來的有益效果是:

      首先,本發(fā)明通過確定第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào),然后可以從多個(gè)就緒隊(duì)列中,選擇父進(jìn)程號(hào)與第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)一致的進(jìn)程,并將選擇的進(jìn)程添加到第一目標(biāo)CPU的就緒隊(duì)列中,也即是終端可以將父進(jìn)程號(hào)一致的進(jìn)程添加到同一CPU的就緒隊(duì)列中,進(jìn)而可以通過同一CPU執(zhí)行父進(jìn)程號(hào)一致的進(jìn)程。當(dāng)終端通過該CPU執(zhí)行父進(jìn)程號(hào)一致的任一進(jìn)程時(shí),可以直接從該CPU的緩存中調(diào)用數(shù)據(jù),而不是從內(nèi)存中調(diào)用數(shù)據(jù),提高了數(shù)據(jù)調(diào)用的效率,優(yōu)化了進(jìn)程調(diào)度的策略,而且能夠避免終端資源的浪費(fèi),縮短執(zhí)行進(jìn)程的時(shí)間,進(jìn)而改善終端系統(tǒng)的實(shí)時(shí)性。

      其次,本發(fā)明通過在將所選擇的進(jìn)程添加到目標(biāo)CPU的進(jìn)程隊(duì)列之前判斷目標(biāo)CPU的就緒隊(duì)列的進(jìn)程數(shù)量,將目標(biāo)CPU的就緒進(jìn)程數(shù)量作為進(jìn)程調(diào)度的又一考慮因素,在上述考慮同一父進(jìn)程所屬的各子進(jìn)程之間共享部分信息從而在已執(zhí)行該父進(jìn)程所屬子進(jìn)程的CPU上執(zhí)行的基礎(chǔ)上,進(jìn)一步優(yōu)化了進(jìn)程調(diào)度的策略,能夠進(jìn)一步改善終端系統(tǒng)的實(shí)時(shí)性。

      再次,本發(fā)明通過在將所選擇的進(jìn)程添加到第一目標(biāo)CPU的就緒隊(duì)列之前判斷是否存在同樣執(zhí)行該第一目標(biāo)CPU當(dāng)前執(zhí)行進(jìn)程的父進(jìn)程所屬的子進(jìn)程的第二目標(biāo)CPU,并判斷第一和第二目標(biāo)CPU的就緒隊(duì)列的進(jìn)程數(shù)量,選擇將待添加的進(jìn)程添加到進(jìn)程數(shù)量較小的就緒隊(duì)列中,將執(zhí)行同一父進(jìn)程所屬的各個(gè)子進(jìn)程的多個(gè)CPU作為進(jìn)程調(diào)度的又一考慮因素,在上述考慮同一父進(jìn)程所屬的各子進(jìn)程之間共享部分信息從而在已執(zhí)行該父進(jìn)程所屬子進(jìn)程的CPU上執(zhí)行的基礎(chǔ)上,對(duì)能夠執(zhí)行同一父進(jìn)程所屬的各子進(jìn)程的CPU進(jìn)行了細(xì)化,進(jìn)一步優(yōu)化了進(jìn)程調(diào)度的策略,能夠進(jìn)一步改善終端系統(tǒng)的實(shí)時(shí)性。

      附圖說明

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

      圖1是本發(fā)明實(shí)施例提供的一種進(jìn)程調(diào)度方法的流程圖;

      圖2是本發(fā)明實(shí)施例提供的另一種進(jìn)程調(diào)度方法的流程圖;

      圖3A是本發(fā)明實(shí)施例提供的一種進(jìn)程調(diào)度裝置的框圖;

      圖3B是本發(fā)明實(shí)施例提供的另一種進(jìn)程調(diào)度裝置的框圖;

      圖3C是本發(fā)明實(shí)施例提供的第三種進(jìn)程調(diào)度裝置的框圖。

      具體實(shí)施方式

      為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。

      在對(duì)本發(fā)明實(shí)施例進(jìn)行詳細(xì)的解釋說明之前,先對(duì)本發(fā)明實(shí)施例的應(yīng)用場景予以介紹。在終端中,一個(gè)進(jìn)程可以創(chuàng)建多個(gè)子進(jìn)程,其中,創(chuàng)建子進(jìn)程的進(jìn)程被稱為父進(jìn)程,且屬于同一父進(jìn)程的多個(gè)子進(jìn)程的父進(jìn)程號(hào)均相同。當(dāng)一個(gè)父進(jìn)程創(chuàng)建多個(gè)子進(jìn)程之后,終端可以為該多個(gè)子進(jìn)程分別分配內(nèi)存空間,然后將父進(jìn)程的代碼、堆、棧等數(shù)據(jù)拷貝到該多個(gè)子進(jìn)程各自的內(nèi)存空間中,使得當(dāng)終端執(zhí)行任一子進(jìn)程出現(xiàn)錯(cuò)誤時(shí),不會(huì)破壞父進(jìn)程的內(nèi)存空間中的數(shù)據(jù)。

      當(dāng)終端通過任一個(gè)CPU執(zhí)行某個(gè)子進(jìn)程時(shí),可能會(huì)將執(zhí)行該子進(jìn)程用到的某些數(shù)據(jù)和指令存儲(chǔ)在該CPU的緩存中,而終端執(zhí)行屬于同一個(gè)父進(jìn)程的其他子進(jìn)程時(shí)可能也會(huì)用到一部分相同的數(shù)據(jù)和指令。當(dāng)屬于同一個(gè)父進(jìn)程的其他子進(jìn)程在該CPU上執(zhí)行時(shí),終端可以直接從該CPU的緩存中調(diào)取這些數(shù)據(jù)和指令,而當(dāng)屬于同一個(gè)父進(jìn)程的其他子進(jìn)程在該CPU之外的其他CPU上執(zhí)行時(shí),終端則需要從內(nèi)存中調(diào)取這些數(shù)據(jù)和指令,從而延長了執(zhí)行子進(jìn)程的時(shí)間,造成了終端資源的浪費(fèi),并降低了終端系統(tǒng)的實(shí)時(shí)性。

      為此,本發(fā)明通過如下任一實(shí)施例,將與第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)一致的進(jìn)程調(diào)度到第一目標(biāo)CPU上執(zhí)行。需要說明的是,本發(fā)明實(shí)施例提供的進(jìn)程調(diào)度方法可以應(yīng)用于Linux系統(tǒng),當(dāng)然,實(shí)際應(yīng)用中,還可以應(yīng)用于其他系統(tǒng),比如Unix系統(tǒng)等等。

      本發(fā)明實(shí)施例提供了一種進(jìn)程調(diào)度方法,參見圖1,該方法包括:

      步驟101:確定第一目標(biāo)中央處理器CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào),該第一目標(biāo)CPU為多個(gè)CPU中的任一個(gè)。

      步驟102:從多個(gè)就緒隊(duì)列中選擇父進(jìn)程號(hào)與第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)一致的進(jìn)程,該多個(gè)就緒隊(duì)列與多個(gè)CPU一一對(duì)應(yīng),且各個(gè)就緒隊(duì)列用于存儲(chǔ)各個(gè)CPU待執(zhí)行的進(jìn)程。

      步驟103:將選擇的進(jìn)程添加到第一目標(biāo)CPU的就緒隊(duì)列中,以實(shí)現(xiàn)進(jìn)程的調(diào)度。

      在本發(fā)明實(shí)施例中,第一目標(biāo)CPU可以是終端上多個(gè)CPU中的任意一個(gè)。首先確定第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào),然后可以從多個(gè)就緒隊(duì)列中,選擇父進(jìn)程號(hào)與第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)一致的進(jìn)程,并將選擇的進(jìn)程添加到第一目標(biāo)CPU的就緒隊(duì)列中,也即是終端可以將父進(jìn)程號(hào)一致的進(jìn)程添加到同一CPU的就緒隊(duì)列中,進(jìn)而可以通過同一CPU執(zhí)行父進(jìn)程號(hào)一致的進(jìn)程。當(dāng)終端通過該CPU執(zhí)行父進(jìn)程號(hào)一致的任一進(jìn)程時(shí),可以直接從該CPU的緩存中調(diào)用數(shù)據(jù),而不是從內(nèi)存中調(diào)用數(shù)據(jù),提高了數(shù)據(jù)調(diào)用的效率,從而避免了終端資源的浪費(fèi),縮短了執(zhí)行進(jìn)程的時(shí)間,進(jìn)而有利于改善終端系統(tǒng)的實(shí)時(shí)性。

      本發(fā)明實(shí)施例提供了一種進(jìn)程調(diào)度方法,參見圖2,該方法包括:

      步驟201:確定第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào),第一目標(biāo)CPU為多個(gè)CPU中的任一個(gè)CPU。

      其中,終端首先獲取第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的進(jìn)程信息,然后從第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的進(jìn)程信息中,確定第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)。

      需要說明的是,該進(jìn)程信息可以包括進(jìn)程的進(jìn)程號(hào)、父進(jìn)程號(hào)、組進(jìn)程號(hào),當(dāng)然,實(shí)際應(yīng)用中,還可以包括實(shí)際用戶ID(Identity,身份標(biāo)識(shí)號(hào)碼)、有效用戶ID等等。

      步驟202:對(duì)多個(gè)就緒隊(duì)列進(jìn)行遍歷,得到該多個(gè)就緒隊(duì)列中每個(gè)進(jìn)程的父進(jìn)程號(hào),該多個(gè)就緒隊(duì)列與多個(gè)CPU一一對(duì)應(yīng),且各個(gè)就緒隊(duì)列用于存儲(chǔ)各個(gè)CPU待執(zhí)行的進(jìn)程。

      其中,終端對(duì)多個(gè)就緒隊(duì)列進(jìn)行遍歷,然后從各個(gè)就緒隊(duì)列存儲(chǔ)的每個(gè)進(jìn)程的進(jìn)程信息中,獲取每個(gè)進(jìn)程的父進(jìn)程號(hào)。

      需要說明的是,當(dāng)一個(gè)進(jìn)程被創(chuàng)建時(shí),終端會(huì)為該進(jìn)程分配一個(gè)CPU,以執(zhí)行該進(jìn)程,此時(shí)終端會(huì)將該進(jìn)程的進(jìn)程信息添加到該CPU的就緒隊(duì)列中,以將該進(jìn)程存儲(chǔ)到該CPU的就緒隊(duì)列中。

      另外,由于終端中不斷有進(jìn)程被創(chuàng)建,因此多個(gè)就緒隊(duì)列也在實(shí)時(shí)更新,此時(shí)終端可以通過設(shè)置定時(shí)器,以實(shí)現(xiàn)每隔預(yù)設(shè)時(shí)長對(duì)多個(gè)就緒隊(duì)列進(jìn)行遍歷,從而提高對(duì)多個(gè)就緒隊(duì)列進(jìn)行遍歷的實(shí)時(shí)性。

      步驟203:判斷每個(gè)進(jìn)程的父進(jìn)程號(hào)是否與第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)相同,若是,則執(zhí)行步驟S204,

      步驟S204:確定出父進(jìn)程號(hào)與第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)一致的進(jìn)程。

      將對(duì)多個(gè)就緒隊(duì)列進(jìn)行遍歷得到的每個(gè)進(jìn)程的父進(jìn)程號(hào)與第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)進(jìn)行比較,從而可以確定出父進(jìn)程號(hào)與第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)一致的進(jìn)程。由于多個(gè)就緒隊(duì)列用于存儲(chǔ)各個(gè)CPU待執(zhí)行的進(jìn)程,也即是,該多個(gè)就緒隊(duì)列中存儲(chǔ)的進(jìn)程還未開始執(zhí)行,因此,從該多個(gè)就緒隊(duì)列中確定出父進(jìn)程號(hào)與第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)一致的進(jìn)程,不會(huì)對(duì)該多個(gè)CPU當(dāng)前正在執(zhí)行的進(jìn)程造成影響,從而可以保證終端的穩(wěn)定運(yùn)行。

      步驟205:將選擇的進(jìn)程添加到第一目標(biāo)CPU的就緒隊(duì)列中,以實(shí)現(xiàn)進(jìn)程的調(diào)度。

      其中,終端實(shí)現(xiàn)進(jìn)程調(diào)度的方式可以包括下述兩種實(shí)現(xiàn)方式:

      第一種實(shí)現(xiàn)方式:

      確定第一目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量,判斷確定的進(jìn)程數(shù)量是否超過預(yù)設(shè)數(shù)量;

      若否,將選擇的進(jìn)程添加到第一目標(biāo)CPU的就緒隊(duì)列中,

      否是,結(jié)束操作,并通過原先分配的CPU執(zhí)行該進(jìn)程。

      由于終端中每個(gè)CPU的就緒隊(duì)列中都存儲(chǔ)有多個(gè)待執(zhí)行的進(jìn)程,而對(duì)于終端中的各個(gè)CPU,當(dāng)該CPU的就緒隊(duì)列中待執(zhí)行的進(jìn)程數(shù)量較少時(shí),說明該CPU的負(fù)荷較輕,當(dāng)該CPU的就緒隊(duì)列中待執(zhí)行的進(jìn)程數(shù)量較多時(shí),說明該CPU的負(fù)荷較重。因此,當(dāng)確定的進(jìn)程數(shù)量不超過預(yù)設(shè)數(shù)量時(shí),也即是當(dāng)?shù)谝荒繕?biāo)CPU的就緒隊(duì)列中待執(zhí)行的進(jìn)程數(shù)量較少時(shí),說明第一目標(biāo)CPU的負(fù)荷較輕,此時(shí)終端可以將選擇的進(jìn)程添加到第一目標(biāo)CPU的就緒隊(duì)列中,通過第一目標(biāo)CPU執(zhí)行選擇的進(jìn)程,從而不至于超出第一目標(biāo)CPU的負(fù)荷,也可以兼顧終端中各個(gè)CPU的負(fù)荷,使得每個(gè)CPU的負(fù)荷不至于過重,進(jìn)而提高終端的運(yùn)行速度,改善終端系統(tǒng)的實(shí)時(shí)性。

      進(jìn)一步地,當(dāng)確定的進(jìn)程數(shù)量超過預(yù)設(shè)數(shù)量時(shí),也即是當(dāng)?shù)谝荒繕?biāo)CPU的就緒隊(duì)列中待執(zhí)行的進(jìn)程的數(shù)量較多時(shí),說明第一目標(biāo)CPU的負(fù)荷較重,此時(shí)終端可以結(jié)束操作,并通過原先分配的CPU執(zhí)行該進(jìn)程,從而減輕第一目標(biāo)CPU的負(fù)荷。

      其中,該預(yù)設(shè)數(shù)量可以為終端根據(jù)CPU的性能參數(shù)等事先設(shè)置的數(shù)量,比如該預(yù)設(shè)數(shù)量可以為40、50等等。

      本發(fā)明的實(shí)施方式通過在將所選擇的進(jìn)程添加到目標(biāo)CPU的進(jìn)程隊(duì)列之前判斷目標(biāo)CPU的就緒隊(duì)列的進(jìn)程數(shù)量,將目標(biāo)CPU的就緒進(jìn)程數(shù)量作為進(jìn)程調(diào)度的又一考慮因素,在上述考慮同一父進(jìn)程所屬的各子進(jìn)程之間共享部分信息從而在已經(jīng)執(zhí)行該父進(jìn)程所屬的子進(jìn)程的CPU上執(zhí)行的基礎(chǔ)上,進(jìn)一步優(yōu)化了進(jìn)程調(diào)度的策略,從而能夠進(jìn)一步改善終端系統(tǒng)的實(shí)時(shí)性。

      第二種實(shí)現(xiàn)方式:

      判斷多個(gè)CPU中是否存在第二目標(biāo)CPU,第二目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)與第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)一致;

      若否,則將選擇的進(jìn)程添加到第一目標(biāo)CPU的就緒隊(duì)列中;

      若是,則確定第一目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量,以及第二目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量,并判斷第一目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量是否小于第二目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量,若是,則執(zhí)行將選擇的進(jìn)程添加到第一目標(biāo)CPU的就緒隊(duì)列中的步驟,若否,則將所選擇的進(jìn)程添加到第二目標(biāo)CPU的就緒隊(duì)列。

      由于該多個(gè)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)可能相同,也可能不同,而當(dāng)該多個(gè)CPU中至少兩個(gè)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)相同時(shí),終端進(jìn)行進(jìn)程調(diào)度時(shí),可能不知道該將選擇的進(jìn)程添加到哪個(gè)CPU的就緒隊(duì)列中,因此,終端可以先判斷多個(gè)CPU中是否存在第二目標(biāo)CPU,判斷多個(gè)CPU中哪個(gè)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)與第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)一致,進(jìn)而當(dāng)多個(gè)CPU中不存在第二目標(biāo)CPU時(shí),說明終端中不存在與第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)一致的CPU,此時(shí)終端可以將選擇的進(jìn)程添加到第一目標(biāo)CPU的就緒隊(duì)列中,以實(shí)現(xiàn)進(jìn)程的調(diào)度。

      進(jìn)一步地,當(dāng)多個(gè)CPU中存在第二目標(biāo)CPU時(shí),說明終端中存在與第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)一致的CPU,此時(shí)終端可以從第一目標(biāo)CPU和第二目標(biāo)CPU中,選擇就緒隊(duì)列中進(jìn)程數(shù)量較少的CPU來執(zhí)行選擇的進(jìn)程,也即是選擇負(fù)荷較輕的CPU來執(zhí)行選擇的進(jìn)程。因此,終端可以確定第一目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量,以及第二目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量,當(dāng)?shù)谝荒繕?biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量小于第二目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量時(shí),說明第一目標(biāo)CPU的負(fù)荷比第二目標(biāo)CPU的負(fù)荷小,此時(shí)終端可以將選擇的進(jìn)程添加到第一目標(biāo)CPU的就緒隊(duì)列中,以實(shí)現(xiàn)進(jìn)程的調(diào)度,從而提高了終端系統(tǒng)的實(shí)時(shí)性,同時(shí)也兼顧第一目標(biāo)CPU和第二目標(biāo)CPU的負(fù)荷,通過負(fù)荷較輕的第一目標(biāo)CPU執(zhí)行選擇的進(jìn)程,可以提高終端的運(yùn)行速度。

      更進(jìn)一步地,當(dāng)?shù)谝荒繕?biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量大于第二目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量時(shí),說明第一目標(biāo)CPU的負(fù)荷比第二目標(biāo)CPU的負(fù)荷大,此時(shí)終端可以將選擇的進(jìn)程添加到第二目標(biāo)CPU的就緒隊(duì)列中,以實(shí)現(xiàn)進(jìn)程的調(diào)度,同時(shí)也兼顧第一目標(biāo)CPU和第二目標(biāo)CPU的負(fù)荷,通過負(fù)荷較輕的第二目標(biāo)CPU執(zhí)行選擇的進(jìn)程,可以提高終端的運(yùn)行速度,從而提高了終端系統(tǒng)的實(shí)時(shí)性。

      值得注意的是,當(dāng)?shù)谝荒繕?biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量等于第二目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量時(shí),說明第一目標(biāo)CPU的負(fù)荷和第二目標(biāo)CPU的負(fù)荷相同,此時(shí)終端可以將選擇的進(jìn)程添加到第一目標(biāo)CPU的就緒隊(duì)列中,當(dāng)然,也可以將選擇的進(jìn)程添加到第二目標(biāo)CPU的就緒隊(duì)列中,以實(shí)現(xiàn)進(jìn)程的調(diào)度。

      需要說明的是,當(dāng)多個(gè)CPU中存在多個(gè)第二目標(biāo)CPU時(shí),終端可以從第一目標(biāo)CPU,以及多個(gè)第二目標(biāo)CPU中,選擇就緒隊(duì)列中進(jìn)程數(shù)量最少的CPU,并將選擇的進(jìn)程添加到就緒隊(duì)列中進(jìn)程數(shù)量最少的CPU的就緒隊(duì)列中,以實(shí)現(xiàn)進(jìn)程的調(diào)度。

      本發(fā)明的實(shí)施方式通過在將所選擇的進(jìn)程添加到第一目標(biāo)CPU的就緒隊(duì)列之前判斷是否存在同樣執(zhí)行該第一目標(biāo)CPU當(dāng)前執(zhí)行進(jìn)程的父進(jìn)程所屬的子進(jìn)程的第二目標(biāo)CPU,并判斷第一和第二目標(biāo)CPU的就緒隊(duì)列的進(jìn)程數(shù)量,選擇將待添加的進(jìn)程添加到進(jìn)程數(shù)量較小的就緒隊(duì)列中,將執(zhí)行同一父進(jìn)程所屬的各個(gè)子進(jìn)程的多個(gè)CPU作為進(jìn)程調(diào)度的又一考慮因素,在上述考慮同一父進(jìn)程所屬的各子進(jìn)程之間共享部分信息從而在已執(zhí)行該父進(jìn)程所屬子進(jìn)程的CPU上執(zhí)行的基礎(chǔ)上,對(duì)能夠執(zhí)行同一父進(jìn)程所屬的各子進(jìn)程的CPU進(jìn)行了細(xì)化,進(jìn)一步優(yōu)化了進(jìn)程調(diào)度的策略,能夠進(jìn)一步改善終端系統(tǒng)的實(shí)時(shí)性。

      綜上所述,本發(fā)明通過獲取多個(gè)就緒隊(duì)列中每個(gè)進(jìn)程的父進(jìn)程號(hào),以及第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào),然后從多個(gè)就緒隊(duì)列中,選擇父進(jìn)程號(hào)與第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)一致的進(jìn)程,當(dāng)?shù)谝荒繕?biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量不超過預(yù)設(shè)數(shù)量時(shí),或者當(dāng)多個(gè)CPU中不存在第二目標(biāo)CPU時(shí),或者當(dāng)多個(gè)CPU中存在第二目標(biāo)CPU,且第一目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量小于第二目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量時(shí),終端可以將選擇的進(jìn)程添加到第一目標(biāo)CPU的就緒隊(duì)列中,也即是終端可以將父進(jìn)程號(hào)一致的進(jìn)程添加到同一CPU的就緒隊(duì)列中,進(jìn)而可以通過同一CPU執(zhí)行父進(jìn)程號(hào)一致的進(jìn)程。當(dāng)終端通過該CPU執(zhí)行父進(jìn)程號(hào)一致的任一進(jìn)程時(shí),可以直接從該CPU的緩存中調(diào)用相關(guān)數(shù)據(jù),而不是從內(nèi)存中調(diào)用相關(guān)數(shù)據(jù),從而避免了終端資源的浪費(fèi),縮短了進(jìn)程執(zhí)行的時(shí)間,也可以兼顧各個(gè)CPU的負(fù)荷,使得每個(gè)CPU的負(fù)荷不至于過重,綜合優(yōu)化進(jìn)程調(diào)度的策略,從而提高終端系統(tǒng)的資源利用效率,改善系統(tǒng)的實(shí)時(shí)性。

      上面結(jié)合具體實(shí)施方式和附圖對(duì)本發(fā)明的進(jìn)程調(diào)度方法進(jìn)行了說明,下面將結(jié)合附圖對(duì)與上述方法對(duì)應(yīng)的裝置進(jìn)行說明。

      參見圖3A,本發(fā)明實(shí)施例提供了一種進(jìn)程調(diào)度裝置300,該裝置包括:第一確定模塊301、選擇模塊302和調(diào)度模塊303。

      第一確定模塊301,用于確定第一目標(biāo)中央處理器CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào),第一目標(biāo)CPU為多個(gè)CPU中的任一個(gè);

      選擇模塊302,用于從多個(gè)就緒隊(duì)列中選擇父進(jìn)程號(hào)與第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)一致的進(jìn)程,多個(gè)就緒隊(duì)列與多個(gè)CPU一一對(duì)應(yīng),且各個(gè)就緒隊(duì)列用于存儲(chǔ)各個(gè)CPU待執(zhí)行的進(jìn)程;

      調(diào)度模塊303,用于將選擇的進(jìn)程添加到第一目標(biāo)CPU的就緒隊(duì)列中,以實(shí)現(xiàn)進(jìn)程的調(diào)度。

      可選地,選擇模塊302從多個(gè)就緒隊(duì)列中選擇父進(jìn)程號(hào)與第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)一致的進(jìn)程,包括:

      對(duì)多個(gè)就緒隊(duì)列進(jìn)行遍歷,得到多個(gè)就緒隊(duì)列中每個(gè)進(jìn)程的父進(jìn)程號(hào);

      判斷每個(gè)進(jìn)程的父進(jìn)程號(hào)是否與第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)相同,若是,則確定出父進(jìn)程號(hào)與第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)一致的進(jìn)程。

      可選地,第一確定模塊301確定第一目標(biāo)中央處理器CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào),包括:

      獲取第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的進(jìn)程信息;

      從第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的進(jìn)程信息中,確定第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)。

      可選地,參見圖3B,該裝置還包括:

      第二確定模塊304,用于確定第一目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量,判斷確定的進(jìn)程數(shù)量是否超過預(yù)設(shè)數(shù)量,若否,調(diào)用調(diào)度模塊將選擇的進(jìn)程添加到第一目標(biāo)CPU的就緒隊(duì)列中。

      可選地,參見圖3C,該裝置還包括:

      判斷模塊305,用于:

      判斷多個(gè)CPU中是否存在第二目標(biāo)CPU,其中,第二目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)與第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)一致;

      若否,則調(diào)用調(diào)度模塊將選擇的進(jìn)程添加到第一目標(biāo)CPU的就緒隊(duì)列中,

      若是,則確定第一目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量,以及第二目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量,并判斷第一目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量是否小于第二目標(biāo)CPU的就緒隊(duì)列中的進(jìn)程數(shù)量,若是,則調(diào)用調(diào)度模塊將選擇的進(jìn)程添加到第一目標(biāo)CPU的就緒隊(duì)列中。

      綜上所述,在本發(fā)明實(shí)施例中,首先確定第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào),然后可以從多個(gè)就緒隊(duì)列中,選擇父進(jìn)程號(hào)與第一目標(biāo)CPU當(dāng)前執(zhí)行的進(jìn)程的父進(jìn)程號(hào)一致的進(jìn)程,并將選擇的進(jìn)程添加到第一目標(biāo)CPU的就緒隊(duì)列中,也即是終端可以將父進(jìn)程號(hào)一致的進(jìn)程添加到同一CPU的就緒隊(duì)列中,進(jìn)而可以通過同一CPU執(zhí)行父進(jìn)程號(hào)一致的進(jìn)程。當(dāng)終端通過該CPU執(zhí)行父進(jìn)程號(hào)一致的任一進(jìn)程時(shí),可以直接從該CPU的緩存中調(diào)用數(shù)據(jù),而不是從內(nèi)存中調(diào)用數(shù)據(jù),從而避免了終端資源的浪費(fèi),縮短了執(zhí)行進(jìn)程的時(shí)間,進(jìn)而提高了終端系統(tǒng)的實(shí)時(shí)性。

      需要說明的是:上述實(shí)施例提供的進(jìn)程調(diào)度裝置在調(diào)度進(jìn)程時(shí),僅以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將設(shè)備的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實(shí)施例提供的進(jìn)程調(diào)度裝置與進(jìn)程調(diào)度方法實(shí)施例屬于同一構(gòu)思,其具體實(shí)現(xiàn)過程詳見方法實(shí)施例,這里不再贅述。

      本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。

      以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

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