本發(fā)明涉及用于使用滑動時間窗口調(diào)度任務的系統(tǒng)和方法。
背景技術:
航空航天應用中的實時操作系統(tǒng)(RTOS)可以依靠時間劃分的概念以便保證該RTOS在識別的最壞情況的執(zhí)行時間內(nèi)執(zhí)行任務。例如,一種RTOS使用靜態(tài)固定的時間窗口調(diào)度。一種替換方法使用速率單調(diào)的(RM)調(diào)度和空閑時間調(diào)度以向動態(tài)任務執(zhí)行提供更高的靈活性同時仍維持時間確定性。
在多核平臺中,表征并限制跨內(nèi)核干擾在確定該最壞情況執(zhí)行時間以及由此的預算方面是關鍵的,其中預算形成時間劃分的基礎。然而,在多核平臺中,并不總能保證多線程的可調(diào)度性。因此,在多核RTOS中,提供在不同內(nèi)核上執(zhí)行的任務集合借此被限制為滿足時間確定性然而也允許靈活性和動態(tài)性的多核RTOS機制并不總是可以的。
技術實現(xiàn)要素:
提供了用于使用滑動時間窗口調(diào)度任務的系統(tǒng)和方法。在某些實施例中,用于調(diào)度任務執(zhí)行的系統(tǒng)包括被配置成執(zhí)行多個任務的至少一個處理單元,其中該多個任務中的每個任務被調(diào)度成在多個調(diào)度器實例中的一個調(diào)度器實例內(nèi)執(zhí)行,該多個調(diào)度器實例中的每個調(diào)度器實例被與多個時間窗口中的一組時間窗口相關聯(lián)并在每個時間窗口中被與至少一個處理單元中的一組處理單元相關聯(lián),該多個時間窗口中的一個或多個時間窗口具有開始時間和所分配的持續(xù)時間并且與該一個或多個時間窗口相關聯(lián)的調(diào)度器實例不早于該開始時間開始執(zhí)行相關聯(lián)的任務并且執(zhí)行不長于所分配的持續(xù)時間,并且其中該開始時間可滑動至時間上較早的時刻。
附圖說明
要理解的是,附圖僅描繪示例性實施例并因此不應被視為對范圍進行限制,將通過使用附圖采用額外的特異性和細節(jié)來描述示例性實施例,其中:
圖1是在本公開中描述的一個實施例中用于在至少一個處理單元上執(zhí)行任務的系統(tǒng)的框圖;
圖2是在本公開中描述的一個實施例中所調(diào)度的任務的時間線的圖;
圖3A是在本公開中描述的一個實施例中在單個處理單元上的滑動時間窗口內(nèi)調(diào)度的任務的時間線的一部分的圖;
圖3B是在本公開中描述的一個實施例中在多核處理單元上的滑動時間窗口內(nèi)調(diào)度的任務的時間線的一部分的圖;
圖4是圖解在本公開中描述的一個實施例中滑動時間窗口和固定時間窗口的組合的時間線的圖;
圖5A是圖解在本公開中描述的一個實施例中在單個處理單元上的中斷服務例程時間窗口的調(diào)度的時間線的圖;
圖5B是圖解在本公開中描述的一個實施例中在多個處理單元上的中斷服務例程時間窗口的調(diào)度的時間線的圖;
圖6A-6C是圖解針對由中斷服務搶占時間窗口的不同實施例的時間線的一部分的圖;
圖7是圖解在本公開中描述的一個實施例中用于多個時間窗口的最早開始時間的定義的時間線的圖;
圖8是圖解在本公開中描述的一個實施例中時間窗口空閑時間的累積的時間線的圖;
圖9A-9D是圖解在本公開中描述的一個實施例中在滑動時間窗口的情況下識別和使用空閑時間的時間線的圖;
圖10是圖解在本公開中描述的一個實施例中不同時間窗口使用時間窗口空閑時間的時間線的圖;以及
圖11是在本公開中描述的一個實施例中用于實現(xiàn)滑動時間窗口的方法的流程圖。
依據(jù)慣例,各種描述的特征并不按比例繪制而是繪制以強調(diào)與示例性實施例相關的具體特征。
具體實施方式
在以下詳細描述中,參考形成本文一部分的附圖,并且其中借助圖解的方式示出了具體的例證性實施例。然而,要理解的是,可以利用其它實施例并且可以進行邏輯、機械、和電的改變。此外,附圖和說明書中介紹的方法不應被解釋為限制其中可以執(zhí)行單獨的步驟的順序。因此,以下詳細描述不應被視為限制性意義。
為了提供靈活性以容納期望的動態(tài)性同時仍保持時間保證,提供了用于使用滑動時間窗口調(diào)度任務的系統(tǒng)和方法。為了實現(xiàn)滑動時間窗口,使用時間劃分將任務調(diào)度到時間窗口中。時間劃分有助于滿足任務級別以及時間窗口級別的時間保證。另外,如本文所描述的,時間窗口是滑動時間窗口?;瑒訒r間窗口能夠調(diào)整時間窗口的開始時間使得任務在時間上較早的時刻處執(zhí)行同時仍維持時間確定性。當實施例實現(xiàn)滑動時間窗口時,系統(tǒng)還可以為中斷服務例程的執(zhí)行保留時間。另外,還可以執(zhí)行空閑時間調(diào)度以允許所有內(nèi)核上的充分的CPU利用。
根據(jù)某些實施例,圖1圖解能夠?qū)崿F(xiàn)滑動時間窗口的系統(tǒng)100,滑動時間窗口在上文被簡要地提及并在下文被更詳細地描述。系統(tǒng)100一般地可以被實現(xiàn)在嵌入式系統(tǒng)、標準計算系統(tǒng)、以及本領域技術人員已知的其它實現(xiàn)中。在至少一個實施例中,系統(tǒng)100使用操作系統(tǒng)(諸如實時操作系統(tǒng)),其中該操作系統(tǒng)具有調(diào)度需求。如圖所示,系統(tǒng)100包括被耦合至調(diào)度器104、存儲器106、和其它資源108的處理實體102。處理實體102可以被通信地耦合至調(diào)度器104、存儲器106、以及其它資源108。處理實體102可以是單個處理單元或多個處理單元。如本文所使用的,術語“處理單元”一般是指能夠如程序指令所指示的那樣接受數(shù)據(jù)并執(zhí)行數(shù)學和邏輯運算的計算設備。在實施例中,其中處理實體102包括多個處理單元,該多個處理單元可以為多CPU系統(tǒng)的一部分、多核CPU中的一組內(nèi)核、或者超線程處理單元內(nèi)的一組超線程。在一個另外的示例中,多個處理單元可以是多CPU系統(tǒng),其中該多CPU系統(tǒng)中的不同CPU具有多個內(nèi)核。另外,每個內(nèi)核可以操作為超線程處理單元。如本文所使用的,術語“多核”在下文將被用于指如上文所述的具有多個處理單元的實現(xiàn)。
在圖1中示出的示例性實施例中,程序指令被存儲(或以其它方式被收錄)在適當?shù)姆菚簳r性存儲媒體或存儲器106(諸如閃存或其它非易失性存儲器、磁盤驅(qū)動器、和/或光盤驅(qū)動器)上或中。程序指令的至少一部分由處理實體102從存儲器106讀出以在處理實體102上執(zhí)行。程序指令在本文還被稱為“軟件”。其上或其中收錄有程序指令的存儲器106這里還可以被稱為“程序產(chǎn)品”。雖然圖1中將存儲器106示出為對于各處理實體102來說本地的,但要理解也可以使用遠程存儲器106(例如,通過網(wǎng)絡或通過云可訪問的存儲媒體)和/或可移除媒體。在由處理實體102執(zhí)行期間,存儲器106還可以存儲程序指令(和任何相關數(shù)據(jù))。在一個實現(xiàn)中,存儲器106包括目前已知或后來開發(fā)的任何適當形式的隨機存取存儲器(RAM),諸如動態(tài)隨機存取存儲器(DRAM)。在其它實施例中,使用其它類型的存儲器。另外,在某些示例性實現(xiàn)中,其中處理實體102包括多個處理單元,每個處理單元具有專用于在相關聯(lián)的處理單元上的執(zhí)行期間存儲程序指令的分離的存儲器106。
在圖1中示出的另外的示例性實施例中,系統(tǒng)100包括促進與外部系統(tǒng)進行信息的發(fā)射和接收的其它設備。例如,如圖1所示,系統(tǒng)100包括傳感器130,其感測外部參數(shù)(以其它方式產(chǎn)生指示某些物理現(xiàn)象的信號或信息)并將它們發(fā)射至處理實體102以供處理實體102(更具體地,在其上執(zhí)行的程序指令)使用。另外,系統(tǒng)100包括控制接口132。在該實施例中,當處理實體102執(zhí)行程序指令時,處理實體102將發(fā)射電信號至控制接口132以控制被連接至系統(tǒng)100的外部系統(tǒng)。而且,在至少一個示例性實施例中,系統(tǒng)100與用戶交互。為了促進與用戶的交互,系統(tǒng)100可以包括至少一個用戶輸入設備134和顯示器136。每個用戶輸入設備134從用戶接收輸入并將該輸入發(fā)射至處理實體102以供處理實體102(更具體地,在其上執(zhí)行的程序指令)使用。而且,在該實施例中,處理集群102將供用戶觀看的信息輸出至顯示器136,其為用戶顯示該信息。
在至少一個實現(xiàn)中,系統(tǒng)100包括調(diào)度器104。調(diào)度器104調(diào)度程序指令在處理實體102上的執(zhí)行。在至少一個實施例中,調(diào)度器104是動態(tài)地調(diào)度程序指令的執(zhí)行的操作系統(tǒng)中的調(diào)度器。在另一實施例中,調(diào)度器104根據(jù)靜態(tài)的時間定義調(diào)度程序指令的執(zhí)行。例如,當操作系統(tǒng)遵守ARINC 653時,程序指令的執(zhí)行被分派至專用的時間窗口。另外,當處理實體102包括多個處理單元時,每個處理單元可以具有相關聯(lián)的調(diào)度器104。
如本文所描述的,被存儲在存儲媒體104內(nèi)的程序指令可以被組織成任務。如本文所使用的,術語“任務”是指作為或識別與彼此相關聯(lián)的一組程序指令、當被執(zhí)行時達成指定的目的的實體。任務由調(diào)度器104調(diào)度以在處理實體102上執(zhí)行。當任務被調(diào)度成執(zhí)行時的每個實例在本文被稱為任務的調(diào)度實例。另外,任務可以由在任務的調(diào)度實例內(nèi)執(zhí)行的較小的子任務組成。在某些示例性實現(xiàn)中,任務可以被應用至速率單調(diào)線程、POSIX線程、或ARINC 653進程。
在某些實施例中,多個任務實例可以被調(diào)度成在調(diào)度器實例內(nèi)執(zhí)行。調(diào)度器實例可以被捆綁到單個內(nèi)核或多個內(nèi)核。當調(diào)度器實例被捆綁到多個內(nèi)核時,調(diào)度算法可以選擇在其上執(zhí)行與多核調(diào)度器實例相關聯(lián)的線程的內(nèi)核。如果在時間窗口中沒有調(diào)度器實例與內(nèi)核相關聯(lián),那么在該時間窗口期間任務可以不被允許在未調(diào)度的內(nèi)核上執(zhí)行。在主框架內(nèi),可以有多個調(diào)度器實例,然而,對于整個主框架來說每個任務可以由單個調(diào)度器實例處理。
在某些實現(xiàn)中,其中處理實體102包括多個處理單元,調(diào)度器104確定處理實體102中的哪個處理單元將執(zhí)行特定任務。而且,調(diào)度器104確定在任何給定時間點處哪些任務要在處理實體102中的每個處理單元上被執(zhí)行。在確定如何調(diào)度任務的執(zhí)行中,調(diào)度器104使用提供用于確定如何調(diào)度任務的執(zhí)行的規(guī)則和方法的調(diào)度算法或其它調(diào)度策略。例如,調(diào)度器104可以使用調(diào)度算法,諸如速率單調(diào)、優(yōu)先級搶占、輪詢等。在此類實施例的一種實現(xiàn)中,調(diào)度器104使用單個調(diào)度算法以在處理實體102內(nèi)的各種處理單元上調(diào)度任務的執(zhí)行。在另一實現(xiàn)中,調(diào)度器104使用多個調(diào)度算法以在處理實體102內(nèi)的不同處理單元上調(diào)度任務的執(zhí)行。例如,在此類替換實現(xiàn)中,調(diào)度器104使用第一調(diào)度算法以調(diào)度任務中的某些用于在第一處理單元上執(zhí)行,以及第二調(diào)度算法用于調(diào)度任務中的某些的執(zhí)行以在處理實體102內(nèi)的第二處理單元上執(zhí)行。
在至少一個實施例中,以實現(xiàn)時間確定性的這樣的方式執(zhí)行任務和時間窗口的調(diào)度。時間確定性可以以至少兩種不同的方式被實現(xiàn)。例如,時間確定性可以在其中每個任務是速率單調(diào)線程的速率單調(diào)調(diào)度的上下文中通過保證預算在每個任務的基礎上被實現(xiàn)。在該示例中,可以對時間窗口和在該時間窗口內(nèi)執(zhí)行的任務兩者進行時間劃分。替換地,時間確定性可以通過將預算僅分配至作為整體的時間窗口在時間窗口的基礎上被實現(xiàn)。例如,時間窗口可以是時間劃分的實體并且也可以是用于非時間劃分任務的容器。例如,在基于ARINC 653的應用的情況下,時間確定性可以在其中針對一組任務保證預算的ARINC 653劃分級別處被實現(xiàn)。因此,在時間窗口級別處強制實現(xiàn)預算同時在時間窗口內(nèi)不為單獨的ARINC 653任務分配預算。
在至少一個示例性實施例中,調(diào)度器104在時間劃分的操作系統(tǒng)中調(diào)度任務。當調(diào)度器104在時間劃分的操作系統(tǒng)中調(diào)度任務時,調(diào)度器104分配處理預算至在處理實體102上執(zhí)行的任務。所分配的處理預算定義了在其期間任務被允許在處理實體102上執(zhí)行的時間段。另外,調(diào)度器104向任務分配允許任務在要么連續(xù)的要么不連續(xù)的時間間隔中完成執(zhí)行的處理預算。例如,當任務在連續(xù)的時間間隔中完成執(zhí)行時,調(diào)度器104為該任務的執(zhí)行分配持續(xù)時間充分地足夠長的處理預算以允許在不中斷的情況下完成該任務的執(zhí)行。替換地,當任務在非連續(xù)時間間隔中完成執(zhí)行時,調(diào)度器104為任務的各執(zhí)行分配不連續(xù)的處理預算,其中不連續(xù)的處理預算允許足夠的時間用于完成相關聯(lián)的任務的執(zhí)行。
另外,如下文更詳細描述的,調(diào)度器104可以包括兩個等級的調(diào)度器。例如,調(diào)度器104可以包括時間窗口調(diào)度器和任務實例調(diào)度器。當調(diào)度器104用作時間窗口調(diào)度器時,調(diào)度器104調(diào)度具有指定的開始和結束時間的時間窗口,或者在其它實現(xiàn)中,具有指定的開始時間和指定的持續(xù)時間的時間窗口,其中時間窗口是其中指定任務被調(diào)度用于執(zhí)行的一部分時間。由于時間窗口調(diào)度器調(diào)度時間窗口的開始和持續(xù)時間,因此時間窗口調(diào)度器能夠保證時間窗口在指定時間內(nèi)開始和結束。在其中任務周期性地執(zhí)行的某些實施例中,在主框架期間調(diào)度時間窗口,其中主框架是在其期間任務針對所調(diào)度的時間窗口中的每一個執(zhí)行的時間段。主框架表示用于具有最長時期的任務的時間段。像這樣,每個時間窗口可以以在不同主框架內(nèi)的相同的時間偏移在每個主框架內(nèi)被調(diào)度。另外,在某些實施例中,主框架可以基于具有最小時間段的一個或多個任務被分割成更小的時間段。更小的時間段可以被稱為次框架。在某些實施例中,可以存在在主框架期間調(diào)度的多個時間窗口。不同的時間窗口形成時間窗口序列。當時間窗口序列中的最后的時間窗口完成時,該時間窗口調(diào)度器從該時間窗口序列中的第一時間窗口開始再一次開始調(diào)度該時間窗口序列。在其中處理實體102包括多個內(nèi)核的實施例中,時間窗口調(diào)度器可以在多個內(nèi)核上同步時間窗口的開始時間和持續(xù)時間。在另外的實施例中,其中調(diào)度器104是任務實例調(diào)度器,調(diào)度器104分派任務執(zhí)行的實例以在指定的時間窗口內(nèi)在調(diào)度器實例窗口內(nèi)執(zhí)行。下面更詳細地描述時間窗口調(diào)度器和任務實例調(diào)度器的使用。
圖2圖解用于在多核處理系統(tǒng)上執(zhí)行任務的執(zhí)行時間線200,但是與圖2相關地討論的原則也應用至單核操作系統(tǒng)。所圖解的時間線僅示出了主框架的一部分。例如,與主框架相關聯(lián)的執(zhí)行調(diào)度可以以1Hz的頻率重復,其中本領域技術人員會認識到重復頻率可以更低或更高。在主框架內(nèi),可以存在多個次框架,其中在次框架內(nèi)的執(zhí)行以特定頻率開始。在一個示例性實現(xiàn)中,次框架中的每個的開始以80Hz的頻率發(fā)生。像這樣,在不同次框架內(nèi)的執(zhí)行可以每12.5ms開始,在其它實現(xiàn)中,次框架能以更快或更慢的頻率開始。如圖2中所示,存在被識別為次框架201-204的四個不同的次框架。在次框架201-204內(nèi),不同的任務執(zhí)行實例被調(diào)度成在調(diào)度的時間窗口內(nèi)執(zhí)行。替換地,某些實施例可以具有其中次框架等于主框架的單個框架。
在至少一個實現(xiàn)中并如圖2所示的示例所圖解的,存在在次框架201-204內(nèi)調(diào)度的八個不同的時間窗口221-228。如上文與調(diào)度器104相關地討論的,不同的時間窗口221-228在每個主框架內(nèi)同時執(zhí)行。在某些實現(xiàn)中,在特定時間窗口內(nèi)的任務實例被限制為在單個次框架內(nèi)執(zhí)行。替換地,與特定時間窗口相關聯(lián)的任務實例可以在第一次框架內(nèi)開始執(zhí)行并在第二次框架內(nèi)停止執(zhí)行。如圖2所示,時間窗口的跨度大體上被限制為單個次框架。另外,如圖2所示,時間線200示出了針對兩個不同處理內(nèi)核251-252的任務調(diào)度。時間窗口221-228跨越不同的內(nèi)核251-252。
在某些實現(xiàn)中,調(diào)度由在一組時間窗口內(nèi)調(diào)度在一個或多個內(nèi)核上的任務執(zhí)行的調(diào)度器實例組成。因此,在時間窗口內(nèi)每個內(nèi)核被與特定的調(diào)度器實例相關聯(lián)。其中在時間窗口內(nèi)特定的調(diào)度實例是活躍的該間隔是調(diào)度器實例窗口。調(diào)度器實例窗口210-217和231-236表示各種時間窗口221-228內(nèi)的調(diào)度器實例窗口。如圖所示在特定時間窗口中將每個調(diào)度器實例窗口分派至內(nèi)核。例如,在內(nèi)核251上,調(diào)度器實例窗口210-217執(zhí)行與在內(nèi)核252上在調(diào)度器實例窗口231-236中執(zhí)行的任務不同的任務。另外,在與被分派至內(nèi)核251的調(diào)度器實例窗口210-217相比時,可以在內(nèi)核252上在調(diào)度器實例窗口231-236內(nèi)執(zhí)行不同類型的任務。在其中不同類型的任務執(zhí)行像是ARINC 653任務、POSIX任務、速率單調(diào)任務、中斷任務等的實施例中,在特定調(diào)度器實例窗口內(nèi)執(zhí)行的不同任務可以被限制為是相同類型的任務。例如,任務τ1、τ2、τ3、和τ4可以是在被指定用于速率單調(diào)任務的執(zhí)行的調(diào)度器實例窗口210、212-214、216和235內(nèi)調(diào)度執(zhí)行的速率單調(diào)任務。任務P1、P2、和P3是在ARINC 653調(diào)度器實例窗口217、231、232、和234內(nèi)調(diào)度執(zhí)行的ARINC 653任務。另外,任務τ5、τ6、和τ7是在POSIX調(diào)度器實例窗口211、215、233、和236內(nèi)調(diào)度執(zhí)行的POSIX任務。
在之前的系統(tǒng)中,與時間線200相關地固定不同的時間窗口。當時間窗口被固定時,防止該時間窗口的開始在時間線上滑動要么更早要么更晚。因此,與固定時間窗口相關聯(lián)的任務不被允許要么在固定時間窗口的開始時間之前開始執(zhí)行要么在如根據(jù)開始時間由固定時間窗口的持續(xù)時間確定的固定時間窗口的結束之后繼續(xù)執(zhí)行。另外,被分配至固定時間窗口的預算防止與其它時間窗口相關聯(lián)的任務在該固定時間窗口期間執(zhí)行。實際上,當時間窗口被固定時,固定時間窗口被保證不在時間線上滑動。針對一組執(zhí)行的任務的時間窗口的固定有助于確定針對該組執(zhí)行的任務的最壞情況執(zhí)行時間。
然而,當分派任務給固定時間窗口時,調(diào)度器可能不支持動態(tài)性,因為任務和子任務可能被靜態(tài)地定義。例如,預先配置的預算和最長執(zhí)行時間可以明確地靜態(tài)地在時間線上被調(diào)度和配置。因此,防止調(diào)度器將額外的時間致力于任務的完成,使得即使時間是可用的由于在下一固定時間窗口的開始被調(diào)度之前在調(diào)度時間線上的間隙調(diào)度器也不能夠支持附加的預算和執(zhí)行時間的調(diào)度。因此,由于缺乏動態(tài)性,可能無效率地利用時間線。
在另外的實施例中,調(diào)度器需要能夠調(diào)度中斷服務例程。中斷服務例程的本性是動態(tài)的并當中斷發(fā)生時需要被執(zhí)行。當調(diào)度器使用固定時間窗口時,一般存在兩種方式以支持中斷服務例程的調(diào)度。用以支持中斷服務例程的一種方式是通過所謂的“抽樣方法”。在抽樣方法中,中斷服務例程任務被明確地在固定的時間點調(diào)度。中斷例程任務的固定時間調(diào)度可能導致比在其中中斷由硬件提出的點處執(zhí)行中斷例程要么增加等待時間(更少的調(diào)度時間)要么增加計算資源。用以支持中斷服務例程的第二種方法可以被稱為“所有任務中斷服務例程增加方法”(下文被稱為“增加方法”)。在增加方法中,采用用于執(zhí)行中斷服務例程的預算填補或額外地增加時間線上未調(diào)度時間的任務和潛在的間隙。因此,每當中斷發(fā)生時,等待時間被降低,因為中斷服務例程將為下一調(diào)度任務。該增加方法具有無等待時間或最小等待時間的優(yōu)點。然而,由于在時間段內(nèi)分配多個中斷服務例程預算,存在引發(fā)浪費的處理器利用損失的可能性,其中該處理器對于時間線的重要部分擱置空閑。
在某些實施例中,為了更有效地利用處理器的能力,調(diào)度器可以實現(xiàn)滑動時間窗口。如本文所使用的,短語“滑動時間窗口”一般是指可以要么以比時間窗口的預先配置的開始較早的時間開始執(zhí)行要么比基于針對該時間窗口預先配置的持續(xù)時間得出的時間窗口的結束更早地停止執(zhí)行的調(diào)度時間窗口。圖3A和3B圖解滑動時間窗口的概念。圖3A圖解被調(diào)度成在單個處理單元上執(zhí)行的時間線300a上的滑動時間窗口。圖3B圖解針對多核的在時間線300b上的滑動時間窗口的實現(xiàn)。在圖3A中,預先配置的時間窗口302被分派為在次框架304內(nèi)執(zhí)行。然而,預先配置的時間窗口302可以在主框架內(nèi)的任何時刻執(zhí)行,尤其是當該主框架等于該次框架時。任務τ能夠在預先配置的時間窗口302期間執(zhí)行。由于時間窗口302是滑動時間窗口,時間窗口302的預先配置的開始306能夠滑動至時間線中的較早的點。然而,時間窗口302的預先配置的開始306不能滑動至時間線中的較晚的點。另外,當時間窗口302的開始306滑動至較早的時間點時,時間窗口302的得出的結束308也基于針對時間窗口302預先配置的持續(xù)時間滑動至時間線300a中較早的點。然而,與開始306類似,結束308一般不能滑動至時間線中的較晚的點。在某些實現(xiàn)中,當與時間窗口302相關聯(lián)的任務在基于時間窗口302預先配置的持續(xù)時間得出的結束時間之前完成執(zhí)行時,結束時間308可滑動至時間上較早的時刻。
圖3B與圖3A類似,除了圖3B圖解多核上預先配置的時間窗口的調(diào)度之外。如上文所討論的,諸如預先配置的時間窗口312時間窗口在次框架314內(nèi)跨越多個內(nèi)核。任務τ1、τ2和τ3被調(diào)度成在時間窗口312內(nèi)執(zhí)行。如上文所述,預先配置的時間窗口312是滑動時間窗口,時間窗口312的預先配置的開始316能夠滑動至時間線中的較早的點。然而,時間窗口312的預先配置的開始316不能夠滑動至時間線中的較晚的點。另外,當開始316滑動至較早的時間點時,時間窗口312的得出的結束318也能夠滑動至時間線中的較早的點。由于時間窗口312的開始316不能滑動至時間上較晚的時刻,因此得出的結束318不能夠滑動至時間線300b中的較晚的點。在某些實現(xiàn)中,當開始316滑動時,結束318也滑動相同的時間量。在某些實現(xiàn)中,當與時間窗口312相關聯(lián)的任務在基于時間窗口312的預先配置的持續(xù)時間得出的結束時間之前結束執(zhí)行時,結束時間308可以滑動至時間上較早的時刻。
在某些實現(xiàn)中,基于在時間窗口內(nèi)與調(diào)度器實例相關聯(lián)的任務的周期性在時間窗口能滑動多遠上可能存在限制。例如,周期性的任務不能夠在相關聯(lián)的周期的開始之前開始執(zhí)行。某些系統(tǒng)可能具有基于任務的速率和/或周期配置時間窗口的開始時間和持續(xù)時間的系統(tǒng)集成器。在實現(xiàn)滑動時間窗口中,存在可以被實現(xiàn)以將可能的限制考慮在內(nèi)的至少兩種方法。在第一種方法中,時間窗口的開始可以被允許滑動至在次框架的開始之前的時間,假如新的窗口開始時間不引起對在與該時間窗口相關聯(lián)的調(diào)度器實例內(nèi)具有最小周期的任務的周期擾亂。當滑動將導致周期性的任務在與該任務相關聯(lián)的周期的開始之前執(zhí)行時發(fā)生周期擾亂。在第二種方法中,可以防止時間窗口的開始滑動至在與預先配置的時間窗口相關聯(lián)的次框架的開始之前的時間。
圖4是圖解由于與在時間窗口內(nèi)執(zhí)行的任務相關聯(lián)的周期性而出現(xiàn)的限制的時間線400的圖。時間線400包括固定時間窗口和可滑動時間窗口兩者。為了圖解該限制,三個不同的時間窗口410、420和430被調(diào)度成沿著時間線400執(zhí)行。第一時間窗口410具有預先配置的開始411和得出的結束412。第一時間窗口410的開始411能夠滑動至較早的時間點,只要它處于最早的周期開始時間401或在其之后。基于時間窗口410預先配置的持續(xù)時間、開始411、以及由執(zhí)行任務消耗的時間窗口中的時間量,得出的結束412也能夠移動至時間上較早的時刻。第二時間窗口420具有預先配置的開始421和得出的結束422,其中在與第二時間窗口420相關聯(lián)的調(diào)度器實例內(nèi)執(zhí)行的任務具有最早開始時間402。由于預先配置的開始421已經(jīng)被與最早開始時間402對齊,因此開始421不可滑動至時間上較早的時刻并且第二時間窗口420的得出的結束422僅當在與第二時間窗口420相關聯(lián)的調(diào)度器實例內(nèi)執(zhí)行的任務在所分配的處理預算被消耗之前結束執(zhí)行時可滑動至較早的時間。第三時間窗口430具有預先配置的開始431和得出的結束433。如圖所示,第三時間窗口430包括被表示為第一部分434的一個或多個任務。而且,第三時間窗口430包括被表示為第二部分435的一個或多個任務,第二部分435中的任務被周期性需求所限制使得在第三時間窗口430中的該周期受限的任務不能夠在最早開始時間403之前執(zhí)行。因此,系統(tǒng)集成器可以滑動時間窗口430沿著時間線向上至較早的點直到第二部分開始時間432等于最早開始時間403。
由于時間窗口是可滑動的,因此調(diào)度器可以使用除了上文討論的抽樣方法和增加方法之外的方法來處理中斷服務例程。為了處理中斷,調(diào)度器在中斷服務例程(ISR)時間窗口內(nèi)調(diào)度任務。在調(diào)度中,ISR時間窗口的開始時間和持續(xù)時間指示在時間線上的何處保留或補充用于ISR處理例程的預算。在某些實現(xiàn)中,在系統(tǒng)啟動時,為ISR調(diào)度實例提供執(zhí)行預算以周期性地處理出現(xiàn)的中斷。如下文所述,當ISR任務執(zhí)行時ISR時間窗口并不必然地指示時間窗口的開始時間和持續(xù)時間。ISR時間窗口是用于為服務于中斷保留預算的概念性或邏輯性時間。ISR的執(zhí)行可以被指定用于執(zhí)行的速率/周期和預算。因此,用于ISR時間窗口的開始時間和持續(xù)時間可以確保以特定速率明確地調(diào)度預算使得多個內(nèi)核不被過度調(diào)度,其中“過度調(diào)度”的意思是所分配的時間預算超出可用的計算時間。另外,可以在調(diào)度隨后的滑動時間窗口和固定時間窗口之前在時間窗口內(nèi)保留ISR預算。另外,在一個實現(xiàn)中,可以在與其它時間窗口相關聯(lián)的調(diào)度器實例被調(diào)度成執(zhí)行之后保留ISR時間窗口用于服務于ISR。
當被實現(xiàn)時,與ISR相關聯(lián)的實際中斷可能發(fā)生在沿著調(diào)度時間線的任何點處使得該中斷可能發(fā)生在ISR調(diào)度實例之前、在該調(diào)度實例期間、或在該調(diào)度實例之后。如果該中斷發(fā)生在并非ISR時間窗口的活躍地執(zhí)行的滑動時間窗口內(nèi),那么調(diào)度器可以在當前滑動時間窗口內(nèi)搶占任務的執(zhí)行(即,停止所有的調(diào)度器實例和在當前滑動時間窗口中運行的相關聯(lián)的任務或者僅停止在特定內(nèi)核上執(zhí)行的任務)。在當前滑動時間窗口內(nèi)搶占任務的執(zhí)行之后,系統(tǒng)可以執(zhí)行該ISR時間窗口調(diào)度器實例和具有預算的相關聯(lián)的ISR任務。如果該系統(tǒng)是多核系統(tǒng),那么該系統(tǒng)在多個內(nèi)核的一個或多個上執(zhí)行ISR時間窗口調(diào)度器實例和具有預算的相關聯(lián)的ISR任務。在至少一種實現(xiàn)中,在出現(xiàn)ISR要處理的中斷之前為ISR的執(zhí)行分配預算。然后允許ISR任務執(zhí)行直到ISR任務完成執(zhí)行或預算被耗盡。如果ISR任務的執(zhí)行搶占了活躍地執(zhí)行的滑動窗口,那么與被搶占的滑動窗口相關聯(lián)的任務將在ISR任務完成執(zhí)行或預算被耗盡之后重新開始執(zhí)行。如果在間隙內(nèi)發(fā)生ISR任務的執(zhí)行,那么ISR任務執(zhí)行直到ISR任務完成或直到預算被耗盡,然后繼續(xù)進行調(diào)度時間線上的下一滑動窗口。
圖5A、5B、以及6A-6C圖解在可滑動時間窗口的上下文中在時間線上的ISR時間窗口的調(diào)度。特別地,圖5A和5B圖解在時間線500a和500b上針對ISR線程的開始和結束時間的預先分配。圖5A圖解被調(diào)度以由單核處理器執(zhí)行的時間線500a上的預算的保留,并且圖5B圖解被調(diào)度以由多核處理器執(zhí)行的時間線500b上的預算的保留。如圖5A所示,時間線500a圖解用于處理可能發(fā)生的中斷的四個不同ISR時間窗口的調(diào)度。如圖所示,周期性地調(diào)度ISR時間窗口中的三個511、512、和513,其中三個ISR時間窗口被分別地與不同的最早開始時間501、502、和503相關聯(lián)。三個ISR時間窗口511、512、和513被分配預算以在各自的最早開始時間501、502、和503之后被服務。時間窗口520和522是其中非中斷任務執(zhí)行的標準時間窗口。第一ISR時間窗口511被調(diào)度成處理在第一最早開始時間501和第二最早開始時間502之間發(fā)生的中斷。在第一最早開始時間501之后和在第二最早開始時間502之前出現(xiàn)的中斷可以被執(zhí)行以消耗所分配的預算至第一ISR時間窗口511。第二ISR時間窗口512在時間窗口520之后被調(diào)度,其中兩者都被限制為在第二最早開始時間502后執(zhí)行并被限制為在第三最早開始時間503之前結束執(zhí)行。另外,第三ISR時間窗口513是針對在時間窗口522中調(diào)度任務之前服務于ISR分配的時間。如圖所示,如果ISR在分配的時間被耗盡之前完成執(zhí)行,那么時間窗口522可以滑動至較早的時間點,直到最早開始時間503。在另外的實現(xiàn)中,第四ISR時間窗口514可以在ISR時間窗口511后立即被調(diào)度。第四ISR時間窗口514可以被用于服務于除了由三個ISR時間窗口511、512、和513服務的中斷之外的中斷。
如圖5B中所圖解的,其中時間線500b示出了最早開始時間551、552、和553,ISR時間窗口561、562、和563以及時間窗口570和572跨越不同的內(nèi)核并且分別與ISR時間窗口511、512和513、以及時間窗口520和522類似地被調(diào)度。另外,如圖5B所示,可以在時間窗口內(nèi)在不同的內(nèi)核上分別地服務于多于一個ISR。例如,在ISR時間窗口561、562、和563的每一個內(nèi),在內(nèi)核1上服務于ISR1A并在內(nèi)核2上服務于ISR1B。當在時間窗口內(nèi)在不同的內(nèi)核上服務于不同的ISR時,調(diào)度器可以被限制為服務于并行的ISR或者可以被并行地執(zhí)行以服務于同一潛在中斷的ISR。例如,在一個實現(xiàn)中,如同ISR時間窗口514,ISR時間窗口564被分配成服務于不同的中斷。當服務于中斷時,ISR時間窗口564可以被限制為在單個內(nèi)核上服務于中斷而不被要求在其它內(nèi)核上服務于中斷。
另外,在為ISR窗口提供預算的窗口和被限制為不早開始的下一窗口之間的間隔中的同一中斷的多次發(fā)生可以采用多達在該間隔內(nèi)針對ISR指定的預算的執(zhí)行時間被服務。如果在該間隔內(nèi)沒有更多的剩余預算,那么另外的ISR可以不被服務直到新的預算被分配用于服務于ISR。如果在當前周期內(nèi)沒有更多的剩余預算,那么ISR可以不被服務直到新的預算被分配用于服務于ISR。
圖6A-6C圖解用于在時間窗口內(nèi)搶占執(zhí)行任務的各種實施例。圖6A圖解在服務于ISR之前的時間窗口602。如圖所示,存在在四個不同的內(nèi)核上執(zhí)行的9個不同的任務τ1-τ9。特別地,τ1和τ2在第一內(nèi)核上執(zhí)行,τ3-τ6在第二內(nèi)核上執(zhí)行,τ7和τ8在第三內(nèi)核上執(zhí)行,并且τ9在第四內(nèi)核上執(zhí)行。在沒有中斷的情況下,任務在時間窗口602內(nèi)正常執(zhí)行。
圖6B和6C圖解用于在時間窗口602的執(zhí)行期間搶占任務的執(zhí)行的不同實現(xiàn)。例如,圖6B圖解其中ISR在內(nèi)核中的每一個上搶占任務的執(zhí)行的實現(xiàn)。特別地,時間窗口602被有效地劃分成兩個分離的時間窗口,先于由ISR時間窗口608服務于ISR的第一時間窗口604以及跟在由ISR時間窗口608服務于ISR之后的第二時間窗口606。如圖所示,當服務于ISR時,特定ISR可以僅在單個內(nèi)核上執(zhí)行而其它內(nèi)核變?yōu)椴换钴S的。如果存在多于一個ISR,那么不同的ISR可以在對應數(shù)量的不同內(nèi)核上執(zhí)行或在單個內(nèi)核上執(zhí)行。
與圖6B相比,圖6C圖解其中ISR搶占在多個內(nèi)核上執(zhí)行的任務的一部分的實現(xiàn)。如圖所示,可以建立搶占任務τ8和τ9在第三和第四內(nèi)核上的執(zhí)行的ISR時間窗口612。然而,在第一和第二內(nèi)核上執(zhí)行的任務不被搶占。在該示例中,為了提供足夠的執(zhí)行時間至被搶占的任務使得它們可以完成它們的執(zhí)行,時間窗口602被擴展為負責被分配給ISR時間窗口612的時間。因此,在第一和第二內(nèi)核上執(zhí)行的任務將具有它們可以在其中執(zhí)行的擴展的時間。如果在第一和第二內(nèi)核上執(zhí)行的任務是空閑時間請求器(在下面更詳細地描述),那么該任務由于來自ISR時間窗口612的額外時間而將能夠消耗被擴展的時間,并且在第三和第四內(nèi)核上執(zhí)行的任務將能夠完成執(zhí)行。
如上文所描述的,當ISR時間窗口被預先配置成周期性地處理發(fā)生的中斷時,無論與ISR時間窗口相關聯(lián)的中斷何時發(fā)生并通過搶占對應的活躍滑動窗口被服務,滑動窗口都將能夠在期望的時間內(nèi)完成執(zhí)行。
在某些實施例中,滑動時間窗口可以提供要采用定義了最早開始時間的額外的參數(shù)進行配置的選項,其中該最早開始時間在所定義的預先配置的開始時間之前發(fā)生并且滑動窗口可以滑動至在最早開始時間和預先配置的開始時間之間但并不早于最早開始的較早的時間點。由于最早開始時間是針對滑動時間窗口的最早開始時間,因此在運行時與時間窗口相關聯(lián)的任務將在最早開始時間和預先配置的開始時間之間的時間開始執(zhí)行。在至少一個示例性實現(xiàn)中,最早開始時間的定義可以防止在諸如輸入/輸出的計算機資源準備好執(zhí)行任務之前執(zhí)行任務。而且,最早開始時間的定義可以防止時間窗口滑動至破壞周期性的較早的時間。
圖7圖解針對若干時間窗口701-704的時間線700,其中時間窗口702-704具有被分別定義的最早開始時間710-712。第一時間窗口701是ISR時間窗口并且最早開始時間對應于預先配置的開始。第二時間窗口702具有對應于ISR時間窗口的最早開始時間的最早開始時間710。在沒有中斷要服務的情況下,第二時間窗口702可以滑動至至少最早開始時間710以開始執(zhí)行任何相關聯(lián)的任務。第三時間窗口703具有最早開始時間711并且第四時間窗口具有最早開始時間712。在至少一個實現(xiàn)中,最早開始時間和針對任務中的每一個的開始時間的差等于或大于被分配給ISR時間窗口的預算以允許在中斷發(fā)生的情況下用于服務于中斷的足夠時間。
空閑時間調(diào)度傳統(tǒng)上是指在時間劃分的系統(tǒng)中利用未被調(diào)度或未被使用的CPU時間的手段。主要存在由固定時間窗口可用的兩個空閑時間源。這些空閑時間源在本文中一般被描述為“時間線空閑時間”和“回收空閑時間”。時間線空閑時間一般是指未被分配的處理器時間。被分配給任務的預算是為每個任務保留的最大執(zhí)行時間。當在時間線上為所有任務合計總預算的CPU時間時,針對主框架的預算的總和一般小于主框架中總可用時間的100%。未被保留的時間線上的時間被加在一起并表示可用的時間線空閑時間。時間線空閑時間是可確定的并且在執(zhí)行前在配置時間處被計算。另外,時間線空閑時間是確定性的并且未被分配的CPU時間可在每個主框架的開始處被明確地存放至空閑時間賬戶,其中空閑時間賬戶是由各種可用的空閑時間源產(chǎn)生的空閑時間的總和。
與表示未被做預算的時間的時間線空閑時間相比,回收空閑時間表示在任務的執(zhí)行期間未被使用的被做預算的CPU時間。例如,由于任務執(zhí)行和完成得早而沒有消耗針對相對于它們最壞情況的預算的周期分配的預算,因此將剩余未被使用的被做預算的時間隱含地存放至該空閑時間賬戶。然而時間線空閑時間在運行時之前是可確定的,而回收空閑時間在運行時被確定。
在某些實施例中,為了消耗由時間線空閑時間和回收空閑時間存放到空閑時間賬戶中的空閑時間,任務的子集被預先配置成用作空閑時間請求器??臻e時間請求器是被允許消耗空閑時間(從空閑時間賬戶作出明確提取)的任務。在某些實現(xiàn)中,所有調(diào)度的任務可以能夠?qū)r間存放在空閑時間賬戶中,但是被指定為空閑時間請求器的任務的子集能夠從空閑時間賬戶中提取時間。在至少一個示例中,防止空閑時間請求器從空閑時間賬戶提取空閑時間直到消耗了所分配的預算并且對于該周期來說任務還沒有完成執(zhí)行。如果空閑時間請求器已經(jīng)消耗了它的被分配的預算而仍未完成執(zhí)行,那么該空閑時間請求器任務變得有資格被從空閑時間賬戶授予額外的執(zhí)行時間。當空閑時間請求器任務變得有資格時,該空閑時間請求器可以從空閑時間賬戶提取所有可用的空閑時間或其一部分。在至少一個實現(xiàn)中,其中存在多個有資格的空閑時間請求器任務,有資格的空閑時間請求任務被允許基于優(yōu)先級從空閑時間賬戶提取空閑時間。而且,當調(diào)度器是速率單調(diào)調(diào)度器時,以更高速率執(zhí)行的空閑時間請求器任務比以更低速率執(zhí)行的任務被給予更高的優(yōu)先級。如果空閑時間請求器任務耗盡空閑時間賬戶中的可用空閑時間并且后續(xù)的任務產(chǎn)生并存放空閑時間至空閑時間賬戶中,那么該空閑時間請求器任務可以被再次調(diào)度并被給予對最近產(chǎn)生的空閑時間的訪問。由于速率單調(diào)調(diào)度器調(diào)度準備好運行的最高優(yōu)先級的線程,因此空閑時間將被最高優(yōu)先級的空閑時間請求器消耗。
在另外的實施例中,其中調(diào)度器實現(xiàn)滑動時間窗口,引入了額外的空閑時間資源。除了傳統(tǒng)的空閑時間概念之外,該滑動窗口概念實現(xiàn)兩個新的空閑時間概念。它們是窗口時間線空閑時間和窗口回收空閑時間,并且在本文中被統(tǒng)稱為“時間窗口空閑時間”。時間窗口空閑時間可被應用至主持時間劃分任務或非時間劃分任務的調(diào)度器。圖8是展示時間窗口空閑時間的存放和提取的時間線800的圖解。時間窗口空閑時間包括兩個級別的空閑時間。第一級別的空閑時間包括跨越多個內(nèi)核的空閑時間,而在調(diào)度器實例內(nèi)貢獻對應于傳統(tǒng)時間線空閑時間和回收空閑時間的第二級別的空閑時間。為了清晰起見,這些第二級別的空閑時間組分在本文中被稱為“調(diào)度器實例時間線空閑時間”,并且“回收空閑時間”在本文中被稱為“調(diào)度器實例回收空閑時間”。對于第一級別,時間窗口空閑時間被應用至所有內(nèi)核。在第一級別中同樣的空閑時間被存放在跨不同內(nèi)核的時間窗口空閑時間賬戶中,因此,同樣的空閑時間變得可用于跨多個內(nèi)核運行的調(diào)度器實例中的所有。同樣在第一級別,來自跨多個內(nèi)核的多個調(diào)度器實例的同樣的空閑時間存放是第一級別的貢獻。在某些實現(xiàn)中,由時間窗口產(chǎn)生的空閑時間(可用于接下來的窗口)然后成為該時間窗口的預算的持續(xù)時間和在該時間窗口內(nèi)由多個內(nèi)核上的調(diào)度器實例中的任何使用的最大CPU時間之間的差。對于第二級別,調(diào)度器實例空閑時間被存放在調(diào)度器實例中用于與該調(diào)度器實例相關聯(lián)的任務的進一步執(zhí)行。
在某些實施例中,可用的時間窗口空閑時間在不能滑動的窗口完成時被初始化并被增加與每個窗口比它指定的持續(xù)時間更早完成的時間量相等的量。空閑時間可由具有晚于當前的時間加上累積的空閑時間的截止期限(例如,周期結束時間)的所有任務使用。
在某些實現(xiàn)中,具有最快速率的空閑時間消耗者的周期可以等于次框架。當最快速率的周期等于次框架時,可用的時間窗口空閑時間可以在每個次框架的開始處被初始化。下文中,關于空閑時間,最快速率的周期被稱為次框架。通過滑動時間窗口的上下文執(zhí)行到時間窗口空閑時間賬戶的存放和從時間窗口空閑時間賬戶的提取。隨著任務在次框架內(nèi)被執(zhí)行,時間窗口空閑時間在空閑時間賬戶內(nèi)累積。因此,在次框架中較早的時間窗口存放空閑時間在空閑時間賬戶內(nèi)以供在次框架中隨后調(diào)度的時間窗口利用。ISR時間窗口可以在兩種情況下存放空閑時間。第一,當它們指示它們將不再服務于中斷時,例如,當它們確定它們正服務的硬件是有缺陷的、或者滿足某些其它情況時。第二,ISR窗口在不能早滑動的窗口之前的最后窗口的結束處貢獻空閑時間,因為在此情況下ISR的預算會在該時間處終止。如同正常的窗口,ISR窗口可以消耗空閑時間。如果ISR將要服務于中斷,那么它將不存放空閑時間,因為ISR時間窗口可以在如上文所述的次框架內(nèi)的任何時間處執(zhí)行。
圖8圖解滑動時間窗口擁有的用以存放至時間線800上的時間窗口空閑時間賬戶并從其中提取的能力。如圖所示,時間線800被劃分成三個次框架801、802和803。時間窗口空閑時間賬戶840和841被示出用于第一次框架801和第二次框架802。第一次框架801被與時間窗口空閑時間賬戶840相關聯(lián)。第二次框架802被與時間窗口空閑時間賬戶841相關聯(lián)。每個空閑時間賬戶在相關聯(lián)的次框架的開始處被初始化使得每個空閑時間賬戶在相關聯(lián)的次框架的開始處具有零空閑時間。
在某些實現(xiàn)中,其中用于服務于ISR的周期等價于用于次框架的周期,ISR時間窗口在每個次框架的開始處被調(diào)度,并且在此實施例中,ISR時間窗口將繼續(xù)自始至終地服務于中斷,ISR時間窗口并不存放空閑時間或從空閑時間賬戶提取空閑時間。如圖所示,每個次框架801-803具有各自的所調(diào)度的ISR時間窗口820-822。每個ISR時間窗口820-822已經(jīng)劃掉雙向箭頭以指示空閑時間既沒有被ISR時間窗口提取也沒有被ISR時間窗口存放到時間窗口空閑時間賬戶中。然而,除了ISR時間窗口外的時間窗口能夠存放空閑時間到空閑時間賬戶中。例如,時間窗口810-814能夠存放空閑時間到空閑時間賬戶840和841中。而且,間隙窗口830能夠存放空閑時間到空閑時間賬戶840和841中。如上文所述,并非所有時間窗口都能夠從空閑時間賬戶840和841提取空閑時間。例如,在次框架801和802中的第一時間窗口810和812不能夠從空閑時間賬戶840和841提取空閑時間,如指向各空閑時間賬戶840和841的單向箭頭所示。由于空閑時間被添加至空閑時間賬戶840和841的方式,當?shù)谝粫r間窗口810和812被調(diào)度用于執(zhí)行時在空閑時間賬戶840和841中一般沒有空閑時間。而且,間隙窗口830不與任何可執(zhí)行的線程相關聯(lián)并因此不能夠從空閑時間賬戶840和841中提取空閑時間。間隙窗口830可以在第一時間窗口(諸如時間窗口810和812)之前被調(diào)度。當間隙窗口在次框架中的第一時間窗口之前被調(diào)度時,從該間隙窗口至空閑時間賬戶840和841的空閑時間的存放可以變得可用于由第一時間窗口810和812的提取。因此,隨著任務在已經(jīng)完成的相關聯(lián)的時間窗口的持續(xù)時間之前完成執(zhí)行,在與滑動時間窗口相關聯(lián)的任務的執(zhí)行期間空閑時間變得可用并被存放到空閑時間賬戶840和841中。
在滑動時間窗口的情況下,調(diào)度器實例時間線空閑時間和調(diào)度器實例回收空閑時間兩者都可以用作空閑時間源。如上文所述,調(diào)度器實例時間線空閑時間是調(diào)度器實例的時間窗口內(nèi)未被分配的處理單元時間。當時間窗口被配置時,調(diào)度器實例時間線空閑時間可以在執(zhí)行前被確定并被計算。調(diào)度器實例時間線空閑時間要么在時間窗口被配置時要么在運行時間期間可以被添加至調(diào)度器實例空閑時間賬戶。由于調(diào)度器實例時間線空閑時間是確定性的,因此未被分配的處理單元時間在適當?shù)臅r間處可被明確存放至調(diào)度器實例空閑時間賬戶。在至少一個實現(xiàn)中,時間線中的間隙與不具有相關聯(lián)的調(diào)度實例的時間窗口類似并且只要下一時間窗口是可滑動的就將被視為時間窗口空閑時間。在至少一個實現(xiàn)中,時間窗口具有與如果空閑時間可用則能夠執(zhí)行的至少一個空閑時間請求器任務相關聯(lián)的至少一個相關聯(lián)的調(diào)度器實例。由于在時間線中的間隙并不與可執(zhí)行任務相關聯(lián),因此被分配至該間隙的時間可以被確定性地添加至用于兩個內(nèi)核的空閑時間賬戶。替換地,被分配至間隙窗口的時間還可以被用作同時被應用至兩個內(nèi)核的時間窗口空閑時間。
在如上文提到的某些實施例中,調(diào)度器實例回收空閑時間可以用作另一調(diào)度器實例空閑時間源。如上文所討論的,調(diào)度器實例回收空閑時間是當任務完成執(zhí)行時未被使用的被預算的處理單元執(zhí)行時間。例如,由于任務相對于最壞情況預算執(zhí)行和完成得早,因此剩余的未被使用的預算時間被隱含地存放至調(diào)度器實例空閑時間賬戶。與調(diào)度器實例時間線空閑時間相比,回收空閑時間的確定是受限制的,因為在運行時間之前不能確定調(diào)度器實例回收空閑時間的數(shù)量。而且,調(diào)度器實例回收空閑時間不是確定性的,因為當任務相對于被分配的預算完成得早時添加空閑時間。如上文第[0058]段所述,來自中斷服務例程或ISR時間窗口的調(diào)度器實例回收空閑時間可以或可以不被添加至空閑時間賬戶。由于當中斷發(fā)生時ISR窗口搶占現(xiàn)存的滑動時間窗口,因此存在中斷的多次發(fā)生可能發(fā)生在當ISR獲得預算時和被防止滑動的下一窗口之間的間隔中的任何位置的可能性,并且因此完整的ISR預算可以被用于服務于可能在該間隔內(nèi)的任何時間處發(fā)生的多個中斷。因此,只要中斷需要在間隔中被服務就可以防止未被使用的ISR預算被用作空閑時間。圖9A-9D表示圖解在具有滑動時間窗口920-925的系統(tǒng)中各種級別的空閑時間的實現(xiàn)的時間線900的一系列圖。圖9A圖解預先配置的時間線900。如圖所示,時間線900圖解包括第一次框架901和第二次框架902的時間線900的一部分。在接下來的圖9B-9D中,僅僅示出了第一次框架901。而且,如上文所討論的,由于任務的周期性,時間窗口空閑時間在第一和第二次框架901和902中的每一個的開始處重新開始。如圖9所示,存在多個間隙窗口910和911。還存在窗口912。間隙窗口和窗口912之間的差別在于間隙窗口不與調(diào)度器實例相關聯(lián)而窗口912將一個或多個調(diào)度器實例與當存在可用的時間窗口空閑時間時能夠執(zhí)行的空閑時間請求器任務相關聯(lián)。與間隙窗口910和911相關聯(lián)的時間被與被添加至用于內(nèi)核1和內(nèi)核2兩者的時間窗口空閑時間賬戶的時間線空閑時間相關聯(lián)。另外,存在時間線空閑時間的調(diào)度器實例源。例如,在其中沒有任務在內(nèi)核1上執(zhí)行并且任務在內(nèi)核2上執(zhí)行的調(diào)度器實例內(nèi)存在間隙930和931。同樣的,在內(nèi)核2上,在其中沒有任務在內(nèi)核2上執(zhí)行并且任務在內(nèi)核1上執(zhí)行的調(diào)度器實例內(nèi)存在調(diào)度器實例間隙932。圖9B-9D圖解在運行時發(fā)生的時間線900中的改變。間隙窗口910、911和913是在運行時間之前可以被確定性地確定的時間窗口空閑時間源。同樣地,調(diào)度器實例間隙930、931和932是也可以在運行時間之前被確定性地確定的調(diào)度器實例時間線空閑時間源。
與圖9A相比,圖9B圖解當任務在沒有耗盡所分配的執(zhí)行時間中的所有的情況下完成執(zhí)行時出現(xiàn)的調(diào)度器實例回收空閑時間的非確定性源。如圖所示,完成執(zhí)行早的任務由所消耗的時間940、941、942、943和944圖解。特別地,任務τ1完成執(zhí)行得早,因為它使用所消耗的時間940。類似地,任務τ2使用所消耗的時間941,τ8使用所消耗的時間942,τ4使用所消耗的時間943,并且τ5使用所消耗的時間944。由于任務τ1、τ2、τ8、τ4、和τ5所有都在不消耗所分配的預算中的所有的情況下完成執(zhí)行,因此未被消耗的預算的時間變得可用作為調(diào)度器實例回收空閑時間950、951、952、953、和954。
圖9C圖解任務的合并以在調(diào)度器實例內(nèi)消耗調(diào)度器實例回收空閑時間。當在調(diào)度器實例內(nèi)合并任務時,調(diào)度器實例回收空閑時間中的某些可以變?yōu)闀r間窗口空閑時間。例如,在內(nèi)核1上在時間窗口921中,在τ1和τ2執(zhí)行后,在調(diào)度器實例內(nèi)仍剩余一部分時間。類似地,在τ4執(zhí)行后,在調(diào)度器實例內(nèi)也剩余一部分時間??缢袃?nèi)核的重疊的時間剩余的量可以變?yōu)檫\行時時間窗口空閑時間960。同樣地,在時間窗口922中,存在由起因于調(diào)度器實例回收空閑時間的運行時時間窗口空閑時間961表示的一部分共同的未被消耗的預算。運行時時間窗口空閑時間960和961然后可以被添加至由間隙窗口910提供的時間窗口空閑時間。
圖9D圖解對時間線900作出的調(diào)整以取得所有可用的時間窗口空閑時間。如圖所示,時間窗口922能夠滑動至較早的時間點,其中時間窗口922滑動等于運行時時間窗口空閑時間960與間隙窗口910的加和的量。因此,與時間窗口922相關聯(lián)的任務能夠執(zhí)行得較早并且完成執(zhí)行較早,使得在與時間窗口922相關聯(lián)的任務完成執(zhí)行后,現(xiàn)在在次框架901中留有等于運行時時間窗口空閑時間960和961與間隙窗口910的加和的空閑時間。為了消耗剩余的空閑時間,時間窗口912還可以滑動至可達時間窗口922的結束的較早的時間點,其中時間窗口912的持續(xù)時間被變?yōu)榈扔谠诖慰蚣?01的結束處的可用空閑時間。在經(jīng)調(diào)整的時間窗口912內(nèi),相關聯(lián)的空閑時間請求器τ3和τ9被允許執(zhí)行,消耗次框架901中的剩余空閑時間。在替換實現(xiàn)中,時間窗口922中的空閑時間請求器可以消耗剩余的空閑時間。而且,對于在時間窗口空閑時間的合并后剩余的任何調(diào)度器實例空閑時間,諸如τ3的空閑時間請求器任務也可以消耗它們各自的調(diào)度器實例內(nèi)的空閑時間。
當使用空閑時間時,在具有利用調(diào)度器實例中的空閑時間的任務的滑動時間窗口之前,調(diào)度器可以分配預算至時間線中適當大小的間隙。該間隙基本用作被存放到時間窗口空閑時間賬戶中的時間線空閑時間。另外,最初在配置時,具有利用空閑時間的調(diào)度器實例的滑動窗口可以僅先于可能不滑動的窗口被創(chuàng)建,即,該空閑時間將終止時?;瑒哟翱趯⒗猛ㄟ^其它調(diào)度的時間窗口的執(zhí)行已累積的可用的時間窗口空閑時間。通過在次框架的結束時首先調(diào)度滑動時間窗口,當非滑動窗口開始時開發(fā)的空閑時間可以被利用而不是丟失。
圖10圖解在時間線1000上針對單個次框架的時間窗口持續(xù)時間的分派。如圖所示并如上文所述,可以針對通過ISR時間窗口1030的中斷服務例程的執(zhí)行分配最初的時間預算。另外,針對用于滑動時間窗口1010、1011和1012的任務的執(zhí)行分配預算。而且,間隙窗口1020和1021連同窗口1050在時間線1000上被調(diào)度。由于間隙窗口沒有相關聯(lián)的調(diào)度器實例,因此被分配給間隙窗口的時間被存放到時間窗口空閑時間賬戶中。當來自間隙窗口的時間被存放到時間窗口空閑時間賬戶時,它變得可用于由空閑時間請求器在次框架中的間隙窗口之后的時間窗口中使用。例如,被表示為可用的空閑時間1040的從間隙窗口1020存放到空閑時間賬戶中的時間可用于由空閑時間請求器在時間窗口1010、1011、和1012中使用。此外,從間隙窗口1021存放到空閑時間賬戶的時間連同可用的空閑時間1040和由于與時間窗口1010相關聯(lián)的任務的提前完成變?yōu)榭捎玫娜魏慰臻e時間(其和被表示為可用的空閑時間1041),可用于由空閑時間請求器在時間窗口1011和1012中使用而不可用于時間窗口1010,因為間隙窗口1021在時間窗口1010之后。另外,在與時間窗口1012相關聯(lián)的任務完成執(zhí)行后在時間窗口空閑時間賬戶中留有的任何時間可以由與窗口1050相關聯(lián)的空閑時間請求器使用。通過使用滑動時間窗口連同時間窗口空閑時間賬戶,處理實體能夠更有效地處理任務。
圖11是用于在至少一個處理單元上調(diào)度任務的執(zhí)行的方法1100的流程圖。方法1100行進至1102,其中多個任務被識別以在至少一個處理單元上執(zhí)行。方法1100然后行進至1104,其中該多個任務被與多個調(diào)度器實例相關聯(lián)。方法1100然后行進至1106,其中多個調(diào)度器實例被與多個時間窗口相關聯(lián),其中該多個調(diào)度器實例中的每個調(diào)度器實例被與多個時間窗口中的一組時間窗口相關聯(lián)并在每個時間窗口中被與至少一個處理單元中的一組處理單元相關聯(lián)。另外,具有開始時間和所分配的持續(xù)時間的多個時間窗口中的每個時間窗口以及與所述時間窗口相關聯(lián)的調(diào)度器實例不早于所述開始時間開始執(zhí)行相關聯(lián)的任務并且執(zhí)行不長于所分配的持續(xù)時間。在某些實現(xiàn)中,方法1100行進至1108處,其中時間窗口的開始時間滑動至時間上較早的時刻。
示例實施例
示例1包括一種用于調(diào)度任務的執(zhí)行的系統(tǒng),所述系統(tǒng)包括:被配置成執(zhí)行多個任務的至少一個處理單元,其中所述多個任務中的每個任務被調(diào)度成在多個調(diào)度器實例中的一個調(diào)度器實例內(nèi)執(zhí)行,所述多個調(diào)度器實例中的每個調(diào)度器實例被與多個時間窗口中的一組時間窗口相關聯(lián)并在每個時間窗口中被與所述至少一個處理單元中的一組處理單元相關聯(lián),所述多個時間窗口中的一個或多個時間窗口具有開始時間和所分配的持續(xù)時間并且與所述一個或多個時間窗口相關聯(lián)的調(diào)度器實例不早于所述開始時間開始執(zhí)行相關聯(lián)的任務并且執(zhí)行不長于所分配的持續(xù)時間,并且其中所述開始時間可滑動至時間上較早的時刻。
示例2包括示例1的系統(tǒng),其中當與調(diào)度器實例相關聯(lián)的所述多個任務中的一組任務在沒有消耗與所分配的持續(xù)時間相關聯(lián)的所有時間的情況下完成執(zhí)行時,用于在所述多個時間窗口中的時間窗口的執(zhí)行的持續(xù)時間短于所分配的持續(xù)時間。
示例3包括示例1-2中的任何的系統(tǒng),其中調(diào)度至少一個中斷服務例程時間窗口,其中所述中斷服務例程時間窗口的持續(xù)時間表示用于服務于中斷的可用時間。
示例4包括示例3的系統(tǒng),其中,在所述中斷服務例程時間窗口之后立即被調(diào)度的所述多個時間窗口中的下一時間窗口具有向著所述中斷服務例程時間窗口的開始時間滑動等于剩余時間的時間間隔的開始時間,其中所述剩余時間表示未被所述中斷服務例程窗口用于服務于中斷服務例程的時間。
示例5包括示例4的系統(tǒng),其中所述剩余時間被用于服務于在下一時間窗口開始執(zhí)行之后接收的至少一個中斷,其中搶占當前正執(zhí)行的時間窗口小于或等于所述剩余時間的時間段以用于服務于所述至少一個中斷。
示例6包括示例5的系統(tǒng),其中僅搶占所述至少一個處理單元中的處理單元的子集用于服務于所述至少一個中斷。
示例7包括示例1-6中的任何的系統(tǒng),其中累積時間窗口空閑時間,其中所述時間窗口空閑時間被用于與所述多個時間窗口中的至少一個時間窗口相關聯(lián)的至少一個空閑時間請求器的執(zhí)行。
示例8包括示例7的系統(tǒng),其中針對調(diào)度器實例監(jiān)控調(diào)度器實例時間線空閑時間和調(diào)度器實例回收空閑時間,其中跨所述至少一個處理單元共有的調(diào)度器實例回收空閑時間和調(diào)度器實例時間線空閑時間貢獻所述時間窗口空閑時間。
示例9包括示例8的系統(tǒng),其中當與調(diào)度器實例相關聯(lián)的任務先于所述調(diào)度器實例的所分配的持續(xù)時間完成執(zhí)行時出現(xiàn)所述調(diào)度器實例回收空閑時間。
示例10包括示例7-9中的任何的系統(tǒng),其中當所述多個時間窗口中的固定時間窗口開始執(zhí)行時刷新所述時間窗口空閑時間賬戶,其中所述固定時間窗口具有不能滑動至時間上較早的時刻的固定的開始時間。
示例11包括示例1-10中的任何的系統(tǒng),還包括在所述多個時間窗口中的第一時間窗口的結束之后調(diào)度所述多個時間窗口中的第二時間窗口,其中所述第二時間窗口被與具有至少一個空閑時間請求器的至少一個調(diào)度器實例相關聯(lián)。
示例12包括一種用于由至少一個處理單元調(diào)度任務的執(zhí)行的方法,所述方法包括:識別多個任務以在所述至少一個處理單元上執(zhí)行;關聯(lián)要由多個調(diào)度器實例調(diào)度的多個任務;將所述多個調(diào)度器實例與多個時間窗口相關聯(lián),其中所述多個調(diào)度器實例中的每個調(diào)度器實例被與所述多個時間窗口中的一組時間窗口相關聯(lián)并在每個時間窗口中被與所述至少一個處理單元中的一組處理單元相關聯(lián),所述多個時間窗口中的一個或多個時間窗口具有開始時間和所分配的持續(xù)時間并且與所述一個或多個時間窗口相關聯(lián)的調(diào)度器實例不早于所述開始時間開始執(zhí)行相關聯(lián)的任務并且執(zhí)行不長于所分配的持續(xù)時間,并且滑動時間窗口的開始時間至時間上較早的時刻。
示例13包括示例12的方法,其中當與調(diào)度器實例相關聯(lián)的所述多個任務中的一組任務在沒有消耗與所分配的持續(xù)時間相關聯(lián)的所有時間的情況下完成執(zhí)行時,用于在所述多個時間窗口中的時間窗口的執(zhí)行的持續(xù)時間短于所分配的持續(xù)時間。
示例14包括示例13的方法,還包括調(diào)度中斷服務例程時間窗口,其中所述中斷服務例程時間窗口的持續(xù)時間表示用于周期性地服務于中斷的可用時間。
示例15包括示例14的方法,還包括將在所述中斷服務例程時間窗口之后立即被調(diào)度的所述多個時間窗口中的下一時間窗口的開始時間向著所述中斷服務例程時間窗口的開始時間滑動等于剩余時間的時間間隔,其中所述剩余時間表示未被所述中斷服務例程窗口用于服務于中斷服務例程的時間,其中所述剩余時間被用于服務于在下一時間窗口開始執(zhí)行之后接收的至少一個中斷,其中搶占當前正執(zhí)行的時間窗口小于或等于所述剩余時間的時間段以用于服務于所述至少一個中斷。
示例16包括示例13-15中的任何的方法,還包括累積時間窗口空閑時間,其中所述時間窗口空閑時間被用于在次框架中被調(diào)度用于執(zhí)行的至少一個時間窗口中的至少一個空閑時間請求器線程的執(zhí)行。
示例17包括示例16的方法,還包括當所述多個時間窗口中的固定時間窗口開始執(zhí)行時初始化時間窗口空閑時間賬戶,其中所述固定時間窗口具有不能滑動至時間上的較早時刻的固定的開始時間。
示例18包括示例16-17中的任何的系統(tǒng),其中針對調(diào)度器實例監(jiān)控調(diào)度器實例時間線空閑時間和調(diào)度器實例回收空閑時間,其中跨所述至少一個處理單元共有的調(diào)度器實例回收空閑時間和調(diào)度器實例時間線空閑時間貢獻所述時間窗口空閑時間。
示例19包括一種用于調(diào)度任務的執(zhí)行的系統(tǒng),所述系統(tǒng)包括:被配置成執(zhí)行多個任務的至少一個處理單元,其中所述多個任務中的每個任務被調(diào)度成在多個調(diào)度器實例中的一個調(diào)度器實例內(nèi)執(zhí)行,所述多個調(diào)度器實例中的每個調(diào)度器實例被與多個時間窗口中的一組時間窗口相關聯(lián)并且在每個時間窗口中被與所述至少一個處理單元中的一組處理單元相關聯(lián),所述多個時間窗口中的一個或多個時間窗口具有開始時間和所分配的持續(xù)時間并且與所述一個或多個時間窗口相關聯(lián)的調(diào)度器實例不早于所述開始時間開始執(zhí)行相關聯(lián)的任務并且執(zhí)行不長于所分配的持續(xù)時間,其中所述開始時間可滑動至時間上較早的時刻;其中累積時間窗口空閑時間,其中所述時間窗口空閑時間被用于與至少一個時間窗口相關聯(lián)的至少一個空閑時間請求器的執(zhí)行;并且其中調(diào)度至少一個中斷服務例程時間窗口,其中所述中斷服務例程時間窗口表示用于服務于中斷的可用時間。
示例20包括示例19的系統(tǒng),其中當與調(diào)度器實例相關聯(lián)的所述多個任務中的一組任務在沒有消耗與所分配的持續(xù)時間相關聯(lián)的所有時間的情況下完成執(zhí)行時,用于在所述多個時間窗口中的時間窗口的執(zhí)行的持續(xù)時間短于所分配的持續(xù)時間。
雖然本文中圖解并描述了具體的實施例,但本領域技術人員將領會的是,目的在于實現(xiàn)同一目的的任何布置可以代替所示的具體實施例。因此,明白地意圖為本發(fā)明僅被權利要求和其等價物所限制。