一種基於分組的實時作業系統雙優先級任務調度節能方法
2023-07-13 20:58:51
一種基於分組的實時作業系統雙優先級任務調度節能方法
【專利摘要】本發明涉及一種基於分組的實時作業系統雙優先級任務調度節能方法,不同組的任務之間,任務調度僅考慮任務的普通優先級,高優先級的任務能直接搶佔低優先級任務;同組任務之間,任務調度不僅參考任務的普通優先級,還要考慮任務的閾值優先級,只有任務的普通優先級高於被搶佔任務的閾值優先級時,搶佔才可能發生。有益的效果是:通過給每個任務賦予兩個與任務調度相關的優先級,減少任務運行中的搶佔次數和上下文切換次數,降低任務運行能耗。對任務分組的方法,消除了雙優先級調度對不同組任務運行的幹擾,保證了系統的可靠性和實時性。
【專利說明】—種基於分組的實時作業系統雙優先級任務調度節能方法
【技術領域】
[0001]本發明涉及基於高可靠實時系統軟體節能【技術領域】,特別是涉及一種基於分組的實時作業系統雙優先級任務調度節能方法。
【背景技術】
[0002]高可靠實時系統廣泛用於航空、航天、電力等重要關鍵領域,保證關鍵任務可靠、穩定、安全運行。隨著計算機技術的進步,高可靠實時系統的體積越來越小,重量越來越輕,功能越來越強,不斷向智能化方向發展。在無人區或者惡劣環境條件下,高可靠實時系統大多採用電池、化學反應和自然發電技術來保證能源供給,然而電池儲能容量有限,化學反應和自然發電技術容易受到外界環境的幹擾,不能保證高可靠實時系統能源供給的可靠性和實時性,因此研究降低高可靠實時系統運行能耗的方法,能夠減少系統能量需求,提高能源供給的可靠性和穩定性。
[0003]目前,學術和工業界對實時系統的節能技術主要從硬體、作業系統和應用軟體三個方向進行研究,硬體上的電能管理主要作用於處理器和外設,通過使用工業電能管理標準「高級配置和電源管理接口」(ACPI),英特爾、AMD、IBM和威盛等處理器生產商採用調頻和調壓技術,降低處理器頻率和電壓,減少處理器運行能耗。外設通常具有多種運行模式,每種模式消耗的電能不同,當外設滿負荷運行時,通常處於高能耗模式,當外設空閒時,為了節省電能,它將從高能耗模式轉換到低能耗模式,由於外設模式轉換過程也會帶來電能開銷,因此應用於外設的節能技術主要在於如何優化外設模式轉換,常用的外設能耗模型是能耗狀態機(PSM)。作業系統層的節能技術主要是動態電能管理(DPM)和任務調度技術的結合,根據任務的執行時間、截止期和周期等屬性,在保證任務可調度性的前提下,動態調整處理器的頻率,降低處理器的速度,延長任務的執行時間,進而減少處理器等硬體資源的空閒時間,降低系統能耗。應用軟體節能技術種類較多,主要對系統中耗能構件進行管理,如調整屏幕背光強度,管理系統中任務的運行,配置系統能耗需求等。
[0004]高可靠實時系統具有高可靠和強實時性要求,上面的節能技術大多利用了 ACPI接口對處理器等硬體資源的電壓和頻率進行調整,然而,調頻和調壓技術會對系統的可靠性造成一定的影響,難以保證系統運行的可靠性和實時性,因此上文的節能技術難以適應高可靠實時系統的需求。
【發明內容】
[0005]本發明的目的在於克服上述已有節能方法採用調頻、調壓帶來的可靠性低,實時性差的問題,提供一種基於分組的實時作業系統雙優先級任務調度節能方法,減少實時作業系統特定分組的任務上下文切換次數,在降低系統能耗的同時滿足高可靠實時系統的可靠性和實時性需求。
[0006]一種基於分組的實時作業系統雙優先級任務調度節能方法,其特徵在於:雙優先級定義:在任務控制塊中為任務定義兩個運行時優先級:普通優先級和閾值優先級,並且滿足閾值優先級不低於普通優先級;基於分組的雙優先級任務調度方法步驟如下:
[0007]步驟1:首先,根據上文對任務的定義,將任務劃分為系統任務和自定義任務;所述系統任務指為作業系統提供系統功能服務,運行於作業系統中的服務程序;所述自定義任務指由用戶開發運行或安裝於作業系統平臺之上,為用戶提供特定服務功能的應用程式;
[0008]步驟2:對自定義任務:根據其優先級高低做分組操作,以自定義任務的優先級範圍為[Min, Max],當將[Min, Max]中每一級優先級對應的自定義任務各分為一組時,自定義任務最多分為Max-Min+Ι組;當將[Min, Max]中所有自定義任務全部分為一組時,自定義任務最少分為I組;
[0009]對系統任務,不論其優先級高低,將其全部分為I組;
[0010]步驟3:最後,整個系統的任務分組數等於自定義任務的分組數與系統任務分組數之和,即分組數處於[2,Max-Min+2]之間。
[0011]本發明提出的基於分組的實時作業系統雙優先級任務調度節能方法,不同組的任務之間,任務調度僅考慮任務的普通優先級,高優先級的任務能直接搶佔低優先級任務;同組任務之間,任務調度不僅參考任務的普通優先級,還要考慮任務的閾值優先級,只有任務的普通優先級高於被搶佔任務的閾值優先級時,搶佔才可能發生。
[0012]本發明與【背景技術】相比,具有的有益的效果是:
[0013](I)通過給每個任務賦予兩個與任務調度相關的優先級,減少任務運行中的搶佔次數和上下文切換次數,降低任務運行能耗。
[0014](2)對任務分組的方法,消除了雙優先級調度對不同組任務運行的幹擾,保證了系統的可靠性和實時性。
【專利附圖】
【附圖說明】
[0015]圖1是基於分組的雙優先級任務調度結構圖;
[0016]圖2是基於分組的雙優先級任務調度流程圖;
[0017]圖3是任務上下文切換計算時間的統計分布圖。
【具體實施方式】
[0018]本實施例基於分組的雙優先級任務調度方法如下:
[0019]基於分組的雙優先級任務調度方法由雙優先級和分組兩個步驟組成,每個步驟如下所示:
[0020]2a)雙優先級定義
[0021]在任務控制塊中為任務定義兩個運行時優先級:普通優先級和閾值優先級。並且滿足閾值優先級不低於普通優先級。普通優先級與閾值優先級在任務創建時被初始化,任務的普通優先級繼承了其父的普通優先級的值,待任務開始運行時,通過系統調用對普通優先級和閾值優先級重新賦值。
[0022]確定閾值優先級的算法過程:
[0023](I)初始化任務屬性值,按普通優先級從低到高為任務排序;
[0024](2)取優先級最低的任務,計算該任務在當前屬性下的最壞響應時間;[0025](3)判斷該任務的最壞響應時間與截止期的大小;
[0026](4)如果小於截止期,則閾值優先級分配成功,如果所有任務已分配完畢,則進入
(6),否則返回(2)繼續分配下一個任務;
[0027](5)如果大於等於截止期,則提高閾值優先級,如果閾值優先級高於最大值,則分配不成功,程序結束,否則返回(3)繼續執行;
[0028]( 6 )所有任務分配成功,程序結束。
[0029]2b)任務分組
[0030]定義1:系統任務指為作業系統提供系統功能服務,運行於作業系統中的服務程序,如時鐘中斷,調度程序,驅動程序等。
[0031]定義2:自定義任務指由用戶開發運行或安裝於作業系統平臺之上,為用戶提供特定服務功能的應用程式,如各種控制程序等。
[0032]任務分組的過程如下:
[0033](I)首先,根據上文對任務的定義,將任務劃分為系統任務和自定義任務;
[0034](2)在(I)中分組的基礎上,對自定義任務,根據其優先級高低對其繼續做進一步分組操作,假設自定義任務的優先級範圍為[Min, Max],如果將[Min, Max]中每一級優先級對應的自定義任務各分為一組,則自定義任務最多可以分為Max-Min+Ι組;如果將[Min, Max]中所有自定義任務全部分為一組,則自定義任務最少可以分為I組;
[0035](3)對系統任務,不論其優先級高低,將其全部分為I組;
[0036](4)最後,整個系統的任務分組數等於自定義任務的分組數與系統任務分組數之和,即分組數處於[2,Max-Min+2]之間。
[0037]自定義任務與系統任務的區別方法如下:
[0038]在任務控制塊中定義自定義任務標誌Is_Defined, Is_Def ined默認值為O,如果任務為自定義任務,則將Is_Defined置為I。
[0039]根據上文分組方法,令Max-Min+1 = n,按照任務優先級高低和自定義與否將系統中所有任務最多分為n+1組,任務的分組參考圖1實現如下:
[0040]分組1:如果任務標誌Is_Def ined為0,則該任務為系統任務,將其加入系統任務組,記為G1 ;
[0041]分組2:如果任務優先級pri e L1且任務標誌IS_Defined為1,則該任務為L1級自定義應用任務,將其加入L1級自定義應用任務組,記為G2 ;
[0042]......[0043]分組η:如果任務優先級pri e Ln且任務標誌Is_Def ined為I,則該任務為Ln級自定義應用任務,將其加入Ln級自定義應用任務組,記為Gn ;
[0044]分組n+1:如果任務優先級pri e Ln+1且任務標誌IS_Defined為1,則該任務為Ln+1級自定義應用任務,將其加入Ln+1級自定義應用任務組,記為Gn+1。
[0045]基於分組的雙優先級調度方法能夠隔離不同組任務運行產生的幹擾,在不同組的任務之間,任務調度僅考慮任務的普通優先級,高優先級的任務能夠直接搶佔低優先級任務;在同組任務之間,任務調度不僅涉及任務的普通優先級,還要考慮任務的閾值優先級,只有任務的普通優先級高於其它任務的閾值優先級時,搶佔才可能發生。而且,任務調度不能對任務主動放棄CPU的情形產生任何影響。[0046]將當前執行任務記為prev,下一個待執行的任務記為next,基於分組的雙優先級任務調度過程參照圖2實現如下:
[0047](1)當系統中首個任務運行時,如果任務為非自定義任務,則任務調度優先級與其普通優先級相等;如果任務為自定義任務,則在任務調入CPU前,將任務的調度優先級提升為其閾值優先級。
[0048](2)如果任務prev和next均為非自定義任務,則維持原來調度策略不變,如果prev是主動放棄CPU,則主動調用schedule O函數觸發調度,如果prev是被next搶佔,則比較與next普通優先級高低,如果prev優先級低於next,則設置搶佔標誌位,被動調用schedule O函數觸發調度。
[0049](3)如果prev為非自定義任務,next為自定義任務,則調度情形與(2)中相同,只是在next被調入CPU前,需將其調度優先級提升為閾值優先級。
[0050](4)如果prev為自定義任務,next為非自定義任務,如果任務prev主動放棄CPU,則其主動調用schedule O觸發調度,如果任務prev被next搶佔,則next的普通優先級僅需高於prev的普通優先級,任務prev被動調用schedule O函數觸發調度。而且,任務prev在進入就緒隊列前,需將其調度優先級從閾值優先級恢復為普通優先級。
[0051](5)如果任務prev和next均為自定義任務,如果任務prev主動放棄CPU,則其主動調用schedule O函數觸發調度;如果任務prev和next屬於同一組,且任務next搶佔任務prev,則任務next的普通優先級必須高於prev的閾值優先級,而且,prev在換出前,需將其調度優先級恢復為普通優先級,next換入前,需將其調度優先級提升為閾值優先級。如果任務prev和next屬於不同組,則調度過程與(4)相同。
[0052]採用本發明的步驟,使得任務運行能耗降低,任務運行能耗的評估為:
[0053]任務運行產生的能耗主要分為兩類:一是任務運行必須消耗的能量,叫基礎能耗;二是由於外界環境對任務運行造成的幹擾帶來的額外能耗,叫輔能耗。基礎能耗由系統硬體資源直接產生,它等於任務在系統各硬體資源上花費的計算時間與硬體資源功率乘積的累加和。輔能耗由任務運行過程中的上下文切換產生,上下文切換包括主動上下文切換和被動上下文切換,輔能耗則由主動上下文切換與被動上下文切換的次數之和與上下文切換平均能耗的乘積得來。
[0054]任務運行能耗的評估公式如下所示:
【權利要求】
1.一種基於分組的實時作業系統雙優先級任務調度節能方法,其特徵在於:雙優先級定義:在任務控制塊中為任務定義兩個運行時優先級:普通優先級和閾值優先級,並且滿足閾值優先級不低於普通優先級;基於分組的雙優先級任務調度方法步驟如下: 步驟1:首先,根據上文對任務的定義,將任務劃分為系統任務和自定義任務;所述系統任務指為作業系統提供系統功能服務,運行於作業系統中的服務程序;所述自定義任務指由用戶開發運行或安裝於作業系統平臺之上,為用戶提供特定服務功能的應用程式;步驟2:對自定義任務:根據其優先級高低做分組操作,以自定義任務的優先級範圍為[Min, Max],當將[Min, Max]中每一級優先級對應的自定義任務各分為一組時,自定義任務最多分為Max-Min+Ι組;當將[Min, Max]中所有自定義任務全部分為一組時,自定義任務最少分為I組; 對系統任務,不論其優先級高低,將其全部分為I組; 步驟3:最後,整個系統的任務分組數等於自定義任務的分組數與系統任務分組數之和,即分組數處於[2,Max-Min+2]之間。
【文檔編號】G06F1/32GK103914346SQ201410133090
【公開日】2014年7月9日 申請日期:2014年4月3日 優先權日:2013年12月16日
【發明者】董雲衛, 顧斌, 葛永琪, 楊春鑫 申請人:西北工業大學