用于線程調(diào)度的方法以及系統(tǒng)的制作方法【專利摘要】提供一種用于在具有用以執(zhí)行操作系統(tǒng)的硬件處理器的電子裝置中執(zhí)行線程調(diào)度的方法。所述方法包含以下步驟:當(dāng)多個(gè)預(yù)設(shè)條件其中之一滿足時(shí),啟用由硬件處理器執(zhí)行的虛擬管理器;通過線程調(diào)度器接收用于調(diào)度將執(zhí)行的線程的請(qǐng)求。通過虛擬管理器屏蔽線程調(diào)度器以防其存取第一隊(duì)列,所述第一隊(duì)列包含處于可運(yùn)行狀態(tài)的多個(gè)第一線程。將線程調(diào)度器引導(dǎo)至第一虛擬隊(duì)列以選擇將執(zhí)行的線程,第一虛擬隊(duì)列包含第一隊(duì)列中的所述第一線程的第一部分,此第一部分與當(dāng)前正在運(yùn)行的至少一個(gè)應(yīng)用程序相關(guān)聯(lián);通過硬件處理器調(diào)度所選定的線程的執(zhí)行。【專利說明】用于線程調(diào)度的方法以及系統(tǒng)【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及用于線程調(diào)度的方法以及系統(tǒng)。更明確地說,本發(fā)明涉及用于以用戶為中心的線程調(diào)度方法以及系統(tǒng)。【
背景技術(shù):
】[0002]現(xiàn)今的操作系統(tǒng)中通常會(huì)維持一個(gè)運(yùn)行隊(duì)列(run-queue),用以選擇其中一個(gè)線程作為下一調(diào)度候選者以用于執(zhí)行。為考量公平性,每一線程被指派時(shí)間片以定義線程最多能夠按其調(diào)度間隔運(yùn)行多久,另外還設(shè)定每一線程的優(yōu)先級(jí)以判斷其執(zhí)行次序。操作系統(tǒng)的調(diào)度器按優(yōu)先次序?qū)⑺锌蛇\(yùn)行的線程插入到運(yùn)行隊(duì)列,且選取具有最高優(yōu)先級(jí)的線程作為將由處理器執(zhí)行的下一調(diào)度候選者。[0003]對(duì)于例如智能電話、平板電腦(tabletcomputer)以及個(gè)人計(jì)算機(jī)等消費(fèi)型電子裝置,用戶體驗(yàn)為非常重要的考量。然而,消費(fèi)型電子裝置的計(jì)算資源有限,當(dāng)這種消費(fèi)型電子裝置的處理器同時(shí)執(zhí)行過多進(jìn)程或線程時(shí),用戶常感到明顯滯后。【
發(fā)明內(nèi)容】[0004]因此,本發(fā)明涉及用于線程調(diào)度的方法以及系統(tǒng),所述方法以及系統(tǒng)可將處理器的調(diào)度集中在前臺(tái)進(jìn)程以及操作系統(tǒng)的相關(guān)進(jìn)程上以提供順利而流暢的用戶體驗(yàn)。本發(fā)明提供的方法以及系統(tǒng)簡(jiǎn)單且易于實(shí)施。[0005]本發(fā)明提供一種用于在具有用以執(zhí)行操作系統(tǒng)的硬件處理器的電子裝置中執(zhí)行線程調(diào)度的方法。所述操作系統(tǒng)包含線程調(diào)度器以及隊(duì)列管理器。所述方法包含以下步驟:判斷多個(gè)預(yù)設(shè)條件中的至少一者是否滿足。當(dāng)預(yù)設(shè)條件中的一者滿足時(shí),啟用由所述硬件處理器執(zhí)行的虛擬管理器;通過所述線程調(diào)度器接收用于調(diào)度將執(zhí)行的線程的請(qǐng)求。通過所述虛擬管理器屏蔽線程調(diào)度器以防其存取第一隊(duì)列,第一隊(duì)列包含處于可運(yùn)行狀態(tài)的多個(gè)第一線程;將線程調(diào)度器引導(dǎo)至第一虛擬隊(duì)列以選擇將執(zhí)行的線程,第一虛擬隊(duì)列包含第一隊(duì)列中的所述多個(gè)第一線程的第一部分,第一部分與當(dāng)前正在運(yùn)行的至少一個(gè)應(yīng)用程序相關(guān)聯(lián);通過所述硬件處理器調(diào)度選定線程的執(zhí)行。[0006]本發(fā)明還提供一種用于電子裝置中的線程調(diào)度系統(tǒng)。所述線程調(diào)度系統(tǒng)包含系統(tǒng)隊(duì)列、線程調(diào)度器、隊(duì)列管理器以及虛擬管理器。系統(tǒng)隊(duì)列包含用于維持處于第一狀態(tài)的多個(gè)第一線程的第一隊(duì)列以及用于維持處于第二狀態(tài)的多個(gè)第二線程的第二隊(duì)列。線程調(diào)度器用以接收用于調(diào)度第一線程中的至少一者的執(zhí)行以及更新第二線程的狀態(tài)的請(qǐng)求。隊(duì)列管理器用以接收用于更新第一隊(duì)列以及第二隊(duì)列中的線程的請(qǐng)求。所述虛擬管理器用以攔截由線程調(diào)度器以及隊(duì)列管理器接收的用于存取第一隊(duì)列的請(qǐng)求,更新第一隊(duì)列以及第二隊(duì)列中的線程,且用以根據(jù)與當(dāng)前正在運(yùn)行的至少一個(gè)應(yīng)用程序相關(guān)聯(lián)的白名單將第一隊(duì)列中的第一線程映射到第一虛擬隊(duì)列以及第二虛擬隊(duì)列中。[0007]本發(fā)明還提供一種用于在具有用以執(zhí)行操作系統(tǒng)的硬件處理器的電子裝置中執(zhí)行線程調(diào)度的方法。所述操作系統(tǒng)包含運(yùn)行隊(duì)列以及休眠隊(duì)列。所述方法包含以下步驟:通過所述硬件處理器產(chǎn)生包含與當(dāng)前正在運(yùn)行的應(yīng)用程序相關(guān)聯(lián)的進(jìn)程的白名單;通過所述硬件處理器根據(jù)白名單而調(diào)度運(yùn)行隊(duì)列中的線程的執(zhí)行;通過所述硬件處理器根據(jù)白名單將休眠隊(duì)列中的線程更新到運(yùn)行隊(duì)列中?!緦@綀D】【附圖說明】[0008]圖1繪示本發(fā)明的實(shí)施例的操作系統(tǒng)的部分示意圖。[0009]圖2繪示本發(fā)明實(shí)施例的虛擬管理器的示意圖。[0010]圖3到圖9繪示本發(fā)明實(shí)施例的用于線程調(diào)度的方法的流程的示意圖。[0011]圖10繪示本發(fā)明實(shí)施例的用于線程調(diào)度的電子裝置的示意圖。[0012][主要元件標(biāo)號(hào)說明][0013]100:操作系統(tǒng)110:調(diào)度器[0014]120:隊(duì)列管理器130:虛擬管理器[0015]140:系統(tǒng)運(yùn)行隊(duì)列150:系統(tǒng)休眠隊(duì)列[0016]160:線程列表210:切換模塊[0017]220:白名單230:控制單元[0018]240:虛擬運(yùn)行隊(duì)列250:虛擬封鎖隊(duì)列[0019]310~940:方法步驟1000:電子裝置[0020]1010:處理器1020:存儲(chǔ)裝置【具體實(shí)施方式】[0021]圖1繪示本發(fā)明實(shí)施例的操作系統(tǒng)100的一部分的示意圖。操作系統(tǒng)100由電子裝置的應(yīng)用處理器或其它合適處理器執(zhí)行。電子裝置可為智能電話、個(gè)人數(shù)字助理(PDA)、平板電腦、筆記本計(jì)算機(jī)或個(gè)人計(jì)算機(jī)。操作系統(tǒng)100包括線程調(diào)度器110、隊(duì)列管理器(queuemanager;QM)120、虛擬管理器(virtualmanager;VM)130、系統(tǒng)運(yùn)行隊(duì)列140、系統(tǒng)休眠隊(duì)列150以及線程列表160。[0022]操作系統(tǒng)100中可存在一個(gè)或一個(gè)以上進(jìn)程,每一進(jìn)程可包含一個(gè)或一個(gè)以上線程。線程列表160記錄操作系統(tǒng)100中的所有線程以及每一線程的狀態(tài),線程的狀態(tài)可為正在運(yùn)行、可運(yùn)行、休眠或封鎖。正在運(yùn)行狀態(tài)意味線程當(dāng)前由電子裝置的處理器執(zhí)行??蛇\(yùn)行狀態(tài)意味線程準(zhǔn)備好由處理器執(zhí)行但尚未運(yùn)行。封鎖狀態(tài)意味線程正等待預(yù)設(shè)事件發(fā)生,例如來自電子裝置的硬件組件的中斷或由另一線程先前獲取的排它性對(duì)象的釋放。系統(tǒng)運(yùn)行隊(duì)列140記錄所有可運(yùn)行線程,而系統(tǒng)休眠隊(duì)列150記錄所有封鎖線程。系統(tǒng)運(yùn)行隊(duì)列140按優(yōu)先次序記錄線程,這意味系統(tǒng)運(yùn)行隊(duì)列140中的線程是按優(yōu)先級(jí)次序排序。系統(tǒng)運(yùn)行隊(duì)列140的第一線程具有最高優(yōu)先級(jí)。另一方面,系統(tǒng)休眠隊(duì)列150中的線程是根據(jù)線程的休眠時(shí)間的長(zhǎng)度排序的。系統(tǒng)休眠隊(duì)列150的第一個(gè)線程具有最短休眠時(shí)間。[0023]調(diào)度器110安排電子裝置的處理器的線程執(zhí)行。換句話說,調(diào)度器110判斷操作系統(tǒng)100中的線程的執(zhí)行次序。QM120處理希望將線程插入到系統(tǒng)運(yùn)行隊(duì)列140以及系統(tǒng)休眠隊(duì)列150或從系統(tǒng)運(yùn)行隊(duì)列140以及系統(tǒng)休眠隊(duì)列150移除線程的所有請(qǐng)求,且確保請(qǐng)求恰當(dāng)?shù)卮谢?。[0024]本發(fā)明的VM130設(shè)置為調(diào)度器110、QM120、系統(tǒng)運(yùn)行隊(duì)列140與系統(tǒng)休眠隊(duì)列150之間的中間層。VM130代替系統(tǒng)運(yùn)行隊(duì)列140以及系統(tǒng)休眠隊(duì)列150與線程調(diào)度器110以及QM120互動(dòng)。VM130可將調(diào)度器110的調(diào)度引導(dǎo)至較重要的線程,例如與用戶當(dāng)前關(guān)注(focus)的應(yīng)用程序相關(guān)聯(lián)的線程,使得這些進(jìn)程可被優(yōu)先執(zhí)行。VM130可參考線程列表160以查詢線程的當(dāng)前狀態(tài)。此外,VM130支持在對(duì)操作系統(tǒng)100透明化的即時(shí)被安裝或卸載的能力,這意味VM130可靈活地被啟用或停用。[0025]當(dāng)VM130被停用時(shí),調(diào)度器110以及QM120不受VM130影響,且操作系統(tǒng)100表現(xiàn)得正如常規(guī)多任務(wù)操作系統(tǒng)一樣。在這種狀況下,調(diào)度器110將此時(shí)應(yīng)喚醒的線程按優(yōu)先次序從系統(tǒng)休眠隊(duì)列150移動(dòng)到系統(tǒng)運(yùn)行隊(duì)列140,且接著調(diào)度器110選擇系統(tǒng)運(yùn)行隊(duì)列140中的第一線程作為將由處理器執(zhí)行的下一線程。選定的線程可運(yùn)行歷時(shí)其剩余時(shí)間量和/或系統(tǒng)休眠隊(duì)列150中的第一個(gè)線程的休眠時(shí)間中的最小值。[0026]當(dāng)VM130被啟用時(shí),VM130將系統(tǒng)運(yùn)行隊(duì)列140中的線程分類為兩部分,且參考用戶活動(dòng)(例如,當(dāng)前正在運(yùn)行的前臺(tái)應(yīng)用程序)管理處理器進(jìn)行的線程執(zhí)行的調(diào)度。下文論述VM130的處理細(xì)節(jié)。[0027]圖2繪示本發(fā)明實(shí)施例的VM130的示意圖。VM130包含切換模塊210、控制單元230、白名單220、虛擬運(yùn)行隊(duì)列240以及虛擬封鎖隊(duì)列250。切換模塊210監(jiān)視一些預(yù)定條件且根據(jù)預(yù)定條件而停用或啟用VM130。舉例來說,可根據(jù)(例如)處理器的使用率(usage)、總線流通量(bustraffic)、處理器的吞吐量(throughput)和/或可影響效率或處理優(yōu)先級(jí)的其它條件定義預(yù)定條件。當(dāng)處理器的利用率百分比高于第一閾值時(shí),切換模塊210啟用控制單元230以用于將傳入線程映射到虛擬運(yùn)行隊(duì)列240或虛擬封鎖隊(duì)列250中,且用于重定向傳入請(qǐng)求的調(diào)度。當(dāng)處理器的利用率百分比低于第二閾值時(shí),切換模塊210停用控制單元230。切換模塊210也可在顯示屏幕閑置超過某一時(shí)間段(其暗示用戶可能不與電子裝置互動(dòng),或顯示屏幕關(guān)閉等)的情況下停用控制單元230。[0028]在本發(fā)明的一個(gè)實(shí)施例中,控制單元230可周期性地輪詢切換模塊210以檢測(cè)切換模塊210的接通/切斷狀態(tài)。當(dāng)切換模塊210接通時(shí),控制單元230啟用且開始執(zhí)行用于線程調(diào)度的方法,所述方法的流程繪示于圖3到圖9中。當(dāng)切換模塊210切斷時(shí),控制單元230停用且停止執(zhí)行用于線程調(diào)度的方法。在本發(fā)明的另一實(shí)施例中,切換模塊210可當(dāng)切換模塊210處于接通狀態(tài)(其意味滿足預(yù)定條件中的至少一者)而用信號(hào)通知啟用控制單元230。類似地,當(dāng)條件未滿足時(shí),切換模塊210可用信號(hào)通知停用控制單元230。[0029]當(dāng)控制單元230被啟用時(shí),控制單元230根據(jù)白名單220將系統(tǒng)運(yùn)行隊(duì)列140中的線程映射到虛擬運(yùn)行隊(duì)列240或虛擬封鎖隊(duì)列250中。當(dāng)系統(tǒng)運(yùn)行隊(duì)列140中的線程的父進(jìn)程或相關(guān)聯(lián)的進(jìn)程處于白名單220中時(shí),此線程會(huì)映射到虛擬運(yùn)行隊(duì)列240中。否則,此線程會(huì)映射到虛擬封鎖隊(duì)列250中。白名單220記錄對(duì)用戶和/或操作系統(tǒng)100來說重要的進(jìn)程。在本發(fā)明的一個(gè)實(shí)施例中,白名單220可包含與前臺(tái)應(yīng)用程序相關(guān)聯(lián)的所有線程、對(duì)操作系統(tǒng)至關(guān)重要的服務(wù)以及不能被中斷的其它重要進(jìn)程。因此,虛擬運(yùn)行隊(duì)列240中的線程為從用戶觀點(diǎn)來看相對(duì)重要的線程,而虛擬封鎖隊(duì)列250中的線程相比較來說較不重要因此可延遲處理。[0030]白名單220可包含靜態(tài)白名單以及動(dòng)態(tài)白名單。靜態(tài)白名單可包含對(duì)操作系統(tǒng)100來說是基礎(chǔ)的且在任何狀況下不應(yīng)被封鎖的一個(gè)或一個(gè)以上預(yù)定進(jìn)程,例如,操作系統(tǒng)100的核心程序、文件系統(tǒng)以及硬件裝置驅(qū)動(dòng)程序。靜態(tài)白名單為固定的,這意味靜態(tài)白名單中列出的進(jìn)程將不會(huì)被改變或移除。動(dòng)態(tài)白名單包含當(dāng)前正在運(yùn)行的其它進(jìn)程,例如,操作系統(tǒng)100的前臺(tái)進(jìn)程。前臺(tái)進(jìn)程為當(dāng)前顯示在電子裝置的屏幕上的進(jìn)程。因此,前臺(tái)進(jìn)程應(yīng)具有比其它正在運(yùn)行的進(jìn)程較高的優(yōu)先級(jí)。此外,前臺(tái)進(jìn)程為當(dāng)前由用戶使用且當(dāng)前正在與用戶互動(dòng)的應(yīng)用程序。不能終止的后臺(tái)應(yīng)用程序(例如,音頻媒體播放,例如音樂播放器、收音機(jī)等)的進(jìn)程也會(huì)添加到動(dòng)態(tài)白名單中。當(dāng)所請(qǐng)求的服務(wù)與動(dòng)態(tài)白名單中的至少一個(gè)進(jìn)程相關(guān)聯(lián)時(shí),將提供所述服務(wù)的進(jìn)程會(huì)動(dòng)態(tài)地添加到白名單220中。白名單220由控制單元230維護(hù)且在應(yīng)用程序切換時(shí)更新。[0031]舉例來說,當(dāng)用戶用瀏覽器瀏覽網(wǎng)站時(shí),所述瀏覽器為前臺(tái)進(jìn)程。當(dāng)用戶單擊瀏覽器的插件以觀看串流視頻時(shí),插件啟動(dòng)下載并播放視頻的進(jìn)程,且啟動(dòng)播放串流視頻的音頻播放的另一進(jìn)程。由于瀏覽器請(qǐng)求插件的服務(wù),且插件請(qǐng)求下載進(jìn)程以及音頻播放進(jìn)程的服務(wù),因此控制單元230將插件進(jìn)程、下載進(jìn)程以及音頻播放進(jìn)程添加到白名單220中。因此,之后與插件、下載以及音頻播放相關(guān)的請(qǐng)求將被放入到虛擬運(yùn)行隊(duì)列240中,使得其可被恰當(dāng)?shù)卣{(diào)度以用于執(zhí)行。[0032]控制單元230可向操作系統(tǒng)100發(fā)送詢問以了解哪些進(jìn)程為前臺(tái)進(jìn)程以及哪些進(jìn)程為后臺(tái)進(jìn)程。此詢問可周期性地或在預(yù)定時(shí)刻執(zhí)行。舉例來說,控制單元230可在每次控制單元230被啟用時(shí)、接收到調(diào)度請(qǐng)求時(shí)或其它條件發(fā)生時(shí)發(fā)送詢問。在先前系統(tǒng)中,當(dāng)需要執(zhí)行線程重調(diào)度時(shí),調(diào)度器110將檢查系統(tǒng)封鎖隊(duì)列150且使已經(jīng)過休眠時(shí)段的進(jìn)程處于可運(yùn)行狀態(tài),并選擇系統(tǒng)運(yùn)行隊(duì)列140中具有較高優(yōu)先級(jí)的線程以用于調(diào)度。然而,在本發(fā)明中,控制單元230可中斷調(diào)度器110的此意圖,且重新引導(dǎo)調(diào)度器110從虛擬運(yùn)行隊(duì)列240選擇候選線程以用于調(diào)度。另外,當(dāng)由白名單220中的進(jìn)程針對(duì)服務(wù)而請(qǐng)求進(jìn)程時(shí),所請(qǐng)求進(jìn)程的至少一個(gè)線程必須被QM120插入到系統(tǒng)運(yùn)行隊(duì)列140中以提供所述服務(wù)。當(dāng)QM120將要將線程插入到系統(tǒng)運(yùn)行隊(duì)列140中時(shí),控制單元230可攔截QM120的此意圖且根據(jù)白名單220將所述線程放入到虛擬運(yùn)行隊(duì)列240或虛擬封鎖隊(duì)列250中。[0033]除維護(hù)控制單元230夕卜,操作系統(tǒng)100還可提供專用應(yīng)用程序設(shè)計(jì)接口(applicationprogramminginterface;API)以供進(jìn)程修改動(dòng)態(tài)白名單。進(jìn)程可通過向?qū)S肁PI發(fā)送請(qǐng)求將其自身或其它進(jìn)程添加到動(dòng)態(tài)白名單中。進(jìn)程還可通過向?qū)S肁PI發(fā)送另一請(qǐng)求將其自身或其它進(jìn)程從動(dòng)態(tài)白名單移除。此專用API為白名單220的建構(gòu)提供較高的靈活性以及效率。[0034]控制單元230通過將對(duì)用戶以及操作系統(tǒng)100來說重要的線程保持于虛擬運(yùn)行隊(duì)列240中,以及將無關(guān)線程暫時(shí)保持于虛擬封鎖隊(duì)列250中而起作用。控制單元230將處理器的執(zhí)行循環(huán)集中在虛擬運(yùn)行隊(duì)列240的線程上以加快與用戶緊密相關(guān)的線程的響應(yīng),因此用戶可覺得所有資源專門供其使用且享受流暢體驗(yàn)。在虛擬管理器130的激活期間暫時(shí)不調(diào)度虛擬封鎖隊(duì)列250中的線程執(zhí)行。細(xì)節(jié)陳述于用于線程調(diào)度的方法的步驟中,所述方法的流程繪示于圖3到圖9中。[0035]圖3繪示本發(fā)明實(shí)施例的用于線程調(diào)度的方法的初始化程序的流程的示意圖。當(dāng)切換模塊210因預(yù)設(shè)條件而接通,控制單元230執(zhí)行圖3的流程以啟用VM130。首先,在步驟310處,切換模塊210判斷是否滿足多個(gè)預(yù)設(shè)條件中的至少一者。如果滿足,那么切換模塊210接通。同時(shí)電子裝置的中斷將被屏蔽,這是因?yàn)橹袛鄳?yīng)在初始化程序期間被暫時(shí)屏蔽,以防止這個(gè)時(shí)段中的重調(diào)度,使得可保證所有隊(duì)列一致。預(yù)設(shè)條件可包含以下各項(xiàng)中的至少一者:硬件處理器的使用率超過預(yù)定閾值、時(shí)序關(guān)鍵(timingcritical)應(yīng)用程序或服務(wù)的需求、耦合到硬件處理器的總線的流通量,以及硬件處理器的吞吐量。[0036]接下來,在步驟320處,通過攔截調(diào)度器110以及QM120對(duì)系統(tǒng)運(yùn)行隊(duì)列140的操作來啟用VM130。在安裝之后,控制單元230可攔截調(diào)度器110以及QM120對(duì)系統(tǒng)運(yùn)行隊(duì)列140的各種操作,且對(duì)應(yīng)執(zhí)行圖5到圖8所示的流程。在圖5到圖8所示的流程中,控制單元230將被攔截的對(duì)系統(tǒng)運(yùn)行隊(duì)列140的操作轉(zhuǎn)換為對(duì)虛擬運(yùn)行隊(duì)列240以及虛擬封鎖隊(duì)列250的操作。對(duì)系統(tǒng)休眠隊(duì)列150的任何操作可被略過而無任何干擾,這是因?yàn)檫@些操作實(shí)際上不影響用戶體驗(yàn)。[0037]在步驟330中,VMl30產(chǎn)生白名單220,白名單220包含與當(dāng)前電子裝置正在運(yùn)行的應(yīng)用程序相關(guān)聯(lián)的進(jìn)程。白名單220可包含與前臺(tái)應(yīng)用程序、系統(tǒng)關(guān)鍵服務(wù)以及時(shí)序關(guān)鍵后臺(tái)應(yīng)用程序或服務(wù)相關(guān)聯(lián)的進(jìn)程。接著VM130在步驟340中根據(jù)白名單220將含有處于可運(yùn)行狀態(tài)的線程的系統(tǒng)運(yùn)行隊(duì)列140中的線程映射到虛擬運(yùn)行隊(duì)列240以及虛擬封鎖隊(duì)列250中。與白名單中的進(jìn)程相關(guān)聯(lián)的線程映射到虛擬運(yùn)行隊(duì)列240,而不在白名單中的線程則映射到虛擬封鎖隊(duì)列220中。[0038]接下來,在步驟350處,通過線程調(diào)度器110接收用于調(diào)度將執(zhí)行的線程的請(qǐng)求。所述請(qǐng)求可在正在休眠的線程將喚醒或正在運(yùn)行的線程的執(zhí)行或時(shí)間量用完時(shí)被接收。響應(yīng)于所述請(qǐng)求,VM130在步驟360中屏蔽線程調(diào)度器110以防止其存取系統(tǒng)運(yùn)行隊(duì)列140選擇和調(diào)度將執(zhí)行的線程。如上所述,通常線程調(diào)度器110將根據(jù)優(yōu)先級(jí)從系統(tǒng)運(yùn)行隊(duì)列140選取線程。在這個(gè)實(shí)施例中,VM130將攔截請(qǐng)求且引導(dǎo)線程調(diào)度器110從虛擬運(yùn)行隊(duì)列240選擇線程以供執(zhí)行,如步驟370所示。在步驟380中,選定的線程可由線程調(diào)度器110調(diào)度以用于執(zhí)行。[0039]圖4繪示本發(fā)明實(shí)施例的用于線程調(diào)度的方法的總流程示意圖。首先,在步驟410處,以上述方式產(chǎn)生白名單220。將前臺(tái)進(jìn)程添加到白名單220中,且接著將服務(wù)被白名單220中的至少一個(gè)進(jìn)程請(qǐng)求的任何進(jìn)程也添加到白名單220中。接下來,在步驟420處,根據(jù)白名單220將系統(tǒng)運(yùn)行隊(duì)列140的線程映射到虛擬運(yùn)行隊(duì)列240以及虛擬封鎖隊(duì)列250中。將系統(tǒng)運(yùn)行隊(duì)列140中父進(jìn)程在白名單220的線程移動(dòng)到虛擬運(yùn)行隊(duì)列240中。按優(yōu)先級(jí)次序?qū)μ摂M運(yùn)行隊(duì)列240中的線程進(jìn)行排序。虛擬運(yùn)行隊(duì)列240中的第一個(gè)線程具有最高優(yōu)先級(jí)。將系統(tǒng)運(yùn)行隊(duì)列140中父進(jìn)程不在白名單220的線程移動(dòng)到虛擬封鎖隊(duì)列250中。當(dāng)將線程插入到虛擬封鎖隊(duì)列250中時(shí),線程的當(dāng)前狀態(tài)從可運(yùn)行或正在運(yùn)行改變?yōu)榉怄i,且線程的休眠時(shí)間設(shè)定為極其大或無窮大。接下來,在步驟430中,當(dāng)接收到對(duì)應(yīng)于虛擬運(yùn)行隊(duì)列240中的線程的請(qǐng)求,允許所述線程被處理器執(zhí)行。在步驟440中,當(dāng)接收到對(duì)應(yīng)于虛擬封鎖隊(duì)列250中的線程的請(qǐng)求,暫時(shí)阻止所述線程被執(zhí)行。如上所述,映射到虛擬運(yùn)行隊(duì)列240中的線程為與對(duì)用戶重要的進(jìn)程相關(guān)聯(lián)的線程,且因此這些線程的執(zhí)行具有高優(yōu)先級(jí)。然而,虛擬封鎖隊(duì)列250中的線程并不那么重要而無需立即執(zhí)行,且因?yàn)橛?jì)算資源缺乏,這些線程將被阻止調(diào)度以改進(jìn)總體性能和用戶體驗(yàn)。[0040]圖5繪示本發(fā)明實(shí)施例的用于線程調(diào)度的方法的流程的示意圖。當(dāng)調(diào)度器110執(zhí)行處理器的重調(diào)度時(shí),控制單元230執(zhí)行圖5中的流程。首先,當(dāng)重調(diào)度發(fā)生時(shí),調(diào)度器110喚醒駐存在系統(tǒng)休眠隊(duì)列150中且有限休眠時(shí)段已到期的線程。在步驟510處,引導(dǎo)調(diào)度器110將被調(diào)度器110喚醒且父進(jìn)程在白名單220中的線程按優(yōu)先次序從系統(tǒng)休眠隊(duì)列150移動(dòng)到虛擬運(yùn)行隊(duì)列240中。另外,引導(dǎo)調(diào)度器110將被調(diào)度器110喚醒且父進(jìn)程不在白名單220中的線程按優(yōu)先次序從系統(tǒng)休眠隊(duì)列150移動(dòng)到虛擬封鎖隊(duì)列250中。[0041]接下來,在步驟520處,引導(dǎo)調(diào)度器110選擇虛擬運(yùn)行隊(duì)列240的第一個(gè)線程作為將執(zhí)行的下一線程。在步驟530處,攔截自調(diào)度器110的決策,此決策包含由調(diào)度器110選擇的線程。[0042]接下來,在步驟540處,檢查由調(diào)度器110選擇的線程的父進(jìn)程是否在白名單220中。當(dāng)由調(diào)度器Iio選擇的線程的父進(jìn)程在白名單220中時(shí),流程進(jìn)行到步驟550以調(diào)度處理器執(zhí)行調(diào)度器110選擇的線程。當(dāng)由調(diào)度器110選擇的線程的父進(jìn)程不在白名單220中時(shí),流程進(jìn)行到步驟560以按優(yōu)先次序?qū)⒄{(diào)度器110選擇的線程插入到虛擬封鎖隊(duì)列250中,且接著再次觸發(fā)調(diào)度器110的選擇程序以返回到步驟520。[0043]圖6繪示本發(fā)明實(shí)施例的用于線程調(diào)度的方法的流程的示意圖。每當(dāng)線程將被QM120插入到系統(tǒng)運(yùn)行隊(duì)列140中或從系統(tǒng)運(yùn)行隊(duì)列140刪除時(shí),控制單元230執(zhí)行圖6中的流程。首先,在步驟610處,檢查來自QM120的所攔截的操作是插入還是刪除。當(dāng)所攔截的操作為插入線程時(shí),流程進(jìn)行到步驟620以按優(yōu)先次序?qū)⒕€程插入到虛擬運(yùn)行隊(duì)列240中。在步驟630處,喚醒虛擬封鎖隊(duì)列250中父進(jìn)程在白名單220的線程。在步驟640處,從虛擬封鎖隊(duì)列250移除被喚醒的線程。在步驟650處,按優(yōu)先次序?qū)⒈粏拘训木€程插入到虛擬運(yùn)行隊(duì)列240中。步驟630到650的目的為在切換前臺(tái)進(jìn)程時(shí),將與新的前臺(tái)進(jìn)程相關(guān)的線程移動(dòng)到虛擬運(yùn)行隊(duì)列240中。[0044]在步驟610處,當(dāng)所攔截的操作為刪除線程時(shí),流程進(jìn)行到步驟660以簡(jiǎn)單地將線程從虛擬運(yùn)行隊(duì)列240移除。[0045]圖7繪示本發(fā)明實(shí)施例的用于線程調(diào)度的方法的流程的示意圖。當(dāng)正在運(yùn)行的線程(當(dāng)前被處理器執(zhí)行的線程)在請(qǐng)求由虛擬封鎖隊(duì)列250中的封鎖線程所獲取的排他性對(duì)象(exclusiveobject)時(shí),控制單元230執(zhí)行圖7中的流程。排他性對(duì)象可為共享資源,例如,揚(yáng)聲器或打印機(jī)?;蛘撸潘詫?duì)象可為同步對(duì)象,例如,信號(hào)燈(semaphore)、自旋鎖(spinlock)或互斥鎖(mutex)。如果這個(gè)問題不解決,那么將存在僵局(deadlock),這是因?yàn)橹灰猇M130接通,虛擬封鎖隊(duì)列250中的封鎖線程將絕不會(huì)被運(yùn)行以釋放排他性對(duì)象。當(dāng)正在運(yùn)行的線程必須等待排他性對(duì)象時(shí),QM120必須改變正在運(yùn)行的線程的狀態(tài)??刂茊卧?30可攔截來自QM120的此操作且檢查排他性對(duì)象的擁有者。一旦發(fā)現(xiàn)擁有者在虛擬封鎖隊(duì)列250中休眠,控制單元230就執(zhí)行圖7中的流程以避免僵局。[0046]首先,在步驟710處,喚醒封鎖線程。在步驟720處,喚醒虛擬封鎖隊(duì)列250中父進(jìn)程在白名單220的線程。在步驟730處,從虛擬封鎖隊(duì)列250移除在步驟710以及720處被喚醒的線程。在步驟740處,按優(yōu)先次序?qū)⒃诓襟E710以及720處被喚醒的線程插入到虛擬運(yùn)行隊(duì)列240中。[0047]圖8繪示本發(fā)明實(shí)施例的用于線程調(diào)度的方法的流程的示意圖。當(dāng)前臺(tái)進(jìn)程從先前前臺(tái)進(jìn)程切換到下一前臺(tái)進(jìn)程時(shí),控制單元230執(zhí)行圖8中的流程。首先,在步驟810處,清除動(dòng)態(tài)白名單。由于動(dòng)態(tài)白名單記錄與前臺(tái)進(jìn)程相關(guān)的進(jìn)程,因此當(dāng)前臺(tái)進(jìn)程切換時(shí),動(dòng)態(tài)白名單必須重設(shè)以及重建。在步驟820處,將下一前臺(tái)進(jìn)程添加到動(dòng)態(tài)白名單中。在步驟830處,喚醒虛擬封鎖隊(duì)列250中父進(jìn)程為下一前臺(tái)進(jìn)程的線程。在步驟840處,從虛擬封鎖隊(duì)列250移除被喚醒的線程。在步驟850處,將被喚醒的線程按優(yōu)先次序插入到虛擬運(yùn)行隊(duì)列240中。至于在先前前臺(tái)進(jìn)程的動(dòng)態(tài)白名單中且仍在虛擬運(yùn)行隊(duì)列240中的線程,將在處理器的下一重調(diào)度時(shí)依圖4的流程將這些線程移動(dòng)到虛擬封鎖隊(duì)列250中。[0048]圖9繪示本發(fā)明實(shí)施例的用于線程調(diào)度的方法的流程的示意圖。當(dāng)切換模塊210因預(yù)設(shè)條件而切斷時(shí),控制單元230執(zhí)行圖9中的流程以關(guān)閉VM130。圖9中的流程可在圖3的步驟330之后執(zhí)行。[0049]首先,在步驟910處,屏蔽電子裝置的中斷以防止重調(diào)度且保證所有隊(duì)列的一致性。在步驟920處,通過按優(yōu)先次序合并虛擬運(yùn)行隊(duì)列240與虛擬封鎖隊(duì)列250的線程重建構(gòu)系統(tǒng)運(yùn)行隊(duì)列140。在圖4所示的初始化程序之后,系統(tǒng)運(yùn)行隊(duì)列140變成空的。然而當(dāng)VM130關(guān)閉時(shí),調(diào)度器110以及QM120直接存取系統(tǒng)運(yùn)行隊(duì)列140,因此,必須重建構(gòu)系統(tǒng)運(yùn)行隊(duì)列140。在步驟930處,通過取消在圖4的步驟420進(jìn)行的攔截調(diào)度器110以及QM120對(duì)系統(tǒng)運(yùn)行隊(duì)列140的操作來卸載(uninstall)VM130。VM130對(duì)調(diào)度器110、QM120以及操作系統(tǒng)100的任何影響將被轉(zhuǎn)返。接下來,在步驟940處,取消屏蔽電子裝置的中斷。在步驟940之后,VMl30完全關(guān)閉且操作系統(tǒng)100表現(xiàn)得正如VM130不存在一樣。[0050]圖10繪示本發(fā)明實(shí)施例的可運(yùn)行線程調(diào)度的電子裝置1000的示意圖。電子裝置1000包含處理器1010以及存儲(chǔ)裝置1020。處理器1010可執(zhí)行包含VM130以及控制單元230的操作系統(tǒng)100。換句話說,處理器1010可執(zhí)行用于線程調(diào)度的方法,所述方法的流程繪示于圖3到圖9中。存儲(chǔ)裝置1020耦接至處理器1010。存儲(chǔ)裝置1020可存儲(chǔ)系統(tǒng)運(yùn)行隊(duì)列140、系統(tǒng)休眠隊(duì)列150、虛擬運(yùn)行隊(duì)列240、虛擬封鎖隊(duì)列250以及白名單220。[0051]總之,本發(fā)明根據(jù)可運(yùn)行線程與前臺(tái)進(jìn)程之間的關(guān)系對(duì)操作系統(tǒng)中的可運(yùn)行線程進(jìn)行分類,且調(diào)整處理器的調(diào)度以將執(zhí)行循環(huán)集中在與前臺(tái)進(jìn)程緊密相關(guān)的線程上。因此,前臺(tái)進(jìn)程的操作為流暢且反應(yīng)靈敏的,這改進(jìn)了用戶體驗(yàn)。[0052]所屬領(lǐng)域的技術(shù)人員將明白,可在不脫離本發(fā)明的范圍或精神的情況下對(duì)本發(fā)明的結(jié)構(gòu)作各種修改和變化。鑒于以上內(nèi)容,希望本發(fā)明涵蓋本發(fā)明的修改和變化,只要所述修改和變化落入所附權(quán)利要求書和其等效物的范圍內(nèi)?!緳?quán)利要求】1.一種用于在具有用以執(zhí)行操作系統(tǒng)的硬件處理器的電子裝置中執(zhí)行線程調(diào)度的方法,其中所述操作系統(tǒng)包括線程調(diào)度器以及隊(duì)列管理器,所述方法包括:判斷是否滿足多個(gè)預(yù)設(shè)條件中的至少一者;當(dāng)滿足所述多個(gè)預(yù)設(shè)條件中的一者時(shí),啟用由所述硬件處理器執(zhí)行的虛擬管理器;通過所述線程調(diào)度器接收用于調(diào)度將執(zhí)行的線程的請(qǐng)求;通過所述虛擬管理器屏蔽所述線程調(diào)度器以防存取第一隊(duì)列,所述第一隊(duì)列包括處于可運(yùn)行狀態(tài)的多個(gè)第一線程;將所述線程調(diào)度器引導(dǎo)至包括所述第一隊(duì)列中的所述多個(gè)第一線程的第一部分的第一虛擬隊(duì)列以選擇將執(zhí)行的所述線程,所述第一線程的所述第一部分與當(dāng)前正在運(yùn)行的至少一個(gè)應(yīng)用程序相關(guān)聯(lián);以及通過所述硬件處理器調(diào)度選定的所述線程的執(zhí)行。2.根據(jù)權(quán)利要求1所述的方法,還包括:通過所述虛擬管理器產(chǎn)生包括與當(dāng)前正在運(yùn)行的所述應(yīng)用程序相關(guān)聯(lián)的進(jìn)程的白名單;以及通過所述虛擬管理器根據(jù)所述多個(gè)第一線程對(duì)所述白名單的從屬性,將所述多個(gè)第一線程映射到所述第一虛擬隊(duì)列以及第二虛擬隊(duì)列。3.根據(jù)權(quán)利要求2所述的方法,其中所述白名單包括與前臺(tái)應(yīng)用程序、系統(tǒng)關(guān)鍵服務(wù)、時(shí)序關(guān)鍵后臺(tái)應(yīng)用程序或服務(wù)相關(guān)聯(lián)的至少一個(gè)進(jìn)程。4.根據(jù)權(quán)利要求2所述的方法,還包括:根據(jù)當(dāng)前正在所述電子裝置上運(yùn)行的應(yīng)用程序更新所述白名單。5.根據(jù)權(quán)利要求2所述的方法,還包括:通過隊(duì)列管理器接收用于插入線程的請(qǐng)求;通過所述虛擬管理器屏蔽所述隊(duì)列管理器以防存取所述第一隊(duì)列;通過所述虛擬管理器根據(jù)所述白名單而判斷所述第二虛擬隊(duì)列中與所插入的線程相關(guān)聯(lián)的線程;以及通過所述虛擬管理器將所插入的線程以及所述第二虛擬隊(duì)列中相關(guān)聯(lián)的線程移動(dòng)到所述第一虛擬隊(duì)列中。6.根據(jù)權(quán)利要求2所述的方法,還包括:通過所述調(diào)度器接收對(duì)所述第一隊(duì)列中的線程的請(qǐng)求;通過所述虛擬管理器攔截所述請(qǐng)求;判斷所請(qǐng)求的線程是否在所述第二虛擬隊(duì)列中;當(dāng)所述所請(qǐng)求的線程在所述第二虛擬隊(duì)列中時(shí),通過所述虛擬管理器根據(jù)所述白名單判斷所述第二虛擬隊(duì)列中與所請(qǐng)求的線程相關(guān)聯(lián)的線程;以及通過所述虛擬管理器將所請(qǐng)求的線程以及所述第二虛擬隊(duì)列中相關(guān)聯(lián)的線程移動(dòng)到所述第一虛擬隊(duì)列中。7.根據(jù)權(quán)利要求2所述的方法,還包括:判斷當(dāng)前正在所述電子裝置上運(yùn)行的前臺(tái)應(yīng)用程序;于當(dāng)前正在運(yùn)行的所述前臺(tái)應(yīng)用程序被切換時(shí),根據(jù)新的前臺(tái)應(yīng)用程序更新所述白名單;以及根據(jù)所述更新的白名單來更新所述第一虛擬隊(duì)列以及所述第二虛擬隊(duì)列。8.根據(jù)權(quán)利要求2所述的方法,還包括:通過所述調(diào)度器判斷所述第二隊(duì)列中的多個(gè)第二線程的狀態(tài)改變,所述多個(gè)第二線程處于休眠狀態(tài);當(dāng)所述第二線程中的至少一者的狀態(tài)被改變時(shí),向所述隊(duì)列管理器發(fā)送用于插入具有狀態(tài)改變的所述第二線程的請(qǐng)求;通過所述虛擬管理器從所述隊(duì)列管理器攔截所述用于插入具有狀態(tài)改變的所述第二線程的請(qǐng)求;以及根據(jù)所述白名單而將具有狀態(tài)改變的所述第二線程插入到所述第一虛擬隊(duì)列或所述第二虛擬隊(duì)列中。9.根據(jù)權(quán)利要求1所述的方法,其中所述預(yù)設(shè)條件包括以下各項(xiàng)中的至少一者:所述硬件處理器的使用率超過預(yù)定閾值、時(shí)序關(guān)鍵應(yīng)用程序或服務(wù)的需求、耦接到所述硬件處理器的總線的流通量,以及所述硬件處理器的吞吐量。10.根據(jù)權(quán)利要求1所述的方法,還包括:通過所述隊(duì)列管理器接收用于刪除線程的請(qǐng)求;通過所述虛擬管理器屏蔽所述隊(duì)列管理器以防存取所述第一隊(duì)列;以及從所述第一虛擬隊(duì)列移除所述刪除的線程。11.根據(jù)權(quán)利要求1所述的方法,還包括:判斷是否未滿足所述多個(gè)預(yù)設(shè)條件;當(dāng)未滿足所述預(yù)設(shè)條件時(shí),通過所述虛擬管理器將所述第一虛擬隊(duì)列以及所述第二虛擬隊(duì)列中的線程映射回到所述第一隊(duì)列;以及停用所述虛擬管理器。12.一種用于電子裝置中的線程調(diào)度系統(tǒng),包括:系統(tǒng)隊(duì)列,其包括用于維持處于第一狀態(tài)的多個(gè)第一線程的第一隊(duì)列,以及用于維持處于第二狀態(tài)的多個(gè)第二線程的第二隊(duì)列;線程調(diào)度器,用以接收用于調(diào)度所述第一線程中的至少一者的執(zhí)行以及更新所述第二線程的狀態(tài)的請(qǐng)求;隊(duì)列管理器,用以接收用于更新所述第一隊(duì)列以及所述第二隊(duì)列中的線程的請(qǐng)求;以及虛擬管理器,用以攔截由所述線程調(diào)度器以及所述隊(duì)列管理器接收的用于存取所述第一隊(duì)列的請(qǐng)求,更新所述第一隊(duì)列以及所述第二隊(duì)列中的線程,且用以根據(jù)與當(dāng)前正在運(yùn)行的至少一個(gè)應(yīng)用程序相關(guān)聯(lián)的白名單而將所述第一隊(duì)列中的所述第一線程映射到第一虛擬隊(duì)列以及第二虛擬隊(duì)列中。13.根據(jù)權(quán)利要求12所述的線程調(diào)度系統(tǒng),其中所述虛擬管理器還包括:切換模塊,用以檢測(cè)多個(gè)預(yù)設(shè)條件;以及控制單元,用以于當(dāng)所述多個(gè)預(yù)設(shè)條件中的至少一者滿足時(shí)而被啟用,且用以攔截所述請(qǐng)求。14.根據(jù)權(quán)利要求13所述的線程調(diào)度系統(tǒng),其中所述多個(gè)預(yù)設(shè)條件包括以下各項(xiàng)中的至少一者:硬件處理器的使用率超過預(yù)定閾值、時(shí)序關(guān)鍵應(yīng)用程序或服務(wù)的需求、耦接到所述硬件處理器的總線的流通量,以及所述硬件處理器的吞吐量。15.根據(jù)權(quán)利要求13所述的線程調(diào)度系統(tǒng),其中所述控制單元還用以于當(dāng)所述線程調(diào)度器接收到用于調(diào)度所述第一線程中的至少一者的執(zhí)行的所述請(qǐng)求時(shí),屏蔽所述線程調(diào)度器以防存取所述第一隊(duì)列,且將所述線程調(diào)度器引導(dǎo)至所述第一虛擬隊(duì)列以選擇將執(zhí)行的所述第一線程。16.根據(jù)權(quán)利要求13所述的線程調(diào)度系統(tǒng),其中所述控制單元還用以攔截由所述隊(duì)列管理器接收的插入新線程的請(qǐng)求,屏蔽所述隊(duì)列管理器以防存取所述第一隊(duì)列,以及根據(jù)所述白名單而將所述新線程以及所述第二虛擬隊(duì)列中與所述新線程相關(guān)聯(lián)的所述第一線程移動(dòng)到所述第一虛擬隊(duì)列中。17.根據(jù)權(quán)利要求13所述的線程調(diào)度系統(tǒng),其中所述控制單元還用以將所述第一虛擬隊(duì)列以及所述第二虛擬隊(duì)列更新回所述第一隊(duì)列,且用以于當(dāng)未滿足所述多個(gè)預(yù)設(shè)條件時(shí)而停用。18.根據(jù)權(quán)利要求12所述的線程調(diào)度系統(tǒng),其中所述白名單包括與前臺(tái)應(yīng)用程序、系統(tǒng)關(guān)鍵服務(wù)、時(shí)序關(guān)鍵后臺(tái)應(yīng)用程序或服務(wù)相關(guān)聯(lián)的至少一個(gè)進(jìn)程。19.根據(jù)權(quán)利要求12所述的線程調(diào)度系統(tǒng),其中所述虛擬管理器還用以判斷當(dāng)前正在運(yùn)行的所述至少一個(gè)應(yīng)用程序的狀態(tài),且當(dāng)所述至少一個(gè)應(yīng)用程序被切換時(shí)而更新所述白名單。20.一種用于在具有用以執(zhí)行操作系統(tǒng)的硬件處理器的電子裝置中執(zhí)行線程調(diào)度的方法,其中所述操作系統(tǒng)包括運(yùn)行隊(duì)列以及休眠隊(duì)列,所述方法包括:通過所述硬件處理器產(chǎn)生包括與當(dāng)前正在運(yùn)行的應(yīng)用程序相關(guān)聯(lián)的進(jìn)程的白名單;通過所述硬件處理器根據(jù)所述白名單而調(diào)度所述運(yùn)行隊(duì)列中的線程的執(zhí)行;以及通過所述硬件處理器根據(jù)所述白名單而將所述休眠隊(duì)列中的線程更新到所述運(yùn)行隊(duì)列中。21.根據(jù)權(quán)利要求20所述的方法,還包括:根據(jù)所述白名單而將所述運(yùn)行隊(duì)列中的線程映射到虛擬運(yùn)行隊(duì)列以及虛擬封鎖隊(duì)列;從所述虛擬運(yùn)行隊(duì)列選擇將調(diào)度以用于執(zhí)行的線程;以及暫時(shí)阻止所述虛擬封鎖隊(duì)列中的所述線程的調(diào)度。22.根據(jù)權(quán)利要求20所述的方法,其中所述白名單包括與前臺(tái)應(yīng)用程序、系統(tǒng)關(guān)鍵服務(wù)、時(shí)序關(guān)鍵后臺(tái)應(yīng)用程序或服務(wù)相關(guān)聯(lián)的至少一個(gè)進(jìn)程?!疚臋n編號(hào)】G06F9/50GK103984598SQ201310167882【公開日】2014年8月13日申請(qǐng)日期:2013年5月9日優(yōu)先權(quán)日:2013年2月7日【發(fā)明者】張文彥,吳志聰,陳定倫,陳高斌申請(qǐng)人:宏達(dá)國(guó)際電子股份有限公司