任務調度的方法和裝置的制造方法
【技術領域】
[0001]本申請涉及計算機技術領域,具體涉及任務調度處理技術領域,尤其涉及一種任務調度的方法和裝置。
【背景技術】
[0002]任務調度是操作系統的重要組成部分。對于周期性任務的統一調度,現有技術中主要通過判斷當前時間與任務上次執行開始時間之間的時間差大于任務執行間隔來確定調度任務,在一些實現中,為了避免任務在執行時被再次調度,還需要在任務被調度時對任務上鎖,在任務當前次執行完成時對任務解鎖。這種任務調度的方法,在每個任務被調度一次的過程中增加加鎖、解鎖兩次數據寫操作,當需要調度的任務數量較大時,存在調度效率較低的問題。
【發明內容】
[0003]本申請的目的在于提出一種改進的任務調度的方法和裝置,來解決以上【背景技術】部分提到的技術問題。
[0004]第一方面,本申請提供了一種任務調度的方法,所述方法包括:根據調度周期周期性地觸發如下調度處理操作;所述調度處理操作包括:獲取當前調度處理操作的調度時間;獲取每個待調度任務的時間參數,其中,所述時間參數包括待調度任務的最近啟用時間和任務執行周期,所述任務執行周期為待調度任務相鄰兩次執行開始時間之間的間隔;輸出所述任務執行周期、所述最近啟用時間與所述調度時間滿足預設條件的待調度任務至任務池;分配并執行任務池中的任務。
[0005]在一些實施例中,所述預設條件包括:所述調度時間與所述最近啟用時間的差除以所述任務執行周期得到的余數小于所述調度周期。
[0006]在一些實施例中,所述預設條件包括:待調度任務的擬調度時間遲于上一次調度處理操作的調度時間且早于或等于當前調度處理操作的調度時間,其中,所述擬調度時間由所述最近啟用時間加上整數個所述任務執行周期獲得。
[0007]在一些實施例中,所述調度周期滿足以下條件:所有待調度任務的任務執行周期是所述調度周期的整數倍。
[0008]在一些實施例中,所述方法還包括:判斷任務池中的任務是否全部被分配或執行;若是,則結束任務調度。
[0009]在一些實施例中,當所述調度處理操作是首次調度處理操作時,當前調度處理操作的調度時間為當前時間;當所述調度處理操作不是首次調度處理操作時,當前調度處理操作的調度時間為前一個調度時間加上一個調度周期的時間。
[0010]第二方面,本申請提供了一種任務調度的裝置,所述裝置包括:調度觸發模塊,配置用于根據調度周期周期性地觸發調度處理模塊執行調度處理操作;所述調度處理模塊,配置用于執行調度處理操作,包括:調度時間獲取單元,配置用于獲取所述調度觸發模塊觸發當前調度處理操作的調度時間;任務參數獲取單元,配置用于獲取每個待調度任務的時間參數,其中,所述時間參數包括待調度任務的最近啟用時間和任務執行周期,所述任務執行周期為待調度任務相鄰兩次執行開始時間之間的間隔;判斷及輸出單元,配置用于輸出所述任務執行周期、所述最近啟用時間與所述調度時間滿足預設條件的待調度任務至任務池;任務分配及執行模塊,配置用于分配及執行任務池中的任務。
[0011]在一些實施例中,所述預設條件包括:所述調度時間與所述最近啟用時間的差除以所述任務執行周期得到的余數小于所述調度周期。
[0012]在一些實施例中,所述預設條件包括:待調度任務的擬調度時間遲于上一次調度處理操作的調度時間且早于或等于當前調度處理操作的調度時間,其中,所述擬調度時間由所述最近啟用時間加上整數個所述任務執行周期獲得。
[0013]在一些實施例中,所述調度周期滿足以下條件:所有待調度任務的任務執行周期是所述調度周期的整數倍。
[0014]在一些實施例中,所述裝置還包括:任務檢測模塊,配置用于判斷任務池中的任務是否全部被分配或執行;并且,在任務池中的任務全部被分配或執行時,結束任務調度。
[0015]在一些實施例中,當所述調度處理操作是首次調度處理操作時,當前調度處理操作的調度時間為當前時間;當所述調度處理操作不是首次調度處理操作時,當前調度處理操作的調度時間為前一個調度時間加上一個調度周期的時間。
[0016]本申請提供的任務調度的方法和裝置,通過調度周期周期性地觸發調度處理操作,在調度操作里,通過任務執行周期、最近啟用時間與調度時間滿足的預設條件輸出待調度的任務,而后對輸出的任務進行分配并執行,在不增加數據讀寫負擔的基礎上實現了任務的統一調度,從而提高了任務調度的效率。
【附圖說明】
[0017]通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本申請的其它特征、目的和優點將會變得更明顯:
[0018]圖1是根據本申請的任務調度的方法的一個實施例的流程圖;
[0019]圖2是圖1中的實施例的調度處理操作的流程圖;
[0020]圖3是根據本申請的調度處理操作中基于調度時間的時間參數與調度時間的關系不意圖;
[0021]圖4是根據本申請的調度處理操作中基于任務執行間隔的調度效果示意圖;
[0022]圖5是根據本申請的任務調度的方法的一個實施例的流程圖;
[0023]圖6是根據本申請的任務調度裝置的一個實施例的結構示意圖;
[0024]圖7是根據本申請的一個實施例的任務調度服務器系統的示意圖;
[0025]圖8示出了可以應用本申請實施例的示例性系統架構。
【具體實施方式】
[0026]下面結合附圖和實施例對本申請作進一步的詳細說明。可以理解的是,此處所描述的具體實施例僅僅用于解釋相關發明,而非對該發明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與有關發明相關的部分。
[0027]需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。下面將參考附圖并結合實施例來詳細說明本申請。
[0028]請參考圖1,其示出了任務調度的方法的一個實施例的流程100。本實施例主要以該方法應用于包含有處理器的電子設備中來舉例說明,該電子設備可以包括智能手機、平板電腦、電子書閱讀器、MP3播放器(Moving Picture Experts Group Aud1 Layer III,動態影像專家壓縮標準音頻層面 3)、MP4 (Moving Picture Experts Group Aud1 Layer IV,動態影像專家壓縮標準音頻層面4)播放器、膝上型便攜計算機和臺式計算機等等。本申請的任務調度的方法,包括以下步驟:
[0029]步驟101,根據調度周期周期性地觸發調度處理操作。
[0030]在本實施例中,電子設備(例如任務調度應用運行于其上的便攜計算機)可以根據調度周期計算調度時間,并在每個調度時間到達的時刻周期性地觸發對任務的調度處理操作(例如任務調度應用的一個調度處理進程)的執行。
[0031]其中,調度周期是觸發調度處理操作的時間間隔,其可以是預設的一個時間段,例如可以是5秒。調度時間可以是電子設備每次觸發調度操作的時間。每次調度處理操作被觸發的對應時間可以作為當前調度處理操作的調度時間。
[0032]在本實施例的一些實現方式中,電子設備可以在本步驟中完成調度時間的計算。當首次觸發調度處理操作時,電子設備可以將當前時間作為所觸發的調度處理操作的調度時間;當不是首次觸發調度處理操作時,電子設備可以將前一個調度時間加上一個調度周期的時間作為所觸發的調度處理操作的調度時間。
[0033]以下將以windows系統C++語言開發為例,給出根據調度周期周期性地觸發調度處理操作的一個實現。
[0034]在C++語言中,用scheduleTime表示調度時間,schedule Interval表示調度周期,則電子設備根據調度周期計算調度時間可以通過以下語句實現:
[0035]scheduleTime = now ();
[0036]schedule Interval = 5 ;
[0037]scheduleTime = scheduleTime+scheduleInterval ;
[0038]其中,當所述調度