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