一種o1調(diào)度算法的改進方法及裝置的制造方法
【專利摘要】本發(fā)明公開了一種O1調(diào)度算法的改進方法,包括統(tǒng)計全部進程的進程數(shù)目和優(yōu)先級,并按照分配規(guī)則為每個進程分配運行時間片長度和響應(yīng)時間長度;S11:將當(dāng)前系統(tǒng)內(nèi)的進程按照優(yōu)先級順序生成本次進程調(diào)度序列;判斷是否包含有延時調(diào)度進程;如果是,則進入步驟S13,如果否,則進入步驟S14;S13:當(dāng)?shù)竭_本次延時調(diào)度進程的響應(yīng)時間時,調(diào)度延時調(diào)度進程;返回步驟S11;S14:當(dāng)?shù)竭_本次進程調(diào)度序列中優(yōu)先級最高的進程的響應(yīng)時間時,調(diào)度優(yōu)先級最高的進程;返回步驟S11。由此可見,每個進程都能夠被及時調(diào)度,即使存在延時也會在下一輪被及時調(diào)度。通過該方法提高了系統(tǒng)的穩(wěn)定性。此外本發(fā)明還提供一種O1調(diào)度算法的改進裝置,效果如上。
【專利說明】
一種01調(diào)度算法的改進方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及Linux技術(shù)領(lǐng)域,特別是涉及一種01調(diào)度算法的改進方法及裝置。
【背景技術(shù)】
[0002]在高版本的Linux系統(tǒng)中01算法早已被CFS調(diào)度算法所取代,但是在許多嵌入式操作系統(tǒng)中,01算法仍然占有重要地位。但是現(xiàn)有的01算法,由于沒有對系統(tǒng)內(nèi)的進程的響應(yīng)時間長度和運行時間長度做規(guī)劃,導(dǎo)致優(yōu)先級低的進程長時間得不到響應(yīng),造成系統(tǒng)崩潰。
[0003]由此可見,如何合理調(diào)度每個進程,避免某個進程長時間得不到響應(yīng)的問題是本領(lǐng)域技術(shù)人員亟待解決地問題。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的是提供一種01調(diào)度算法的改進方法及裝置,用于合理調(diào)度每個進程,避免某個進程長時間得不到響應(yīng)。
[0005]為解決上述技術(shù)問題,本發(fā)明提供一種01調(diào)度算法的改進方法,包括:
[0006]SlO:統(tǒng)計全部進程的進程數(shù)目和優(yōu)先級,并按照分配規(guī)則為每個進程分配運行時間片長度和響應(yīng)時間長度;
[0007]其中,所述分配規(guī)則為每個進程具有相同的時間片長度,優(yōu)先級越高則響應(yīng)時間長度越短,相同的優(yōu)先級具有相同的響應(yīng)時間長度;
[0008]SI 1:將當(dāng)前系統(tǒng)內(nèi)的進程按照優(yōu)先級順序生成本次進程調(diào)度序列;
[0009]S12:判斷本次進程調(diào)度序列中是否包含有延時調(diào)度進程;如果是,則進入步驟S13,如果否,則進入步驟S14 ;
[0010]S13:當(dāng)?shù)竭_本次延時調(diào)度進程的響應(yīng)時間時,調(diào)度所述延時調(diào)度進程,并在到達所述延時調(diào)度進程的運行時間片長度時停止調(diào)度;返回步驟Sll;
[0011]S14:當(dāng)?shù)竭_本次進程調(diào)度序列中優(yōu)先級最高的進程的響應(yīng)時間時,調(diào)度所述優(yōu)先級最高的進程,并在到達所述優(yōu)先級最高的進程的運行時間片長度時停止調(diào)度;返回步驟Sllo
[0012]優(yōu)選地,SI2的判斷方法包括:
[0013]如果本次進程調(diào)度序列與上次進程調(diào)度序列沒有新的進程進入則確定本次進程調(diào)度序列中不包含延時調(diào)度進程;
[0014]如果本次進程調(diào)度序列與上次進程調(diào)度序列有新的進程進入且上次進程調(diào)度序列中的優(yōu)先級次尚的進程在本次進程調(diào)度序列中其不是優(yōu)先級最尚的進程,且本次進程調(diào)度序列中的優(yōu)先級最高的進程的加入時間超前于上次進程調(diào)度序列中的優(yōu)先級次高的進程的響應(yīng)時間,且二者的差值超出預(yù)設(shè)范圍,則確定本次進程調(diào)度序列中不包含延時調(diào)度進程;
[0015]如果本次進程調(diào)度序列與上次進程調(diào)度序列有新的進程進入且上次進程調(diào)度序列中的優(yōu)先級次尚的進程在本次進程調(diào)度序列中其不是優(yōu)先級最尚的進程,且本次進程調(diào)度序列中的優(yōu)先級最高的進程的加入時間超前于上次進程調(diào)度序列中的優(yōu)先級次高的進程的響應(yīng)時間,且二者的差值在所述預(yù)設(shè)范圍,則確定本次進程調(diào)度序列中包含延時調(diào)度進程。
[0016]優(yōu)選地,步驟SI 3包括:
[0017]S130:判斷延時調(diào)度進程的個數(shù)是否大于I;如果是,進入步驟S131,如果否,進入步驟S132;
[0018]S131:隨機選取一個延時調(diào)度進程,當(dāng)?shù)竭_該延時調(diào)度進程的響應(yīng)時間時,調(diào)度該延時調(diào)度進程,并在到達該延時調(diào)度進程的運行時間片長度時停止調(diào)度;同時,將剩余的延時調(diào)度進程加入下次進程調(diào)度序列中,并將優(yōu)先級提高到下次延時進程調(diào)度序列中的最高優(yōu)先級;返回步驟Sll;
[0019]S132:當(dāng)?shù)竭_延時調(diào)度進程的響應(yīng)時間時,調(diào)度該延時調(diào)度進程,并在到達該延時調(diào)度進程的運行時間片長度時停止調(diào)度;返回步驟S11。
[0020]優(yōu)選地,步驟S14包括:
[0021]S140:判斷優(yōu)先級最高的進程的個數(shù)是否大于I;如果是,進入步驟S141,如果否,進入步驟S142;
[0022]S141:隨機選取一個優(yōu)先級最高的進程,當(dāng)?shù)竭_該優(yōu)先級最高的進程的響應(yīng)時間時,調(diào)度該優(yōu)先級最高的進程,并在到達該優(yōu)先級最高的進程的運行時間片長度時停止調(diào)度;同時,將剩余的優(yōu)先級最高的進程加入下次進程調(diào)度序列中,并將優(yōu)先級提高到下次延時進程調(diào)度序列中的最高優(yōu)先級;返回步驟SI I;
[0023]S142:當(dāng)?shù)竭_優(yōu)先級最尚的進程的響應(yīng)時間時,調(diào)度該優(yōu)先級最尚的進程,并在到達該優(yōu)先級最高的進程的運行時間片長度時停止調(diào)度;返回步驟S11。
[0024]優(yōu)選地,所述運行時間片長度為4個tick。
[0025]一種01調(diào)度算法的改進裝置,包括:
[0026]進程統(tǒng)計單元,用于統(tǒng)計全部進程的進程數(shù)目和優(yōu)先級,并按照分配規(guī)則為每個進程分配運行時間片長度和響應(yīng)時間長度;
[0027]其中,所述分配規(guī)則為每個進程具有相同的時間片長度,優(yōu)先級越高則響應(yīng)時間長度越短,相同的優(yōu)先級具有相同的響應(yīng)時間長度;
[0028]進程調(diào)度序列生成單元,用于將當(dāng)前系統(tǒng)內(nèi)的進程按照優(yōu)先級順序生成本次進程調(diào)度序列;
[0029]判斷單元,用于判斷本次進程調(diào)度序列中是否包含有延時調(diào)度進程;
[0030]第一調(diào)度單元,用于在本次進程調(diào)度序列中包含有延時調(diào)度進程的情況下,當(dāng)?shù)竭_本次延時調(diào)度進程的響應(yīng)時間時,調(diào)度所述延時調(diào)度進程,并在到達所述延時調(diào)度進程的運行時間片長度時停止調(diào)度;
[0031 ]第二調(diào)度單元,用于在本次進程調(diào)度序列中不包含有延時調(diào)度進程的情況下,當(dāng)?shù)竭_本次進程調(diào)度序列中優(yōu)先級最尚的進程的響應(yīng)時間時,調(diào)度所述優(yōu)先級最尚的進程,并在到達所述優(yōu)先級最高的進程的運行時間片長度時停止調(diào)度。
[0032]優(yōu)選地,判斷單元的判斷規(guī)則包括:
[0033]如果本次進程調(diào)度序列與上次進程調(diào)度序列沒有新的進程進入則確定本次進程調(diào)度序列中不包含延時調(diào)度進程;
[0034]如果本次進程調(diào)度序列與上次進程調(diào)度序列有新的進程進入且上次進程調(diào)度序列中的優(yōu)先級次尚的進程在本次進程調(diào)度序列中其不是優(yōu)先級最尚的進程,且本次進程調(diào)度序列中的優(yōu)先級最高的進程的加入時間超前于上次進程調(diào)度序列中的優(yōu)先級次高的進程的響應(yīng)時間,且二者的差值超出預(yù)設(shè)范圍,則確定本次進程調(diào)度序列中不包含延時調(diào)度進程;
[0035]如果本次進程調(diào)度序列與上次進程調(diào)度序列有新的進程進入且上次進程調(diào)度序列中的優(yōu)先級次尚的進程在本次進程調(diào)度序列中其不是優(yōu)先級最尚的進程,且本次進程調(diào)度序列中的優(yōu)先級最高的進程的加入時間超前于上次進程調(diào)度序列中的優(yōu)先級次高的進程的響應(yīng)時間,且二者的差值在所述預(yù)設(shè)范圍,則確定本次進程調(diào)度序列中包含延時調(diào)度進程。
[0036]優(yōu)選地,第一調(diào)度單元具體包括:
[0037]第一判斷子單元,用于判斷延時調(diào)度進程的個數(shù)是否大于I;
[0038]第一調(diào)度子單元,用于在延時調(diào)度進程的個數(shù)大于I的情況下,隨機選取一個延時調(diào)度進程,當(dāng)?shù)竭_該延時調(diào)度進程的響應(yīng)時間時,調(diào)度該延時調(diào)度進程,并在到達該延時調(diào)度進程的運行時間片長度時停止調(diào)度;同時,將剩余的延時調(diào)度進程加入下次進程調(diào)度序列中,并將優(yōu)先級提高到下次進程調(diào)度序列中的最高優(yōu)先級;
[0039]第二調(diào)度子單元,用于在延時調(diào)度進程的個數(shù)等于I的情況下,當(dāng)?shù)竭_延時調(diào)度進程的響應(yīng)時間時,調(diào)度該延時調(diào)度進程,并在到達該延時調(diào)度進程的運行時間片長度時停止調(diào)度。
[0040]優(yōu)選地,所述第二調(diào)度單元包括:
[0041]第二判斷子單元,用于判斷優(yōu)先級最高的進程的個數(shù)是否大于I;
[0042]第三調(diào)度子單元,用于在優(yōu)先級最高的進程的個數(shù)大于I的情況下,隨機選取一個優(yōu)先級最尚的進程,當(dāng)?shù)竭_該優(yōu)先級最尚的進程的響應(yīng)時間時,調(diào)度該優(yōu)先級最尚的進程,并在到達該優(yōu)先級最尚的進程的運行時間片長度時停止調(diào)度;同時,將剩余的優(yōu)先級最尚的進程加入下次進程調(diào)度序列中,并將優(yōu)先級提高到下次進程調(diào)度序列中的最高優(yōu)先級;
[0043]第四調(diào)度子單元,用于在優(yōu)先級最高的進程的個數(shù)等于I的情況下,當(dāng)?shù)竭_優(yōu)先級最尚的進程的響應(yīng)時間時,調(diào)度該優(yōu)先級最尚的進程,并在到達該優(yōu)先級最尚的進程的運行時間片長度時停止調(diào)度。
[0044]優(yōu)選地,所述運行時間片長度為4個tick。
[0045]本發(fā)明所提供的01調(diào)度算法的改進方法及裝置,通過為每個進程設(shè)置同樣的運行時間片長度,且優(yōu)先級高的進程的響應(yīng)時間長度較短,當(dāng)本次進程調(diào)度序列中包含有延時調(diào)度進程時,則優(yōu)先調(diào)度該延時調(diào)度進程。由此可見,每個進程都能夠被及時調(diào)度,即使存在延時也會在下一輪被及時調(diào)度。通過該方法能夠降低某個進程長時間得不到響應(yīng)而造成的系統(tǒng)崩潰的危險性,提尚系統(tǒng)的穩(wěn)定性。
【附圖說明】
[0046]為了更清楚地說明本發(fā)明實施例,下面將對實施例中所需要使用的附圖做簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0047]圖1為本發(fā)明提供的一種01調(diào)度算法的改進方法的流程圖;
[0048]圖2為本發(fā)明提供的一種01調(diào)度算法的改進裝置的結(jié)構(gòu)圖。
【具體實施方式】
[0049]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下,所獲得的所有其他實施例,都屬于本發(fā)明保護范圍。
[0050]本發(fā)明的核心是提供一種01調(diào)度算法的改進方法及裝置。
[0051]為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面結(jié)合附圖和【具體實施方式】對本發(fā)明作進一步的詳細說明。
[0052]圖1為本發(fā)明提供的一種01調(diào)度算法的改進方法的流程圖。如圖1所示,包括:
[0053]SlO:統(tǒng)計全部進程的進程數(shù)目和優(yōu)先級,并按照分配規(guī)則為每個進程分配運行時間片長度和響應(yīng)時間長度。
[0054]其中,分配規(guī)則為每個進程具有相同的時間片長度,優(yōu)先級越高則響應(yīng)時間長度越短,相同的優(yōu)先級具有相同的響應(yīng)時間長度。
[0055]由于全部的進程不是同時都加入到調(diào)度工作中,隨著系統(tǒng)的運行,隨時都有新的進程加入,因此,需要把全部進程的進程數(shù)目和優(yōu)先級獲取到,然后為每個進程分配運行時間片長度和響應(yīng)時間長度??梢岳斫獾厥牵景l(fā)明中的優(yōu)先級越高則響應(yīng)時間長度越短,只是表示一種變化趨勢,而不是量的限定。只要滿足優(yōu)先級高的進程的響應(yīng)時間長度小于優(yōu)先級低的進程的響應(yīng)時間長度即可。
[0056]SI 1:將當(dāng)前系統(tǒng)內(nèi)的進程按照優(yōu)先級順序生成本次進程調(diào)度序列。
[0057]如上文所述,本步驟只是將系統(tǒng)當(dāng)前內(nèi)參與調(diào)度的進程生成本次進程調(diào)序列。由于不斷有新的進程加入,因此,本次進程調(diào)度序列與上次進程調(diào)度序列以及下次進程調(diào)度序列有可能不同。另外,如果是調(diào)度工作的第一輪,即第一次生成進程調(diào)度序列,那么它作為本次進程調(diào)度序列時,上次進程調(diào)度序列相當(dāng)于是空的。
[0058]S12:判斷本次進程調(diào)度序列中是否包含有延時調(diào)度進程。
[0059]如果是,則進入步驟S13,如果否,則進入步驟S14。
[0060]S13:當(dāng)?shù)竭_本次延時調(diào)度進程的響應(yīng)時間時,調(diào)度延時調(diào)度進程,并在到達延時調(diào)度進程的運行時間片長度時停止調(diào)度。返回步驟S11。
[0061]為了能夠使得每個進程都能夠及時得到響應(yīng),本發(fā)明中,如果本次進程調(diào)度序列中包含有延時調(diào)度進程的話,則優(yōu)先調(diào)度延時調(diào)度進程。本發(fā)明中的延時調(diào)度進程是指,在上次進程調(diào)度序列中是優(yōu)先級次高的進程,如果沒有新進程的加入,那么在本次調(diào)度序列中,該進程就是優(yōu)先級最高的進程,能夠優(yōu)先調(diào)度。正是由于有新的進程加入,且新加入的優(yōu)先級高于該進程,導(dǎo)致到了本次進程調(diào)度序列中,該進程就不是優(yōu)先級最高的進程,從而不能夠被優(yōu)先調(diào)度。為了避免這種情況發(fā)生,如果本次優(yōu)先調(diào)度序列中存在延時調(diào)度進程,則無論其優(yōu)先級如何,都要優(yōu)先調(diào)度該延時調(diào)度進程。
[0062 ]作為一種優(yōu)選地實施方式12的判斷方法包括:
[0063]如果本次進程調(diào)度序列與上次進程調(diào)度序列沒有新的進程進入則確定本次進程調(diào)度序列中不包含延時調(diào)度進程;
[0064]如果本次進程調(diào)度序列與上次進程調(diào)度序列有新的進程進入且上次進程調(diào)度序列中的優(yōu)先級次尚的進程在本次進程調(diào)度序列中其不是優(yōu)先級最尚的進程,且本次進程調(diào)度序列中的優(yōu)先級最高的進程的加入時間超前于上次進程調(diào)度序列中的優(yōu)先級次高的進程的響應(yīng)時間,且二者的差值超出預(yù)設(shè)范圍,則確定本次進程調(diào)度序列中不包含延時調(diào)度進程;
[0065]如果本次進程調(diào)度序列與上次進程調(diào)度序列有新的進程進入且上次進程調(diào)度序列中的優(yōu)先級次尚的進程在本次進程調(diào)度序列中其不是優(yōu)先級最尚的進程,且本次進程調(diào)度序列中的優(yōu)先級最高的進程的加入時間超前于上次進程調(diào)度序列中的優(yōu)先級次高的進程的響應(yīng)時間,且二者的差值在預(yù)設(shè)范圍,則確定本次進程調(diào)度序列中包含延時調(diào)度進程。
[0066]S14:當(dāng)?shù)竭_本次進程調(diào)度序列中優(yōu)先級最高的進程的響應(yīng)時間時,調(diào)度優(yōu)先級最高的進程,并在到達優(yōu)先級最高的進程的運行時間片長度時停止調(diào)度。返回步驟S11。
[0067]如果本次進程調(diào)度序列中,不存在延時調(diào)度進程,則直接調(diào)度優(yōu)先級最高的進程即可。
[0068]為了讓本領(lǐng)域技術(shù)人員更加理解本發(fā)明提供的方法,下文以一個簡單的例子做說明。
[0069]當(dāng)前系統(tǒng)內(nèi)的進程為A、B、C、D、E五個,優(yōu)先級分別為-1、-10、19、20、20,運行時間片長度均為4個tick,響應(yīng)時間長度分別為28個tick、16ftick、48ftick、6(H"tick、60ftick。按照步驟Sll生成本次進程調(diào)度序列(第一次進程調(diào)度序列)的話,就是KAXdj13B的優(yōu)先級最高,被優(yōu)先調(diào)度,A的優(yōu)先級次高,原則上在第二進程調(diào)度中被調(diào)度。那么在本次調(diào)度中就不存在延時調(diào)度進程,進程B就會被調(diào)度。
[0070]第一種情況:調(diào)度之后,返回步驟Sll,再次生成第二次進程調(diào)度序列。假如在生成第二進程調(diào)度序列之前,有新的進程F進入,其優(yōu)先級為-2,且加入的時間與進程A的響應(yīng)時間的差值超出預(yù)設(shè)范圍,或者可以這樣理解,進程F加入時間距進程A的響應(yīng)時間提前了較多,那么進程F就沒有對進程A造成影響,因此第二進程調(diào)度序列中就不包含延時調(diào)度進程,即進程A不是延時調(diào)度進程。那么在第二進程調(diào)度中進程F就會被調(diào)度。反之,假如在生成第二進程調(diào)度序列之前,有新的進程F進入,其優(yōu)先級為-2,且加入的時間與進程A的響應(yīng)時間的差值在預(yù)設(shè)范圍,或者可以這樣理解,進程F加入時間距進程A的響應(yīng)時間提前的較少,那么進程F就對進程A造成影響(可能已經(jīng)開始準(zhǔn)備對進程A的調(diào)度準(zhǔn)備工作),因此第二進程調(diào)度序列中就包含延時調(diào)度進程,即進程A是延時調(diào)度進程。那么在第二進程調(diào)度中進程F雖然優(yōu)先級高于進程A,但是仍然是調(diào)度進程A。當(dāng)再度返回步驟Sll時,如果有新的進程加入,則就比較新加入的進程的加入時間與進程F的響應(yīng)時間來判斷第三次進程調(diào)度序列中是否包含延時調(diào)度進程;如果沒有新的進程加入,則進程F就會被優(yōu)先調(diào)度。
[0071]第二種情況:調(diào)度之后,返回步驟Sll,再次生成第二次進程調(diào)度序列。在生成第二進程調(diào)度序列之前,沒有新的進程加入,則本次調(diào)度中進程A就會被優(yōu)先調(diào)度。
[0072]在具體實施中,可能在同一個進程調(diào)度序列中包含有相同優(yōu)先級的進程,如果具有相同優(yōu)先級的進程恰好是延時調(diào)度進程時,在上述實施例的基礎(chǔ)上,步驟S13包括:
[0073]S130:判斷延時調(diào)度進程的個數(shù)是否大于I。如果是,進入步驟S131,如果否,進入步驟S132;
[0074]S131:隨機選取一個延時調(diào)度進程,當(dāng)?shù)竭_該延時調(diào)度進程的響應(yīng)時間時,調(diào)度該延時調(diào)度進程,并在到達該延時調(diào)度進程的運行時間片長度時停止調(diào)度;同時,將剩余的延時調(diào)度進程加入下次進程調(diào)度序列中,并將優(yōu)先級提高到下次延時進程調(diào)度序列中的最高優(yōu)先級。返回步驟Sll;
[0075]S132:當(dāng)?shù)竭_延時調(diào)度進程的響應(yīng)時間時,調(diào)度該延時調(diào)度進程,并在到達該延時調(diào)度進程的運行時間片長度時停止調(diào)度。返回步驟S11。
[0076]另外,還有一種情況就是,當(dāng)本次優(yōu)先調(diào)度序列中不存在延時調(diào)度進程時,要執(zhí)行步驟S14。此時,可能優(yōu)先級最高的進程的數(shù)量也不是只有一個,可能為I可能為2等,因此,這樣的情況與步驟S13的具體判斷過程也相同。
[0077]S140:判斷優(yōu)先級最高的進程的個數(shù)是否大于I。如果是,進入步驟S141,如果否,進入步驟S142;
[0078]S141:隨機選取一個優(yōu)先級最高的進程,當(dāng)?shù)竭_該延時調(diào)度進程的響應(yīng)時間時,調(diào)度該延時調(diào)度進程,并在到達該延時調(diào)度進程的運行時間片長度時停止調(diào)度;同時,將剩余的優(yōu)先級最高的進程加入下次進程調(diào)度序列中,并將優(yōu)先級提高到下次延時進程調(diào)度序列中的最尚優(yōu)先級。返回步驟Sll ;
[0079]S142:當(dāng)?shù)竭_優(yōu)先級最高的進程的響應(yīng)時間時,調(diào)度該優(yōu)先級最高的進程,并在到達該優(yōu)先級最高的進程的運行時間片長度時停止調(diào)度。返回步驟S11。
[0080]在上述實施例的基礎(chǔ)上,運行時間片長度為4個tick。
[0081]本發(fā)明提供的一種01調(diào)度算法的改進方法,通過為每個進程設(shè)置同樣的運行時間片長度,且優(yōu)先級高的進程的響應(yīng)時間長度較短,當(dāng)本次進程調(diào)度序列中包含有延時調(diào)度進程時,則優(yōu)先調(diào)度該延時調(diào)度進程。由此可見,每個進程都能夠被及時調(diào)度,即使存在延時也會在下一輪被及時調(diào)度。通過該方法能夠降低某個進程長時間得不到響應(yīng)而造成的系統(tǒng)崩潰的危險性,提尚系統(tǒng)的穩(wěn)定性。
[0082]圖2為本發(fā)明提供的一種01調(diào)度算法的改進裝置的結(jié)構(gòu)圖。01調(diào)度算法的改進裝置,包括:
[0083]進程統(tǒng)計單元10,用于統(tǒng)計全部進程的進程數(shù)目和優(yōu)先級,并按照分配規(guī)則為每個進程分配運行時間片長度和響應(yīng)時間長度;
[0084]其中,分配規(guī)則為每個進程具有相同的時間片長度,優(yōu)先級越高則響應(yīng)時間長度越短,相同的優(yōu)先級具有相同的響應(yīng)時間長度;
[0085]進程調(diào)度序列生成單元11,用于將當(dāng)前系統(tǒng)內(nèi)的進程按照優(yōu)先級順序生成本次進程調(diào)度序列;
[0086]判斷單元12,用于判斷本次進程調(diào)度序列中是否包含有延時調(diào)度進程;
[0087]第一調(diào)度單元13,用于在本次進程調(diào)度序列中包含有延時調(diào)度進程的情況下,當(dāng)?shù)竭_本次延時調(diào)度進程的響應(yīng)時間時,調(diào)度延時調(diào)度進程,并在到達延時調(diào)度進程的運行時間片長度時停止調(diào)度;
[0088]第二調(diào)度單元14,用于在本次進程調(diào)度序列中不包含有延時調(diào)度進程的情況下,當(dāng)?shù)竭_本次進程調(diào)度序列中優(yōu)先級最尚的進程的響應(yīng)時間時,調(diào)度優(yōu)先級最尚的進程,并在到達優(yōu)先級最高的進程的運行時間片長度時停止調(diào)度。
[0089]本實施例提供的01調(diào)度算法的改進方法,通過為每個進程設(shè)置同樣的運行時間片長度,且優(yōu)先級高的進程的響應(yīng)時間長度較短,當(dāng)本次進程調(diào)度序列中包含有延時調(diào)度進程時,則優(yōu)先調(diào)度該延時調(diào)度進程。由此可見,每個進程都能夠被及時調(diào)度,即使存在延時也會在下一輪被及時調(diào)度。通過該方法能夠降低某個進程長時間得不到響應(yīng)而造成的系統(tǒng)崩潰的危險性,提尚系統(tǒng)的穩(wěn)定性。
[0090]優(yōu)選地,判斷單元的判斷規(guī)則包括:
[0091]如果本次進程調(diào)度序列與上次進程調(diào)度序列沒有新的進程進入則確定本次進程調(diào)度序列中不包含延時調(diào)度進程;
[0092]如果本次進程調(diào)度序列與上次進程調(diào)度序列有新的進程進入且上次進程調(diào)度序列中的優(yōu)先級次尚的進程在本次進程調(diào)度序列中其不是優(yōu)先級最尚的進程,且本次進程調(diào)度序列中的優(yōu)先級最高的進程的加入時間超前于上次進程調(diào)度序列中的優(yōu)先級次高的進程的響應(yīng)時間,且二者的差值超出預(yù)設(shè)范圍,則確定本次進程調(diào)度序列中不包含延時調(diào)度進程;
[0093]如果本次進程調(diào)度序列與上次進程調(diào)度序列有新的進程進入且上次進程調(diào)度序列中的優(yōu)先級次尚的進程在本次進程調(diào)度序列中其不是優(yōu)先級最尚的進程,且本次進程調(diào)度序列中的優(yōu)先級最高的進程的加入時間超前于上次進程調(diào)度序列中的優(yōu)先級次高的進程的響應(yīng)時間,且二者的差值在預(yù)設(shè)范圍,則確定本次進程調(diào)度序列中包含延時調(diào)度進程。
[0094]優(yōu)選地,第一調(diào)度單元具體包括:
[0095]判斷子單元,用于判斷延時調(diào)度進程的個數(shù)是否大于I;
[0096]第一調(diào)度子單元,用于在延時調(diào)度進程的個數(shù)大于I的情況下,隨機選取一個延時調(diào)度進程,當(dāng)?shù)竭_該延時調(diào)度進程的響應(yīng)時間時,調(diào)度該延時調(diào)度進程,并在到達該延時調(diào)度進程的運行時間片長度時停止調(diào)度;同時,將剩余的延時調(diào)度進程加入下次進程調(diào)度序列中,并將優(yōu)先級提高到下次延時進程調(diào)度序列中的最高優(yōu)先級;
[0097]第二調(diào)度子單元,用于在延時調(diào)度進程的個數(shù)等于I的情況下,當(dāng)?shù)竭_延時調(diào)度進程的響應(yīng)時間時,調(diào)度該延時調(diào)度進程,并在到達該延時調(diào)度進程的運行時間片長度時停止調(diào)度。
[0098]優(yōu)選地,所述第二調(diào)度單元包括:
[0099]第二判斷子單元,用于判斷優(yōu)先級最高的進程的個數(shù)是否大于I;
[0100]第三調(diào)度子單元,用于在優(yōu)先級最高的進程的個數(shù)大于I的情況下,隨機選取一個優(yōu)先級最尚的進程,當(dāng)?shù)竭_該優(yōu)先級最尚的進程的響應(yīng)時間時,調(diào)度該優(yōu)先級最尚的進程,并在到達該優(yōu)先級最尚的進程的運行時間片長度時停止調(diào)度;同時,將剩余的優(yōu)先級最尚的進程加入下次進程調(diào)度序列中,并將優(yōu)先級提高到下次進程調(diào)度序列中的最高優(yōu)先級;
[0101]第四調(diào)度子單元,用于在優(yōu)先級最高的進程的個數(shù)等于I的情況下,當(dāng)?shù)竭_優(yōu)先級最尚的進程的響應(yīng)時間時,調(diào)度該優(yōu)先級最尚的進程,并在到達該優(yōu)先級最尚的進程的運行時間片長度時停止調(diào)度。
[0102]優(yōu)選地,運行時間片長度為4個tick。可以理解地是,運行時間片長度的選取可以根據(jù)實際情況選擇,并不代表只有這一種選擇方式。
[0103]由于裝置部分與方法部分的實施例相對應(yīng),因此裝置部分的實施例參見方法部分的實施例的描述,這里暫不贅述。
[0104]以上對本發(fā)明所提供的01調(diào)度算法的改進方法及裝置進行了詳細介紹。說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以對本發(fā)明進行若干改進和修飾,這些改進和修飾也落入本發(fā)明權(quán)利要求的保護范圍內(nèi)。
[0105]專業(yè)人員還可以進一步意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
[0106]結(jié)合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實施。軟件模塊可以置于隨機存儲器(RAM)、內(nèi)存、只讀存儲器(R0M)、電可編程R0M、電可擦除可編程R0M、寄存器、硬盤、可移動磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。
【主權(quán)項】
1.一種Ol調(diào)度算法的改進方法,其特征在于,包括: S10:統(tǒng)計全部進程的進程數(shù)目和優(yōu)先級,并按照分配規(guī)則為每個進程分配運行時間片長度和響應(yīng)時間長度; 其中,所述分配規(guī)則為每個進程具有相同的時間片長度,優(yōu)先級越高則響應(yīng)時間長度越短,相同的優(yōu)先級具有相同的響應(yīng)時間長度; SI 1:將當(dāng)前系統(tǒng)內(nèi)的進程按照優(yōu)先級順序生成本次進程調(diào)度序列; S12:判斷本次進程調(diào)度序列中是否包含有延時調(diào)度進程;如果是,則進入步驟S13,如果否,則進入步驟S14; S13:當(dāng)?shù)竭_本次延時調(diào)度進程的響應(yīng)時間時,調(diào)度所述延時調(diào)度進程,并在到達所述延時調(diào)度進程的運行時間片長度時停止調(diào)度;返回步驟Sll; S14:當(dāng)?shù)竭_本次進程調(diào)度序列中優(yōu)先級最尚的進程的響應(yīng)時間時,調(diào)度所述優(yōu)先級最高的進程,并在到達所述優(yōu)先級最高的進程的運行時間片長度時停止調(diào)度;返回步驟S11。2.根據(jù)權(quán)利要求1所述的01調(diào)度算法的改進方法,其特征在于,S12的判斷方法包括: 如果本次進程調(diào)度序列與上次進程調(diào)度序列沒有新的進程進入則確定本次進程調(diào)度序列中不包含延時調(diào)度進程; 如果本次進程調(diào)度序列與上次進程調(diào)度序列有新的進程進入且上次進程調(diào)度序列中的優(yōu)先級次尚的進程在本次進程調(diào)度序列中其不是優(yōu)先級最尚的進程,且本次進程調(diào)度序列中的優(yōu)先級最高的進程的加入時間超前于上次進程調(diào)度序列中的優(yōu)先級次高的進程的響應(yīng)時間,且二者的差值超出預(yù)設(shè)范圍,則確定本次進程調(diào)度序列中不包含延時調(diào)度進程; 如果本次進程調(diào)度序列與上次進程調(diào)度序列有新的進程進入且上次進程調(diào)度序列中的優(yōu)先級次尚的進程在本次進程調(diào)度序列中其不是優(yōu)先級最尚的進程,且本次進程調(diào)度序列中的優(yōu)先級最高的進程的加入時間超前于上次進程調(diào)度序列中的優(yōu)先級次高的進程的響應(yīng)時間,且二者的差值在所述預(yù)設(shè)范圍,則確定本次進程調(diào)度序列中包含延時調(diào)度進程。3.根據(jù)權(quán)利要求1所述的01調(diào)度算法的改進方法,其特征在于,步驟S13包括: S130:判斷延時調(diào)度進程的個數(shù)是否大于I;如果是,進入步驟S131,如果否,進入步驟S132; S131:隨機選取一個延時調(diào)度進程,當(dāng)?shù)竭_該延時調(diào)度進程的響應(yīng)時間時,調(diào)度該延時調(diào)度進程,并在到達該延時調(diào)度進程的運行時間片長度時停止調(diào)度;同時,將剩余的延時調(diào)度進程加入下次進程調(diào)度序列中,并將優(yōu)先級提高到下次延時進程調(diào)度序列中的最高優(yōu)先級;返回步驟Sll; S132:當(dāng)?shù)竭_延時調(diào)度進程的響應(yīng)時間時,調(diào)度該延時調(diào)度進程,并在到達該延時調(diào)度進程的運行時間片長度時停止調(diào)度;返回步驟S11。4.根據(jù)權(quán)利要求1所述的01調(diào)度算法的改進方法,其特征在于,步驟S14包括: S140:判斷優(yōu)先級最高的進程的個數(shù)是否大于I;如果是,進入步驟S141,如果否,進入步驟S142; S141:隨機選取一個優(yōu)先級最尚的進程,當(dāng)?shù)竭_該優(yōu)先級最尚的進程的響應(yīng)時間時,調(diào)度該優(yōu)先級最高的進程,并在到達該優(yōu)先級最高的進程的運行時間片長度時停止調(diào)度;同時,將剩余的優(yōu)先級最高的進程加入下次進程調(diào)度序列中,并將優(yōu)先級提高到下次延時進程調(diào)度序列中的最高優(yōu)先級;返回步驟SI I; SI42:當(dāng)?shù)竭_優(yōu)先級最尚的進程的響應(yīng)時間時,調(diào)度該優(yōu)先級最尚的進程,并在到達該優(yōu)先級最高的進程的運行時間片長度時停止調(diào)度;返回步驟S11。5.根據(jù)權(quán)利要求1所述的Ol調(diào)度算法的改進方法,其特征在于,所述運行時間片長度為4個tick。6.一種01調(diào)度算法的改進裝置,其特征在于,包括: 進程統(tǒng)計單元,用于統(tǒng)計全部進程的進程數(shù)目和優(yōu)先級,并按照分配規(guī)則為每個進程分配運行時間片長度和響應(yīng)時間長度; 其中,所述分配規(guī)則為每個進程具有相同的時間片長度,優(yōu)先級越高則響應(yīng)時間長度越短,相同的優(yōu)先級具有相同的響應(yīng)時間長度; 進程調(diào)度序列生成單元,用于將當(dāng)前系統(tǒng)內(nèi)的進程按照優(yōu)先級順序生成本次進程調(diào)度序列; 判斷單元,用于判斷本次進程調(diào)度序列中是否包含有延時調(diào)度進程; 第一調(diào)度單元,用于在本次進程調(diào)度序列中包含有延時調(diào)度進程的情況下,當(dāng)?shù)竭_本次延時調(diào)度進程的響應(yīng)時間時,調(diào)度所述延時調(diào)度進程,并在到達所述延時調(diào)度進程的運行時間片長度時停止調(diào)度; 第二調(diào)度單元,用于在本次進程調(diào)度序列中不包含有延時調(diào)度進程的情況下,當(dāng)?shù)竭_本次進程調(diào)度序列中優(yōu)先級最尚的進程的響應(yīng)時間時,調(diào)度所述優(yōu)先級最尚的進程,并在到達所述優(yōu)先級最高的進程的運行時間片長度時停止調(diào)度。7.根據(jù)權(quán)利要求6所述的01調(diào)度算法的改進裝置,其特征在于,判斷單元的判斷規(guī)則包括: 如果本次進程調(diào)度序列與上次進程調(diào)度序列沒有新的進程進入則確定本次進程調(diào)度序列中不包含延時調(diào)度進程; 如果本次進程調(diào)度序列與上次進程調(diào)度序列有新的進程進入且上次進程調(diào)度序列中的優(yōu)先級次尚的進程在本次進程調(diào)度序列中其不是優(yōu)先級最尚的進程,且本次進程調(diào)度序列中的優(yōu)先級最高的進程的加入時間超前于上次進程調(diào)度序列中的優(yōu)先級次高的進程的響應(yīng)時間,且二者的差值超出預(yù)設(shè)范圍,則確定本次進程調(diào)度序列中不包含延時調(diào)度進程;如果本次進程調(diào)度序列與上次進程調(diào)度序列有新的進程進入且上次進程調(diào)度序列中的優(yōu)先級次尚的進程在本次進程調(diào)度序列中其不是優(yōu)先級最尚的進程,且本次進程調(diào)度序列中的優(yōu)先級最高的進程的加入時間超前于上次進程調(diào)度序列中的優(yōu)先級次高的進程的響應(yīng)時間,且二者的差值在所述預(yù)設(shè)范圍,則確定本次進程調(diào)度序列中包含延時調(diào)度進程。8.根據(jù)權(quán)利要求6所述的01調(diào)度算法的改進裝置,其特征在于,第一調(diào)度單元具體包括: 第一判斷子單元,用于判斷延時調(diào)度進程的個數(shù)是否大于I; 第一調(diào)度子單元,用于在延時調(diào)度進程的個數(shù)大于I的情況下,隨機選取一個延時調(diào)度進程,當(dāng)?shù)竭_該延時調(diào)度進程的響應(yīng)時間時,調(diào)度該延時調(diào)度進程,并在到達該延時調(diào)度進程的運行時間片長度時停止調(diào)度;同時,將剩余的延時調(diào)度進程加入下次進程調(diào)度序列中,并將優(yōu)先級提尚到下次進程調(diào)度序列中的最尚優(yōu)先級; 第二調(diào)度子單元,用于在延時調(diào)度進程的個數(shù)等于I的情況下,當(dāng)?shù)竭_延時調(diào)度進程的響應(yīng)時間時,調(diào)度該延時調(diào)度進程,并在到達該延時調(diào)度進程的運行時間片長度時停止調(diào)度。9.根據(jù)權(quán)利要求6所述的Ol調(diào)度算法的改進裝置,其特征在于,所述第二調(diào)度單元包括: 第二判斷子單元,用于判斷優(yōu)先級最高的進程的個數(shù)是否大于I; 第三調(diào)度子單元,用于在優(yōu)先級最高的進程的個數(shù)大于I的情況下,隨機選取一個優(yōu)先級最尚的進程,當(dāng)?shù)竭_該優(yōu)先級最尚的進程的響應(yīng)時間時,調(diào)度該優(yōu)先級最尚的進程,并在到達該優(yōu)先級最高的進程的運行時間片長度時停止調(diào)度;同時,將剩余的優(yōu)先級最高的進程加入下次進程調(diào)度序列中,并將優(yōu)先級提高到下次進程調(diào)度序列中的最高優(yōu)先級; 第四調(diào)度子單元,用于在優(yōu)先級最高的進程的個數(shù)等于I的情況下,當(dāng)?shù)竭_優(yōu)先級最高的進程的響應(yīng)時間時,調(diào)度該優(yōu)先級最尚的進程,并在到達該優(yōu)先級最尚的進程的運行時間片長度時停止調(diào)度。10.根據(jù)權(quán)利要求6所述的01調(diào)度算法的改進裝置,其特征在于,所述運行時間片長度為4個tick。
【文檔編號】G06F9/48GK106095557SQ201610444483
【公開日】2016年11月9日
【申請日】2016年6月20日
【發(fā)明人】武毅
【申請人】浪潮(北京)電子信息產(chǎn)業(yè)有限公司