216的中斷和/或中斷服務(wù)例程1與上述討論類似地,點216表示時間上的任意點。中斷服務(wù)例程I完成,并且在完成時,在點218檢測到導致中斷服務(wù)例程2運行的另一個中斷。在一些實施例中,這種中斷和/或中斷處理的快速接續(xù)可以被識別,并進一步導致處理器核O被分類為“忙碌”和/或“中斷繁重”。盡管這個示例在將處理器核分類為“忙碌”和/或“中斷繁重”時使用兩個中斷,但是將被意識到和理解,在不偏離要求保護的主題的范圍的情況下,以任何速率發(fā)生的任何數(shù)量的中斷都可以被用作用于這種分類的閾值。在點220處,任務(wù)I被指派和/或調(diào)度為在處理器核O上運行,并且開始執(zhí)行。在任務(wù)I的執(zhí)行期間,第三中斷在點222處被檢測。此處,任務(wù)I被掛起,并且處理器核O開始處理與該第三中斷相關(guān)聯(lián)的中斷服務(wù)例程。在點224處,中斷服務(wù)例程3完成,并且任務(wù)I繼續(xù)執(zhí)行直到其在點226處完成。因此,任務(wù)I被感知的執(zhí)行時間可以被測量為在點220和點226之間的時間,并且也包括此處被示為在點222到點224之間的時間的用于中斷服務(wù)例程3的處理時間。假設(shè)任務(wù)I不是等待時間敏感的,這個延遲對用戶而言可能是不顯著的和/或無法感知的。但是,如果任務(wù)I是等待時間敏感的任務(wù),則用戶可以潛在地注意到點222和點224之間的延遲(以及后續(xù)當任務(wù)I運行時)。也可以指出,在此時間期間,核I處于空閑狀態(tài)和/或當前沒有忙于處理任何指令。
[0034]圖2d圖示了替換的實施例,其中在調(diào)度任務(wù)I時考慮與(多個)處理器核和任務(wù)相關(guān)聯(lián)的特性。與在圖2c的情況下一樣,處理器核O在點216處開始處理中斷服務(wù)例程1,并且在點218處開始處理中斷服務(wù)例程2,因此如上文進一步所述,將處理器核O分類為處于“中斷繁重”和/或“忙碌”狀態(tài)。在點220處,任務(wù)I的調(diào)度開始。在這個示例中,該調(diào)度過程考慮處理器核O作為“忙碌”的狀態(tài)和/或分類??商鎿Q地或附加地,該調(diào)度過程可以識別影響將任務(wù)I指派給什么處理器核的任務(wù)I的特性。在這個示例中,任務(wù)I已經(jīng)被識別為等待時間敏感的任務(wù),并且處理器核O已經(jīng)被識別為處于“忙碌”和/或“中斷繁重”狀態(tài)。響應于這些識別,該調(diào)度過程將任務(wù)I指派給處理器核I,而不是處理器核O。隨后,當中斷3在點222處來到,并且在點224處完成時,其不影響任務(wù)I的執(zhí)行時間。替代地,任務(wù)I繼續(xù)其執(zhí)行而不被中斷,并在點228處完成,因此消除了在任務(wù)I的執(zhí)行時間中的任何外部延遲,所述任務(wù)I的執(zhí)行時間此處被圖示為在點220到點228之間。
[0035]盡管前面的示例描述了基于處理器核的使用率來將一般的任務(wù)和/或中斷服務(wù)任務(wù)調(diào)度給不同的核,但是任務(wù)的任何合適的組合和/或任何合適類型的任務(wù)都可以被調(diào)度。可替換地或附加地,任務(wù)可以基于任務(wù)度量來被調(diào)度,該度量比如是該任務(wù)是否是等待時間敏感的、該任務(wù)上次運行在哪個處理器核上等。例如,與觸摸屏相關(guān)聯(lián)的輸入和/或任務(wù)可以具有將其識別為等待時間敏感任務(wù)的度量,而屏幕保護程序任務(wù)可以具有將其識別為不是等待時間敏感的度量。相應地,基于這個識別,該輸入和/或任務(wù)可以被(重新)指派給空閑的或者不太忙碌的處理器核,而該屏幕保護程序任務(wù)不會被(重新)指派。在一些實施例中,基于諸如(多個)處理器核的總使用率之類的系統(tǒng)目標和/或度量來調(diào)度任務(wù)。在任何情況下,調(diào)度算法都使用表征計算設(shè)備各種不同方面的信息。
[0036]圖3圖示了根據(jù)一個或多個實施例的示例計算設(shè)備102。更特別地,圖3圖示了如圖1所描述的計算設(shè)備102詳細視圖。如圖1所圖示的,計算設(shè)備102包括(多個)處理器核104、(多個)內(nèi)部設(shè)備116以及(多個)附接的外部設(shè)備118。為了討論的簡潔,已經(jīng)移除相對于圖1所描述的計算設(shè)備102的其他方面。
[0037]計算設(shè)備102包括用戶模式存儲器302和特許模式存儲器304。用戶模式存儲器302表示主要專門供用戶模式應用和/或者能夠有限直接訪問到無法直接訪問與計算設(shè)備102相關(guān)聯(lián)的系統(tǒng)資源的應用使用的存儲器空間。相反地,特許模式存儲器304表示主要專用于系統(tǒng)應用和/或具有受限訪問的敏感信息的存儲器空間。除了別的以外,特許模式存儲器304包括若干不同的數(shù)據(jù)結(jié)構(gòu),作為示例而非限制,其包括(多個)軟件中斷結(jié)構(gòu)306、(多個)線程結(jié)構(gòu)308以及(多個)核數(shù)據(jù)結(jié)構(gòu)310。
[0038](多個)軟件中斷結(jié)構(gòu)306表示與一個或多個軟件中斷相關(guān)聯(lián)的一個或多個結(jié)構(gòu)。這種結(jié)構(gòu)可以包括任何合適類型和數(shù)量的數(shù)據(jù),例如(多個)標志、不同種類的(多個)指針(數(shù)組指針、函數(shù)指針、類指針等)、文本、數(shù)值、布爾值等。在這個示例中,軟件中斷結(jié)構(gòu)306包括“等待時間敏感SW (軟件)中斷線程”標志,其可以被使用來指示相關(guān)聯(lián)的軟件中斷任務(wù)是否是等待時間敏感的。例如,值“I”或“真”可以指示任務(wù)是等待時間敏感的,以及值“O”或“假”可以指示該任務(wù)不是等待時間敏感的。在一些實施例中,在創(chuàng)建相關(guān)聯(lián)的中斷和/或遲延的過程調(diào)用(DPC)結(jié)構(gòu)時,可以創(chuàng)建這種結(jié)構(gòu)。在一些情況下,每個軟件中斷任務(wù)可以擁有被指派給它的相關(guān)聯(lián)的專用軟件中斷結(jié)構(gòu)(例如,在軟件中斷任務(wù)和軟件中斷結(jié)構(gòu)306之間存在一一對應)??商鎿Q地或附加地,單個的軟件中斷結(jié)構(gòu)可以包括多個標識符以及用于每個標識符的對應的等待時間敏感標志,每個所述標識符都與軟件中斷相關(guān)聯(lián)。例如,被創(chuàng)建的結(jié)構(gòu)可以被存儲在被配置來提供中斷信息和/或相關(guān)聯(lián)的計算設(shè)備的特性的更大的結(jié)構(gòu)中。
[0039]與(多個)軟件中斷結(jié)構(gòu)306相似地,(多個)線程結(jié)構(gòu)308表示與一個或多個任務(wù)相關(guān)聯(lián)的一個或多個結(jié)構(gòu)。除了別的以外,線程結(jié)構(gòu)308包括“等待時間敏感線程標志”,與上述描述類似,其可以被使用來將線程識別為是否是等待時間敏感的。如上文同樣描述的,將被意識到和被理解的是,(多個)線程結(jié)構(gòu)308可以包括以各種不同形式的各種不同的數(shù)據(jù)量。在一些實施例中,這種結(jié)構(gòu)可以在相關(guān)聯(lián)的任務(wù)和/或線程被創(chuàng)建時而被創(chuàng)建,并且除非在創(chuàng)建時刻另外指定,這種結(jié)構(gòu)可以被設(shè)置為默認值。特許模式存儲器304可以包括用于每個識別的線程的唯一的線程結(jié)構(gòu)308 (例如,多個線程結(jié)構(gòu)308)和/或擁有包括多個線程標識符和相應的等待時間敏感標志的一個線程結(jié)構(gòu)308。
[0040](多個)核數(shù)據(jù)結(jié)構(gòu)310表示與處理器核相關(guān)聯(lián)的一個或多個結(jié)構(gòu)。如上所述,核數(shù)據(jù)結(jié)構(gòu)310可以被關(guān)聯(lián)于一個處理器核或多個處理器核。在這個示例中,在(多個)處理器核104和(多個)核數(shù)據(jù)結(jié)構(gòu)310之間存在一一對應。因此,處理器核104(0)擁有對應的核數(shù)據(jù)結(jié)構(gòu)310(0),處理器核104(1)擁有對應的核數(shù)據(jù)結(jié)構(gòu)310(1),依此類推。標記被包含在(多個)核數(shù)據(jù)結(jié)構(gòu)310中,此處表示為“SWIntBusy”標志,其可以被用來指示相關(guān)聯(lián)的處理器核是否正忙于處理軟件中斷。
[0041]上文所述的數(shù)據(jù)結(jié)構(gòu)的組合可以被使用來確定如何在多個處理器核中間劃撥(appropriate)任務(wù)。這進而可以導致如用戶所感知的計算設(shè)備更好的性能。例如,如圖3所圖示,考慮(多個)處理器核104。在這個時間上的捕獲處,處理器核O被圖示為正忙于運行軟件中斷,處理器核I被圖示為正在忙于運行線程,并且處理器核2到η-1被圖示為正處于空閑。計算設(shè)備102也包括任務(wù)312,其準備好運行和/或正在競爭訪問處理器核。此處,以一般的意義來使用術(shù)語“任務(wù)”,并且其可以被用來表達如組織的軟件應用和/或線程般復雜的事物(something),或者其可以被用來表達如機器級指令分組般簡單的事物,或者其可以被用來表達在中間的機器級指令的任何集成(collect1n)??商鎿Q地或附加地,可以以任何合適的方式來調(diào)用和/或識別任務(wù),包括通過硬件通知和/或軟件通知,比如通過內(nèi)部設(shè)備116和/或外部設(shè)備118。在圖3中,任務(wù)312已經(jīng)被圖示成包括四個任務(wù):要運行的軟件中斷(SWInt)、準備好運行的線程、要運行的等待時間敏感的SWInt以及準備好運行的等待時間敏感的線程。將被意識到和理解的是,在不偏離要求保護的主題的范圍的情況下,任何數(shù)量的任務(wù)都可以被識別。
[0042]一些實施例在將任務(wù)和/或機器級指令指派給處理器核之前分析信息,例如包含在(多個)軟件中斷結(jié)構(gòu)306、(多個)線程結(jié)構(gòu)308和/或(多個)核數(shù)據(jù)結(jié)構(gòu)310中的信息。在這個示例中,(多個)軟件中斷結(jié)構(gòu)306可以被分析來確定要在任務(wù)3