一種任務(wù)調(diào)度方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種任務(wù)調(diào)度方法和裝置,包括:建立單位周期中每一時(shí)刻的任務(wù)列表;在每一單位周期的每一時(shí)刻中掃描當(dāng)前時(shí)刻的任務(wù)列表,并取出當(dāng)前掃描到的任務(wù)記錄,并將該任務(wù)記錄的任務(wù)周期標(biāo)識(shí)減1,若減1后的任務(wù)周期標(biāo)識(shí)大于0,則將該任務(wù)記錄放回當(dāng)前時(shí)刻的任務(wù)列表,若減1后的任務(wù)周期標(biāo)識(shí)等于0,則執(zhí)行該條任務(wù)記錄所指定的任務(wù),并確定下一次執(zhí)行該任務(wù)的時(shí)刻以及初始任務(wù)周期標(biāo)識(shí),并將該條任務(wù)記錄以及相應(yīng)的初始任務(wù)周期標(biāo)識(shí)加入到下一次執(zhí)行該任務(wù)時(shí)刻的任務(wù)列表中。本發(fā)明的能夠自動(dòng)形成任務(wù)調(diào)度計(jì)劃,實(shí)現(xiàn)了任務(wù)執(zhí)行的透明化管理,提升了任務(wù)列表掃描效率,利用其中的任務(wù)調(diào)度規(guī)則還能夠形成更加復(fù)雜的任務(wù)調(diào)度模式。
【專利說明】一種任務(wù)調(diào)度方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù),特別涉及一種任務(wù)調(diào)度方法和裝置。
【背景技術(shù)】
[0002]任務(wù)調(diào)度是操作系統(tǒng)的重要組成部分,而對(duì)于實(shí)時(shí)操作系統(tǒng),任務(wù)調(diào)度直接影響其實(shí)時(shí)性能。在計(jì)算機(jī)系統(tǒng)及各種軟件系統(tǒng)中,存在各種各樣的任務(wù)調(diào)度場(chǎng)景。其中,在任務(wù)調(diào)度過程中,有很多是基于時(shí)間調(diào)度的場(chǎng)景,在這些場(chǎng)景中,需要實(shí)現(xiàn)在特定時(shí)間點(diǎn)或者時(shí)間間隔內(nèi)運(yùn)行任務(wù)程序的功能。
[0003]如圖1所示,現(xiàn)有的一種任務(wù)調(diào)度的過程包括:
[0004]I)、在當(dāng)前時(shí)間周期或者在當(dāng)前特定時(shí)間點(diǎn),任務(wù)調(diào)度程序掃描任務(wù)列表,之后進(jìn)入步驟2);
[0005]2)、在任務(wù)列表中選擇需要執(zhí)行的任務(wù),之后進(jìn)入步驟3);
[0006]3)、啟動(dòng)執(zhí)行所選擇的任務(wù),之后進(jìn)入步驟4);
[0007]4)、計(jì)算下一次啟動(dòng)調(diào)度程序的時(shí)間,之后進(jìn)入步驟5);
[0008]5)、到達(dá)下一時(shí)間周期或者到達(dá)下一特定時(shí)間點(diǎn)時(shí),進(jìn)入步驟I)。
[0009]基于上述調(diào)度過程,一般可采用Java的Timer或者采用ScheduledExecutor在計(jì)算機(jī)中實(shí)現(xiàn)上述任務(wù)調(diào)度。
[0010]但是,上述方案在進(jìn)行任務(wù)調(diào)度過程中尚存在很多不足,例如:
[0011]其一,現(xiàn)有調(diào)度方案在使用Java的調(diào)度組件實(shí)現(xiàn)任務(wù)調(diào)度時(shí),只能進(jìn)行任務(wù)的串行執(zhí)行,不能進(jìn)行任務(wù)的并行執(zhí)行,進(jìn)而使得任務(wù)調(diào)度過程效率低下;
[0012]其二,現(xiàn)有調(diào)度方案中,每一次調(diào)度的執(zhí)行必須重新掃描任務(wù)列表,在任務(wù)數(shù)量比較多的情況下,需要長(zhǎng)時(shí)間進(jìn)行調(diào)度列表掃描,同樣使得任務(wù)調(diào)度過程效率低下;
[0013]其三,現(xiàn)有調(diào)度方案無法查看任意時(shí)刻需要執(zhí)行的任務(wù)信息,無法實(shí)現(xiàn)任務(wù)執(zhí)行的透明化管理。
[0014]因此,現(xiàn)有的調(diào)度方案尚有進(jìn)一步改進(jìn)之處。
【發(fā)明內(nèi)容】
[0015]有鑒于此,本發(fā)明提供一種任務(wù)調(diào)度方法和裝置,以提高效率,并實(shí)現(xiàn)任務(wù)調(diào)度的透明化管理。
[0016]本申請(qǐng)的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0017]一種任務(wù)調(diào)度方法,包括:
[0018]建立單位周期中每一時(shí)刻所對(duì)應(yīng)的任務(wù)列表,所述任務(wù)列表包括至少O條任務(wù)記錄,所述任務(wù)記錄中含有任務(wù)周期標(biāo)識(shí);
[0019]在每一單位周期的每一時(shí)刻均執(zhí)行如下任務(wù)調(diào)度操作:
[0020]掃描當(dāng)前時(shí)刻所對(duì)應(yīng)的任務(wù)列表;
[0021]取出當(dāng)前掃描到的任務(wù)記錄,并將該任務(wù)記錄的任務(wù)周期標(biāo)識(shí)減I ;[0022]若減I后的任務(wù)周期標(biāo)識(shí)大于0,則將該任務(wù)記錄放回當(dāng)前時(shí)刻所對(duì)應(yīng)的任務(wù)列表;
[0023]若減I后的任務(wù)周期標(biāo)識(shí)等于0,則執(zhí)行該條任務(wù)記錄所指定的任務(wù),并確定下一次執(zhí)行該任務(wù)的時(shí)刻以及初始任務(wù)周期標(biāo)識(shí),并將該條任務(wù)記錄以及相應(yīng)的初始任務(wù)周期標(biāo)識(shí)加入到下一次執(zhí)行該任務(wù)的時(shí)刻所對(duì)應(yīng)的任務(wù)列表中。
[0024]進(jìn)一步,所述單位周期為24小時(shí),相鄰時(shí)刻之間相差I(lǐng)秒,所述單位周期中共有86400個(gè)時(shí)刻,每一時(shí)刻對(duì)應(yīng)一個(gè)任務(wù)列表,共有86400個(gè)任務(wù)列表。
[0025]進(jìn)一步,在當(dāng)前單位周期結(jié)束后,隨即進(jìn)入下一單位周期,并重新執(zhí)行所述任務(wù)調(diào)度操作。
[0026]進(jìn)一步,所述的確定下一次執(zhí)行該任務(wù)的時(shí)刻以及初始任務(wù)周期標(biāo)識(shí),包括:
[0027]當(dāng)前時(shí)刻與該任務(wù)的執(zhí)行周期之和除以單位周期之后所取的余數(shù),作為下一次執(zhí)行該任務(wù)的時(shí)刻;該任務(wù)的執(zhí)行周期除以單位周期的結(jié)果向上取整,作為該任務(wù)的初始任務(wù)周期標(biāo)識(shí)。
[0028]一種任務(wù)調(diào)度裝置,包括:
[0029]任務(wù)列表模塊,用于保存并提供單位周期中每一時(shí)刻所對(duì)應(yīng)的任務(wù)列表,所述任務(wù)列表包括至少O條任務(wù)記錄,所述任務(wù)記錄中含有任務(wù)周期標(biāo)識(shí);
[0030]任務(wù)調(diào)度模塊,用于在每一單位周期的每一時(shí)刻均執(zhí)行任務(wù)調(diào)度操作:
[0031]掃描所述任務(wù)列表模塊中當(dāng)前時(shí)刻所對(duì)應(yīng)的任務(wù)列表,從當(dāng)前時(shí)刻所對(duì)應(yīng)的任務(wù)列表中取出當(dāng)前掃描到的任務(wù)記錄,將該任務(wù)記錄的任務(wù)周期標(biāo)識(shí)減1,并判斷減I后的任務(wù)周期標(biāo)識(shí)是否大于O ;若減I后的任務(wù)周期標(biāo)識(shí)大于0,則所述任務(wù)調(diào)度模塊將該任務(wù)記錄放回當(dāng)前時(shí)刻所對(duì)應(yīng)的任務(wù)列表;若減I后的任務(wù)周期標(biāo)識(shí)等于0,則所述任務(wù)調(diào)度模塊執(zhí)行該條任務(wù)記錄所指定的任務(wù),并確定下一次執(zhí)行該任務(wù)的時(shí)刻以及初始任務(wù)周期標(biāo)識(shí),并將該條任務(wù)記錄以及相應(yīng)的初始任務(wù)周期標(biāo)識(shí)加入到下一次執(zhí)行該任務(wù)的時(shí)刻所對(duì)應(yīng)的任務(wù)列表中。
[0032]進(jìn)一步,所述單位周期為24小時(shí),相鄰時(shí)刻之間相差I(lǐng)秒,所述單位周期中共有86400個(gè)時(shí)刻,每一時(shí)刻對(duì)應(yīng)一個(gè)任務(wù)列表;所述任務(wù)列表模塊共保存86400個(gè)任務(wù)列表。
[0033]進(jìn)一步,在當(dāng)前單位周期結(jié)束后,隨即進(jìn)入下一單位周期,所述任務(wù)調(diào)度模塊在下一單位周期重新執(zhí)行所述任務(wù)調(diào)度操作。
[0034]進(jìn)一步,所述的確定下一次執(zhí)行該任務(wù)的時(shí)刻以及初始任務(wù)周期標(biāo)識(shí),包括:
[0035]當(dāng)前時(shí)刻與該任務(wù)的執(zhí)行周期之和除以單位周期之后所取的余數(shù),作為下一次執(zhí)行該任務(wù)的時(shí)刻;該任務(wù)的執(zhí)行周期除以單位周期的結(jié)果向上取整,作為該任務(wù)的初始任務(wù)周期標(biāo)識(shí)。
[0036]從上述方案可以看出,本發(fā)明的任務(wù)調(diào)度方法和裝置,能夠自動(dòng)形成任務(wù)調(diào)度計(jì)劃,并且可以通過查詢?nèi)我鈺r(shí)刻所對(duì)應(yīng)的任務(wù)列表而隨時(shí)了解任意時(shí)刻的任務(wù)調(diào)度計(jì)劃,實(shí)現(xiàn)了任務(wù)執(zhí)行的透明化管理。在調(diào)度時(shí),本發(fā)明只需掃描當(dāng)前時(shí)刻所對(duì)應(yīng)的任務(wù)列表,不需要掃描所有的任務(wù)信息列表,進(jìn)而縮小了掃描的規(guī)模,極大地提升了任務(wù)列表掃描效率和任務(wù)執(zhí)行效率。另外,本發(fā)明還可以利用其中的任務(wù)調(diào)度規(guī)則形成更加復(fù)雜的任務(wù)調(diào)度模式。【專利附圖】
【附圖說明】
[0037]圖1為現(xiàn)有的一種任務(wù)調(diào)度的過程示意圖;
[0038]圖2為本發(fā)明任務(wù)調(diào)度方法的實(shí)施例流程圖;
[0039]圖3為本發(fā)明的任務(wù)調(diào)度裝置的實(shí)施例結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0040]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例,對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明。
[0041]本發(fā)明提供的任務(wù)調(diào)度方法,主要包括:
[0042]建立單位周期中每一時(shí)刻所對(duì)應(yīng)的任務(wù)列表,所述任務(wù)列表包括至少O條任務(wù)記錄,所述任務(wù)記錄中含有任務(wù)周期標(biāo)識(shí);
[0043]在每一單位周期的每一時(shí)刻均執(zhí)行如下任務(wù)調(diào)度操作:
[0044]掃描當(dāng)前時(shí)刻所對(duì)應(yīng)的任務(wù)列表;
[0045]取出當(dāng)前掃描到的任務(wù)記錄,并將該任務(wù)記錄的任務(wù)周期標(biāo)識(shí)減I ;
[0046]若減I后的任務(wù)周期標(biāo)識(shí)大于0,則將該任務(wù)記錄放回當(dāng)前時(shí)刻所對(duì)應(yīng)的任務(wù)列表;
[0047]若減I后的任務(wù)周期標(biāo)識(shí)等于0,則執(zhí)行該條任務(wù)記錄所指定的任務(wù),并確定下一次執(zhí)行該任務(wù)時(shí)刻所對(duì)應(yīng)的任務(wù)列表以及初始任務(wù)周期標(biāo)識(shí),并將該條任務(wù)記錄以及相應(yīng)的初始任務(wù)周期標(biāo)識(shí)加入到下一次執(zhí)行該任務(wù)時(shí)刻所對(duì)應(yīng)的任務(wù)列表中。
[0048]以下結(jié)合具體實(shí)施例,對(duì)本發(fā)明的任務(wù)調(diào)度方法進(jìn)行詳細(xì)介紹。
[0049]本發(fā)明實(shí)施例中,將每天的24小時(shí)作為一個(gè)單位周期,每I秒鐘記為I個(gè)時(shí)刻,在24小時(shí)的單位周期中,共有24 X 60 X 60=86400個(gè)時(shí)刻。在本發(fā)明實(shí)施例中,每個(gè)時(shí)刻均對(duì)應(yīng)一個(gè)任務(wù)列表,用于記錄在該時(shí)刻所要監(jiān)控的任務(wù);如果在該時(shí)刻監(jiān)控的某一(些)任務(wù)需要執(zhí)行,則立即執(zhí)行,并且根據(jù)該立即執(zhí)行的任務(wù)的執(zhí)行周期,確定該任務(wù)下一次執(zhí)行的時(shí)刻;如果在該時(shí)刻的監(jiān)控的某一(些)任務(wù)不需要執(zhí)行,而是要在下一(幾)個(gè)單位周期該時(shí)刻,則根據(jù)本發(fā)明實(shí)施例中的規(guī)則進(jìn)行相應(yīng)調(diào)整,以在下一(幾)個(gè)單位周期的該時(shí)刻執(zhí)行該一(些)任務(wù)。
[0050]本發(fā)明的任務(wù)調(diào)度方法實(shí)施例中,將每天(24小時(shí))的單位周期,以秒為單位,分成86400個(gè)時(shí)刻,建立每個(gè)時(shí)刻對(duì)應(yīng)的任務(wù)列表,其中,任務(wù)列表中包含其所對(duì)應(yīng)時(shí)刻所要監(jiān)控至少O條任務(wù)信息,每條任務(wù)信息均包括所要執(zhí)行的任務(wù),該任務(wù)的任務(wù)周期標(biāo)識(shí),可選地,每條任務(wù)信息還包括該任務(wù)的執(zhí)行周期。執(zhí)行周期為任務(wù)每隔多久執(zhí)行I次,例如,若任務(wù)周期為I小時(shí),則表示該任務(wù)每隔I小時(shí)執(zhí)行一次,若任務(wù)周期為27小時(shí),則表示該任務(wù)每隔27小時(shí)執(zhí)行一次,等等。本發(fā)明實(shí)施例中,任務(wù)周期標(biāo)識(shí)主要用于判斷該任務(wù)周期標(biāo)識(shí)所對(duì)應(yīng)的任務(wù)是否需要立即執(zhí)行,任務(wù)周期標(biāo)識(shí)為整型,值為大于等于O的數(shù)字,具體方法詳見后續(xù)說明。
[0051]本發(fā)明的任務(wù)調(diào)度方法實(shí)施例中,針對(duì)每個(gè)單位周期的86400個(gè)時(shí)刻,共使用86400個(gè)任務(wù)列表。在當(dāng)前單位周期中,隨著當(dāng)前時(shí)刻的變化依次掃描每一個(gè)任務(wù)列表,并更新需要更新的任務(wù)列表。當(dāng)一個(gè)單位周期結(jié)束后,進(jìn)入新的單位周期時(shí),仍然使用該86400個(gè)任務(wù)列表,同樣地,仍然隨著當(dāng)前時(shí)刻的變化依次掃描每一個(gè)任務(wù)列表,并更新需要更新的任務(wù)列表,以此類推。
[0052]如圖1所示,在每個(gè)單位周期,本發(fā)明的任務(wù)調(diào)度方法的具體調(diào)度過程包括如下各個(gè)步驟。
[0053]步驟1、掃描當(dāng)前時(shí)刻所對(duì)應(yīng)的任務(wù)列表,并進(jìn)入步驟2 ;
[0054]步驟2、取出當(dāng)前掃描到的任務(wù)記錄,并將該任務(wù)記錄的任務(wù)周期標(biāo)識(shí)減1,之后進(jìn)入步驟3 ;
[0055]步驟3、判斷任務(wù)周期標(biāo)識(shí)是否大于0,若大于0,則進(jìn)入步驟4,若等于0,則進(jìn)入步驟5 ;
[0056]步驟4、將該任務(wù)記錄放回當(dāng)前時(shí)刻所對(duì)應(yīng)的任務(wù)列表,之后進(jìn)入步驟8 ;
[0057]步驟5、執(zhí)行該條任務(wù)記錄所指定的任務(wù),之后進(jìn)入步驟6 ;
[0058]步驟6、確定下一次執(zhí)行該任務(wù)的時(shí)刻以及初始任務(wù)周期標(biāo)識(shí),之后進(jìn)入步驟7 ;
[0059]步驟7、將該條任務(wù)記錄以及相應(yīng)的初始任務(wù)周期標(biāo)識(shí)加入到下一次執(zhí)行該任務(wù)時(shí)刻所對(duì)應(yīng)的任務(wù)列表中,之后進(jìn)入步驟8 ;
[0060]步驟8、判斷當(dāng)前時(shí)刻所對(duì)應(yīng)的任務(wù)列表是否完成掃描,如果未完成掃描,則回到步驟I以繼續(xù)掃描當(dāng)前時(shí)刻所對(duì)應(yīng)的任務(wù)列表進(jìn)而完成當(dāng)前時(shí)刻所對(duì)應(yīng)的任務(wù)列表中其他任務(wù)記錄的任務(wù)調(diào)度過程,如果完成掃描,則在到達(dá)下一時(shí)刻時(shí)進(jìn)入步驟I以進(jìn)行下一個(gè)當(dāng)前時(shí)刻所對(duì)應(yīng)的任務(wù)列表的掃描和任務(wù)調(diào)度過程。
[0061]上述過程中,若當(dāng)前時(shí)刻為一個(gè)單位周期的最后一個(gè)時(shí)刻,則當(dāng)前時(shí)刻所對(duì)應(yīng)的任務(wù)列表掃描結(jié)束后,其下一時(shí)刻為下一單位周期的第一個(gè)時(shí)刻。在這種情況下,隨著時(shí)間的推移,當(dāng)前時(shí)刻將變更為下一單位周期的第一個(gè)時(shí)刻。進(jìn)而在該情況下,在當(dāng)前單位周期結(jié)束后,隨即進(jìn)入下一單位周期,并重新執(zhí)行任務(wù)調(diào)度操作。在本發(fā)明的實(shí)施例中,經(jīng)過步驟8而回到步驟I后,步驟I中所對(duì)應(yīng)的當(dāng)前時(shí)刻為下一單位周期的第一個(gè)時(shí)刻,此時(shí)所掃描的當(dāng)前時(shí)刻所對(duì)應(yīng)的任務(wù)列表為86400個(gè)任務(wù)列表中的第一個(gè)時(shí)刻所對(duì)應(yīng)的任務(wù)列表。
[0062]上述實(shí)施例過程,也是隨著時(shí)間的推移,對(duì)86400個(gè)任務(wù)列表反復(fù)地依次進(jìn)行掃描和更新的過程。
[0063]上述過程中,在步驟6中,確定下一次執(zhí)行該任務(wù)的時(shí)刻以及初始任務(wù)周期標(biāo)識(shí),通過如下方法進(jìn)行:
[0064]當(dāng)前時(shí)刻與該任務(wù)的執(zhí)行周期之和除以單位周期之后所取的余數(shù),作為下一次執(zhí)行該任務(wù)的時(shí)刻;該任務(wù)的執(zhí)行周期除以單位周期的結(jié)果向上取整,作為該任務(wù)的初始任務(wù)周期標(biāo)識(shí)。
[0065]具體地,用公式表示,即為:
[0066]y= (w+x)mod η
[0067]m=ceil (x/n)
[0068]其中,y為下一次執(zhí)行該任務(wù)的時(shí)刻,w為當(dāng)前時(shí)刻,X為該任務(wù)的執(zhí)行周期,η為
單位周期,m為初始任務(wù)周期標(biāo)識(shí),mod表示(w+x)除以η之后取余數(shù),ceil O表示向上取M
iF.0
[0069]一般來說,一般任務(wù)的調(diào)度周期一般是每天執(zhí)行一次,任務(wù)的執(zhí)行周期一般也是24小時(shí),對(duì)于這類一般任務(wù),只需在其執(zhí)行時(shí)刻所對(duì)應(yīng)的任務(wù)列表中寫入該任務(wù)即可,每一次更新該任務(wù)列表時(shí),僅重置該任務(wù)的初始任務(wù)周期標(biāo)識(shí)即可,例如以下實(shí)施例a和實(shí)施例b。
[0070]實(shí)施例a
[0071]設(shè)當(dāng)前時(shí)刻為0,進(jìn)而當(dāng)前的任務(wù)列表為第O時(shí)刻所對(duì)應(yīng)的任務(wù)列表,當(dāng)前在執(zhí)行任務(wù)的任務(wù)執(zhí)行周期為I天,即該任務(wù)的執(zhí)行周期為24小時(shí),也就是說,當(dāng)前在執(zhí)行的任務(wù)是每隔24小時(shí)執(zhí)行一次。該任務(wù)的執(zhí)行周期用秒表示則為24X60X60=86400,單位周期用秒表示則為24X60X60=86400
[0072]那么,下一次執(zhí)行該任務(wù)時(shí)刻為:
[0073]y=(0+86400)mod86400=0
[0074]該任務(wù)的初始任務(wù)周期標(biāo)識(shí)為:
[0075]m=ceil(86400/86400)=1
[0076]進(jìn)而下一次執(zhí)行該任務(wù)時(shí)刻所對(duì)應(yīng)的任務(wù)列表仍然為第O時(shí)刻所對(duì)應(yīng)的任務(wù)列表,將該條任務(wù)記錄以及相應(yīng)的初始任務(wù)周期標(biāo)識(shí)I加入回第O時(shí)刻所對(duì)應(yīng)的任務(wù)列表。
[0077]隨后,在下一單位周期中,當(dāng)前時(shí)刻進(jìn)入第O時(shí)刻時(shí),掃描第O時(shí)刻所對(duì)應(yīng)的任務(wù)列表,此時(shí)該任務(wù)的初始任務(wù)周期標(biāo)識(shí)1,經(jīng)過步驟2之后該任務(wù)的任務(wù)周期標(biāo)識(shí)變更為0,此時(shí)執(zhí)行該任務(wù)(此時(shí),相距該任務(wù)第一次執(zhí)行正好經(jīng)過了 24小時(shí)的執(zhí)行周期),并通過步驟6確定再一次執(zhí)行該任務(wù)的時(shí)刻仍然為第O時(shí)刻,再一次執(zhí)行該任務(wù)的初始任務(wù)周期標(biāo)識(shí)仍然為I。以此類推隨后該任務(wù)的執(zhí)行調(diào)度。
[0078]實(shí)施例b
[0079]設(shè)當(dāng)前時(shí)刻為一個(gè)任一時(shí)刻,例如當(dāng)前時(shí)刻為68745,即當(dāng)前時(shí)刻為19時(shí)5分45秒,進(jìn)而當(dāng)前的任務(wù)列表為第68745時(shí)刻所對(duì)應(yīng)的任務(wù)列表,當(dāng)前在執(zhí)行任務(wù)的任務(wù)執(zhí)行周期為I天,即該任務(wù)的執(zhí)行周期為24小時(shí),也就是說,當(dāng)前在執(zhí)行的任務(wù)是每隔24小時(shí)執(zhí)行一次。該任務(wù)的執(zhí)行周期用秒表示則為24 X 60 X 60=86400,單位周期用秒表示則為24X60X60=86400
[0080]那么,下一次執(zhí)行該任務(wù)時(shí)刻為:
[0081 ] y=(68745+86400)mod86400=68745
[0082]該任務(wù)的初始任務(wù)周期標(biāo)識(shí)為:
[0083]m=ceil(86400/86400)=1
[0084]進(jìn)而下一次執(zhí)行該任務(wù)時(shí)刻所對(duì)應(yīng)的任務(wù)列表仍然為第68745時(shí)刻所對(duì)應(yīng)的任務(wù)列表,將該條任務(wù)記錄以及相應(yīng)的初始任務(wù)周期標(biāo)識(shí)I加入回第68745時(shí)刻所對(duì)應(yīng)的任務(wù)列表。
[0085]隨后,在下一單位周期中,當(dāng)前時(shí)刻進(jìn)入第68745時(shí)刻時(shí)(即進(jìn)入19時(shí)5分45秒時(shí)),掃描第68745時(shí)刻所對(duì)應(yīng)的任務(wù)列表,此時(shí)該任務(wù)的初始任務(wù)周期標(biāo)識(shí)1,經(jīng)過步驟2之后該任務(wù)的任務(wù)周期標(biāo)識(shí)變更為0,此時(shí)執(zhí)行該任務(wù)(此時(shí),相距該任務(wù)第一次執(zhí)行正好經(jīng)過了 24小時(shí)的執(zhí)行周期),并通過步驟6確定再一次執(zhí)行該任務(wù)的時(shí)刻仍然為第68745時(shí)刻,再一次執(zhí)行該任務(wù)的初始任務(wù)周期標(biāo)識(shí)仍然為I。以此類推隨后該任務(wù)的執(zhí)行調(diào)度。
[0086]由于需要,某些任務(wù)的調(diào)度周期可能并不是每天執(zhí)行。例如,某類任務(wù)的執(zhí)行周期可能小于24小時(shí),例如執(zhí)行周期為5小時(shí)或者7小時(shí)等。以下實(shí)施例c和實(shí)施例d分別對(duì)執(zhí)行周期為5小時(shí)或者7小時(shí)的任務(wù)進(jìn)行說明。
[0087]實(shí)施例c[0088]設(shè)當(dāng)前時(shí)刻為4800,即當(dāng)前時(shí)刻為I時(shí)20分,進(jìn)而當(dāng)前的任務(wù)列表為第4800時(shí)刻所對(duì)應(yīng)的任務(wù)列表,當(dāng)前在執(zhí)行任務(wù)的任務(wù)執(zhí)行周期為5小時(shí),即當(dāng)前在執(zhí)行的任務(wù)是每隔5小時(shí)執(zhí)行一次。該任務(wù)的執(zhí)行周期用秒表示則為5 X 60 X 60=18000,單位周期用秒表示則為 24X60X60=86400
[0089]那么,下一次執(zhí)行該任務(wù)時(shí)刻為:
[0090]y=(4800+18000)mod86400=22800
[0091]該任務(wù)的初始任務(wù)周期標(biāo)識(shí)為:
[0092]m=ceil (18000/86400)=1
[0093]進(jìn)而下一次執(zhí)行該任務(wù)時(shí)刻所對(duì)應(yīng)的任務(wù)列表為第22800時(shí)刻(6時(shí)20分)的任務(wù)列表,將該條任務(wù)記錄以及相應(yīng)的初始任務(wù)周期標(biāo)識(shí)I加入第22800時(shí)刻(6時(shí)20分)的任務(wù)列表。
[0094]隨后,隨著時(shí)間推移,當(dāng)前時(shí)刻進(jìn)入第22800時(shí)刻(6時(shí)20分)時(shí),掃描第22800時(shí)刻(6時(shí)20分)的任務(wù)列表,此時(shí)該任務(wù)的初始任務(wù)周期標(biāo)識(shí)1,經(jīng)過步驟2之后該任務(wù)的任務(wù)周期標(biāo)識(shí)變更為0,此時(shí)執(zhí)行該任務(wù)(此時(shí),相距該任務(wù)第一次執(zhí)行正好經(jīng)過了 5小時(shí)的執(zhí)行周期),并通過步驟6確定再一次執(zhí)行該任務(wù)的時(shí)刻為第40800時(shí)刻(11時(shí)20分)時(shí)亥IJ,再一次執(zhí)行該任務(wù)的初始任務(wù)周期標(biāo)識(shí)仍然為I。以此類推隨后該任務(wù)的執(zhí)行調(diào)度。
[0095]實(shí)施例d
[0096]設(shè)當(dāng)前時(shí)刻為81000,即當(dāng)前時(shí)刻為22時(shí)30分,進(jìn)而當(dāng)前的任務(wù)列表為第81000時(shí)刻(22時(shí)30分)的任務(wù)列表,當(dāng)前在執(zhí)行任務(wù)的任務(wù)執(zhí)行周期為7小時(shí),即當(dāng)前在執(zhí)行的任務(wù)是每隔7小時(shí)執(zhí)行一次。該任務(wù)的執(zhí)行周期用秒表示則為7 X 60 X 60=25200,單位周期用秒表示則為24X60X60=86400
[0097]那么,下一次執(zhí)行該任務(wù)時(shí)刻為:
[0098]y=(81000+25200)mod86400=19800
[0099]該任務(wù)的初始任務(wù)周期標(biāo)識(shí)為:
[0100]m=ceil (25200/86400)=1
[0101]進(jìn)而下一次執(zhí)行該任務(wù)時(shí)刻所對(duì)應(yīng)的任務(wù)列表為第19800時(shí)刻(5時(shí)30分)的任務(wù)列表,將該條任務(wù)記錄以及相應(yīng)的初始任務(wù)周期標(biāo)識(shí)I加入第19800時(shí)刻(5時(shí)30分)的任務(wù)列表。
[0102]隨后,,隨著時(shí)間推移進(jìn)入下一單位周期,在下一單位周期中,當(dāng)前時(shí)刻進(jìn)入第19800時(shí)刻(5時(shí)30分)時(shí),掃描第19800時(shí)刻(5時(shí)30分)的任務(wù)列表,此時(shí)該任務(wù)的初始任務(wù)周期標(biāo)識(shí)1,經(jīng)過步驟2之后該任務(wù)的任務(wù)周期標(biāo)識(shí)變更為0,此時(shí)執(zhí)行該任務(wù)(此時(shí),相距該任務(wù)第一次執(zhí)行正好經(jīng)過了 7小時(shí)的執(zhí)行周期),并通過步驟6確定再一次執(zhí)行該任務(wù)的時(shí)刻為第45000時(shí)刻(12時(shí)30分)時(shí)刻,再一次執(zhí)行該任務(wù)的初始任務(wù)周期標(biāo)識(shí)仍然為I。以此類推隨后該任務(wù)的執(zhí)行調(diào)度。
[0103]另外,某些任務(wù)的執(zhí)行周期可能大于24小時(shí),例如執(zhí)行周期為25小時(shí)30分等。以下實(shí)施例e對(duì)執(zhí)行周期為25小時(shí)30分的任務(wù)進(jìn)行說明。
[0104]實(shí)施例e
[0105]設(shè)當(dāng)前時(shí)刻為0,當(dāng)前在執(zhí)行任務(wù)的任務(wù)執(zhí)行周期為I天零I個(gè)半小時(shí),即該任務(wù)的執(zhí)行周期為25小時(shí)30分鐘,也就是說,當(dāng)前在執(zhí)行的任務(wù)是每隔25小時(shí)30分鐘執(zhí)行一次。該任務(wù)的執(zhí)行周期用秒表示則為25 X 60 X 60+30 X 60=91800,單位周期用秒表示則為24X60X60=86400
[0106]那么,下一次執(zhí)行該任務(wù)時(shí)刻為:
[0107]y=(0+91800)mod86400=5400
[0108]該任務(wù)的初始任務(wù)周期標(biāo)識(shí)為:
[0109]m=ceil (91800/86400)=2
[0110]進(jìn)而下一次執(zhí)行該任務(wù)時(shí)刻所對(duì)應(yīng)的任務(wù)列表為第5400時(shí)刻所對(duì)應(yīng)的任務(wù)列表,將該條任務(wù)記錄以及相應(yīng)的初始任務(wù)周期標(biāo)識(shí)2加入到第5400時(shí)刻所對(duì)應(yīng)的任務(wù)列表。
[0111]隨后,在當(dāng)前的單位周期中,當(dāng)前時(shí)刻進(jìn)入5400時(shí),掃描5400時(shí)刻所對(duì)應(yīng)的任務(wù)列表,此時(shí)該任務(wù)的初始任務(wù)周期標(biāo)識(shí)2,經(jīng)過步驟2之后該任務(wù)的任務(wù)周期標(biāo)識(shí)變更為1,此時(shí)不執(zhí)行該任務(wù),將該任務(wù)記錄放回當(dāng)前的5400時(shí)刻所對(duì)應(yīng)的任務(wù)列表中(此時(shí),實(shí)際相距該任務(wù)第一次執(zhí)行僅過了 I小時(shí)30分,沒有達(dá)到該任務(wù)的執(zhí)行周期25小時(shí)30分)。待到進(jìn)入下一個(gè)單位周期時(shí),當(dāng)前時(shí)刻進(jìn)入5400時(shí),掃描5400時(shí)刻所對(duì)應(yīng)的任務(wù)列表,此時(shí)該任務(wù)的任務(wù)周期標(biāo)識(shí)為1,經(jīng)過步驟2之后該任務(wù)的任務(wù)周期標(biāo)識(shí)變更為0,此時(shí)執(zhí)行該任務(wù)(此時(shí),實(shí)際相距該任務(wù)第一次執(zhí)行已過了 25小時(shí)30分,達(dá)到了該任務(wù)的執(zhí)行周期),并通過步驟6確定再一次執(zhí)行該任務(wù)的時(shí)刻和初始任務(wù)周期標(biāo)識(shí):
[0112]y=(5400+91800)mod86400=10800
[0113]m=ceil (91800/86400)=2
[0114]進(jìn)而再下一次執(zhí)行該任務(wù)時(shí)刻所對(duì)應(yīng)的任務(wù)列表為第10800時(shí)刻所對(duì)應(yīng)的任務(wù)列表,將該條任務(wù)記錄以及相應(yīng)的初始任務(wù)周期標(biāo)識(shí)2加入到第10800時(shí)刻所對(duì)應(yīng)的任務(wù)列表。以此類推隨后該任務(wù)的執(zhí)行調(diào)度。
[0115]本發(fā)明實(shí)施例同時(shí)提供了一種任務(wù)調(diào)度裝置,如圖3所示,該裝置包括:任務(wù)列表模塊I和任務(wù)調(diào)度模塊2。
[0116]其中,任務(wù)列表模塊I用于保存并提供單位周期中每一時(shí)刻所對(duì)應(yīng)的任務(wù)列表,所述任務(wù)列表包括至少O條任務(wù)記錄,所述任務(wù)記錄中含有任務(wù)周期標(biāo)識(shí)。
[0117]任務(wù)調(diào)度模塊2用于在每一單位周期的每一時(shí)刻均執(zhí)行任務(wù)調(diào)度操作:掃描所述任務(wù)列表模塊中當(dāng)前時(shí)刻所對(duì)應(yīng)的任務(wù)列表,從當(dāng)前時(shí)刻所對(duì)應(yīng)的任務(wù)列表中取出當(dāng)前掃描到的任務(wù)記錄,將該任務(wù)記錄的任務(wù)周期標(biāo)識(shí)減1,并判斷減I后的任務(wù)周期標(biāo)識(shí)是否大于O ;若減I后的任務(wù)周期標(biāo)識(shí)大于0,則所述任務(wù)調(diào)度模塊將該任務(wù)記錄放回當(dāng)前時(shí)刻所對(duì)應(yīng)的任務(wù)列表;若減I后的任務(wù)周期標(biāo)識(shí)等于0,則所述任務(wù)調(diào)度模塊執(zhí)行該條任務(wù)記錄所指定的任務(wù),并確定下一次執(zhí)行該任務(wù)時(shí)刻所對(duì)應(yīng)的任務(wù)列表以及初始任務(wù)周期標(biāo)識(shí),并將該條任務(wù)記錄以及相應(yīng)的初始任務(wù)周期標(biāo)識(shí)加入到下一次執(zhí)行該任務(wù)時(shí)刻所對(duì)應(yīng)的任務(wù)列表中。
[0118]本發(fā)明的任務(wù)調(diào)度裝置實(shí)施例中,將每天的24小時(shí)作為一個(gè)單位周期,每I秒鐘記為I個(gè)時(shí)刻,在24小時(shí)的單位周期中,共有24X60X60=86400個(gè)時(shí)刻。每個(gè)時(shí)刻均對(duì)應(yīng)任務(wù)列表模塊I中的一個(gè)任務(wù)列表,用于記錄在該時(shí)刻所要監(jiān)控的任務(wù);如果在該時(shí)刻監(jiān)控的某一(些)任務(wù)需要執(zhí)行,則任務(wù)調(diào)度模塊2立即執(zhí)行該(些)任務(wù),并且根據(jù)該立即執(zhí)行的任務(wù)的執(zhí)行周期,確定該任務(wù)下一次執(zhí)行的時(shí)刻;如果在該時(shí)刻的監(jiān)控的某一(些)任務(wù)不需要執(zhí)行,而是要在下一(幾)個(gè)單位周期該時(shí)刻,則根據(jù)以下規(guī)則進(jìn)行相應(yīng)調(diào)整,以在下一(幾)個(gè)單位周期的該時(shí)刻執(zhí)行該一(些)任務(wù):
[0119]當(dāng)前時(shí)刻與該任務(wù)的執(zhí)行周期之和除以單位周期之后所取的余數(shù),作為下一次執(zhí)行該任務(wù)的時(shí)刻;該任務(wù)的執(zhí)行周期除以單位周期的結(jié)果向上取整,作為該任務(wù)的初始任務(wù)周期標(biāo)識(shí)。
[0120]具體地,用公式表示,即為:
[0121]y= (w+x) mod η
[0122]m=ceil (x/n)
[0123]其中,y為下一次執(zhí)行該任務(wù)的時(shí)刻,w為當(dāng)前時(shí)刻,X為該任務(wù)的執(zhí)行周期,η為
單位周期,m為初始任務(wù)周期標(biāo)識(shí),mod表示(w+x)除以η之后取余數(shù),ceil O表示向上取M
iF.0
[0124]本發(fā)明提供的上述任務(wù)調(diào)度方法和裝置,能夠自動(dòng)形成任務(wù)調(diào)度計(jì)劃,并且可以通過查詢?nèi)我鈺r(shí)刻所對(duì)應(yīng)的任務(wù)列表而隨時(shí)了解任意時(shí)刻的任務(wù)調(diào)度計(jì)劃,實(shí)現(xiàn)了任務(wù)執(zhí)行的透明化管理。在調(diào)度時(shí),本發(fā)明只需掃描當(dāng)前時(shí)刻所對(duì)應(yīng)的任務(wù)列表,不需要掃描所有的任務(wù)信息列表,進(jìn)而縮小了掃描的規(guī)模,極大地提升了任務(wù)列表掃描效率和任務(wù)執(zhí)行效率。另外,本發(fā)明還可以利用其中的任務(wù)調(diào)度規(guī)則形成更加復(fù)雜的任務(wù)調(diào)度模式。
[0125]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。
【權(quán)利要求】
1.一種任務(wù)調(diào)度方法,包括: 建立單位周期中每一時(shí)刻所對(duì)應(yīng)的任務(wù)列表,所述任務(wù)列表包括至少O條任務(wù)記錄,所述任務(wù)記錄中含有任務(wù)周期標(biāo)識(shí); 在每一單位周期的每一時(shí)刻均執(zhí)行如下任務(wù)調(diào)度操作: 掃描當(dāng)前時(shí)刻所對(duì)應(yīng)的任務(wù)列表; 取出當(dāng)前掃描到的任務(wù)記錄,并將該任務(wù)記錄的任務(wù)周期標(biāo)識(shí)減I; 若減I后的任務(wù)周期標(biāo)識(shí)大于O,則將該任務(wù)記錄放回當(dāng)前時(shí)刻所對(duì)應(yīng)的任務(wù)列表; 若減I后的任務(wù)周期標(biāo)識(shí)等于O,則執(zhí)行該條任務(wù)記錄所指定的任務(wù),并確定下一次執(zhí)行該任務(wù)的時(shí)刻以及初始任務(wù)周期標(biāo)識(shí),并將該條任務(wù)記錄以及相應(yīng)的初始任務(wù)周期標(biāo)識(shí)加入到下一次執(zhí)行該任務(wù)的時(shí)刻所對(duì)應(yīng)的任務(wù)列表中。
2.根據(jù)權(quán)利要求1所述的任務(wù)調(diào)度方法,其特征在于: 所述單位周期為24小時(shí),相鄰時(shí)刻之間相差I(lǐng)秒,所述單位周期中共有86400個(gè)時(shí)刻,每一時(shí)刻對(duì)應(yīng)一個(gè)任務(wù)列表,共有86400個(gè)任務(wù)列表。
3.根據(jù)權(quán)利要求1所述的任務(wù)調(diào)度方法,其特征在于:在當(dāng)前單位周期結(jié)束后,隨即進(jìn)入下一單位周期,并重新執(zhí)行所述任務(wù)調(diào)度操作。
4.根據(jù)權(quán)利要求1所述的任務(wù)調(diào)度方法,其特征在于,所述的確定下一次執(zhí)行該任務(wù)的時(shí)刻以及初始任務(wù)周期標(biāo)識(shí),包括: 當(dāng)前時(shí)刻與該任務(wù)的執(zhí)行周期之和除以單位周期之后所取的余數(shù),作為下一次執(zhí)行該任務(wù)的時(shí)刻;該任務(wù)的執(zhí)行周期除以單位周期的結(jié)果向上取整,作為該任務(wù)的初始任務(wù)周期標(biāo)識(shí)。
5.一種任務(wù)調(diào)度裝置,其特征在于,包括: 任務(wù)列表模塊,用于保存并提供單位周期中每一時(shí)刻所對(duì)應(yīng)的任務(wù)列表,所述任務(wù)列表包括至少O條任務(wù)記錄,所述任務(wù)記錄中含有任務(wù)周期標(biāo)識(shí); 任務(wù)調(diào)度模塊,用于在每一單位周期的每一時(shí)刻均執(zhí)行任務(wù)調(diào)度操作: 掃描所述任務(wù)列表模塊中當(dāng)前時(shí)刻所對(duì)應(yīng)的任務(wù)列表,從當(dāng)前時(shí)刻所對(duì)應(yīng)的任務(wù)列表中取出當(dāng)前掃描到的任務(wù)記錄,將該任務(wù)記錄的任務(wù)周期標(biāo)識(shí)減1,并判斷減I后的任務(wù)周期標(biāo)識(shí)是否大于O ;若減I后的任務(wù)周期標(biāo)識(shí)大于0,則所述任務(wù)調(diào)度模塊將該任務(wù)記錄放回當(dāng)前時(shí)刻所對(duì)應(yīng)的任務(wù)列表;若減I后的任務(wù)周期標(biāo)識(shí)等于0,則所述任務(wù)調(diào)度模塊執(zhí)行該條任務(wù)記錄所指定的任務(wù),并確定下一次執(zhí)行該任務(wù)的時(shí)刻以及初始任務(wù)周期標(biāo)識(shí),并將該條任務(wù)記錄以及相應(yīng)的初始任務(wù)周期標(biāo)識(shí)加入到下一次執(zhí)行該任務(wù)的時(shí)刻所對(duì)應(yīng)的任務(wù)列表中。
6.根據(jù)權(quán)利要求5所述的任務(wù)調(diào)度裝置,其特征在于:所述單位周期為24小時(shí),相鄰時(shí)刻之間相差I(lǐng)秒,所述單位周期中共有86400個(gè)時(shí)刻,每一時(shí)刻對(duì)應(yīng)一個(gè)任務(wù)列表;所述任務(wù)列表模塊共保存86400個(gè)任務(wù)列表。
7.根據(jù)權(quán)利要求5所述的任務(wù)調(diào)度裝置,其特征在于:在當(dāng)前單位周期結(jié)束后,隨即進(jìn)入下一單位周期,所述任務(wù)調(diào)度模塊在下一單位周期重新執(zhí)行所述任務(wù)調(diào)度操作。
8.根據(jù)權(quán)利要求5所述的任務(wù)調(diào)度裝置,其特征在于,所述的確定下一次執(zhí)行該任務(wù)的時(shí)刻以及初始任務(wù)周期標(biāo)識(shí),包括: 當(dāng)前時(shí)刻與該任務(wù)的執(zhí)行周期之和除以單位周期之后所取的余數(shù),作為下一次執(zhí)行該任務(wù)的時(shí)刻;該任務(wù)的執(zhí)行周期除以單位周期的結(jié)果向上取整,作為該任務(wù)的初始任務(wù)周期標(biāo)識(shí) 。
【文檔編號(hào)】G06F9/48GK103744730SQ201410039719
【公開日】2014年4月23日 申請(qǐng)日期:2014年1月27日 優(yōu)先權(quán)日:2014年1月27日
【發(fā)明者】馬文金 申請(qǐng)人:北京京東尚科信息技術(shù)有限公司