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