TW201432565A - 用於執行緒排程的方法以及系統 - Google Patents

用於執行緒排程的方法以及系統 Download PDF

Info

Publication number
TW201432565A
TW201432565A TW102113616A TW102113616A TW201432565A TW 201432565 A TW201432565 A TW 201432565A TW 102113616 A TW102113616 A TW 102113616A TW 102113616 A TW102113616 A TW 102113616A TW 201432565 A TW201432565 A TW 201432565A
Authority
TW
Taiwan
Prior art keywords
queue
thread
virtual
manager
whitelist
Prior art date
Application number
TW102113616A
Other languages
English (en)
Other versions
TWI512619B (zh
Inventor
Wen-Yen Chang
Chih-Tsung Wu
Ting-Lun Chen
Kao-Pin Chen
Original Assignee
Htc Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Htc Corp filed Critical Htc Corp
Publication of TW201432565A publication Critical patent/TW201432565A/zh
Application granted granted Critical
Publication of TWI512619B publication Critical patent/TWI512619B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/486Scheduler internals

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一種用於在具有用以執行作業系統之硬體處理器的電子裝置中執行執行緒排程的方法。所述方法包含以下步驟:當多個預設條件其中之一滿足時,啟用由硬體處理器執行的虛擬管理器;由執行緒排程器接收用於排程將執行之執行緒的請求;由虛擬管理器屏蔽執行緒排程器以防止其存取第一佇列,所述第一佇列包含處於可執行狀態的多個第一執行緒;將執行緒排程器引導至第一虛擬佇列以選擇將執行的執行緒,第一虛擬佇列包含第一佇列中該些第一執行緒的第一部分,此第一部分與當前正在執行的至少一個應用程序相關;由硬體處理器排程所選定之執行緒的執行。

Description

用於執行緒排程的方法以及系統
本發明是有關於一種用於執行緒排程(thread scheduling)的方法以及系統,且特別是有關於一種以用戶為中心的執行緒排程方法以及系統。
於現今的作業系統中通常會維持一個執行佇列(run-queue),用以選擇其中一個執行緒作為下一排程候選者以用於執行。為考量公平性,每一執行緒被指派時間段以定義執行緒最多能夠按其排程間隔執行多久,另外還設定每一執行緒的優先級以判斷其執行次序。作業系統的排程器按優先次序將所有可執行的執行緒插入到執行佇列,且選取具有最高優先級的執行緒作為將由處理器執行的下一排程候選者。
對於例如智慧型手機、平板電腦(tablet computer)以及個人電腦等消費型電子裝置,用戶體驗為非常重要的考量。然而,消費型電子裝置的計算資源有限,當此類消費型電子裝置的處理器同時執行過多程序(process)或執行緒時,用戶常感到明顯延滯。
因此,本發明揭露用於執行緒排程的方法以及系統,所述方法以及系統可將處理器的排程集中在前景程序以及作業系統的相關程序上以提供順利而流暢的用戶體驗。本發明提供的方法以及系統簡單且易於實施。
本發明提供一種用於在具有用以執行作業系統之硬體處理器的電子裝置中執行執行緒排程的方法。所述作業系統包含執行緒排程器以及佇列管理器。所述方法包含以下步驟:判斷多個預設條件中的至少一者是否滿足;當預設條件其中一者滿足時,啟用由硬體處理器執行的虛擬管理器;由執行緒排程器接收用於排程將執行之執行緒的請求;由虛擬管理器來屏蔽執行緒排程器以防其存取第一佇列,第一佇列包含處於可執行狀態的多個第一執行緒;將執行緒排程器引導至第一虛擬佇列以選擇將執行之執行緒,第一虛擬佇列包含第一佇列中的多個第一執行緒的第一部分,第一部分與當前正在執行的至少一個應用程序相關;由硬體處理器來排程選定執行緒的執行。
本發明另提供一種用於電子裝置中的執行緒排程系統。所述執行緒排程系統包含系統佇列、執行緒排程器、佇列管理器以及虛擬管理器。系統佇列包含用於維持處於第一狀態的多個第一執行緒的第一佇列以及用於維持處於第二狀態的多個第二執行緒的第二佇列。執行緒排程器用以接收用於排程第一執行緒中的至少一者的執行以及更新第二執行緒的狀態的請求。佇列管理器 用以接收用於更新第一佇列以及第二佇列之執行緒的請求。虛擬管理器用以攔截由執行緒排程器以及佇列管理器接收之用於存取第一佇列的請求,更新第一佇列以及第二佇列中的執行緒,且用以根據與當前正在執行的至少一個應用程序相關聯的白名單將第一佇列中的第一執行緒映射到第一虛擬佇列以及第二虛擬佇列中。
本發明另提供一種用於在具有用以執行作業系統之硬體處理器的電子裝置中執行執行緒排程的方法,此作業系統包含執行佇列以及休眠佇列。所述方法包含以下步驟:由硬體處理器產生包含與當前正在執行的應用程序相關之程序的白名單;由硬體處理器根據白名單排程執行佇列中執行緒的執行;由硬體處理器根據白名單將休眠佇列中的執行緒更新到執行佇列中。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
100‧‧‧作業系統
110‧‧‧排程器
120‧‧‧佇列管理器
130‧‧‧虛擬管理器
140‧‧‧系統執行佇列
150‧‧‧系統休眠佇列
160‧‧‧執行緒列表
210‧‧‧切換模組
220‧‧‧白名單
230‧‧‧控制單元
240‧‧‧虛擬執行佇列
250‧‧‧虛擬封鎖佇列
310~940‧‧‧方法步驟
1000‧‧‧電子裝置
1010‧‧‧處理器
1020‧‧‧儲存裝置
圖1繪示本發明實施例之作業系統的部分示意圖。
圖2繪示本發明實施例之虛擬管理器的示意圖。
圖3到圖9繪示本發明實施例之用於執行緒排程的方法的流程的示意圖。
圖10繪示本發明實施例之用於執行緒排程的電子裝置的示 意圖。
圖1繪示本發明實施例之作業系統100的部分示意圖。作業系統100由電子裝置的應用處理器或其它合適處理器執行。電子裝置可為智慧型手機、個人數字助理(PDA)、平板電腦、筆記本電腦或個人電腦。作業系統100包括執行緒排程器110、佇列管理器(queue manager;QM)120、虛擬管理器(virtual manager;VM)130、系統執行佇列140、系統休眠佇列150以及執行緒列表160。
作業系統100可存在一個或一個以上程序,每一程序可包含一個或一個以上執行緒。執行緒列表160記錄作業系統100中的所有執行緒以及每一執行緒的狀態,執行緒的狀態可為正在執行、可執行、休眠或封鎖。正在執行狀態意味執行緒當前由電子裝置的處理器執行。可執行狀態意味執行緒準備好由處理器執行但尚未執行。封鎖狀態意味執行緒正等待預設事件發生,例如來自電子裝置之硬體組件的中斷或由另一執行緒先前獲取的排他性物件的釋放。系統執行佇列140記錄所有可執行之執行緒,而系統休眠佇列150記錄所有封鎖之執行緒。系統執行佇列140按優先次序記錄執行緒,這意味系統執行佇列140中的執行緒是按優先級次序排序。系統執行佇列140的第一執行緒具有最高優先級。另一方面,系統休眠佇列150中的執行緒是根據執行緒的休 眠時間的長度排序的。系統休眠佇列150的第一個執行緒具有最短休眠時間。
排程器110安排電子裝置之處理器的執行緒執行。換句話說,排程器110判斷作業系統100中執行緒的執行次序。QM 120處理希望將執行緒插入到系統執行佇列140以及系統休眠佇列150或從系統執行佇列140以及系統休眠佇列150移除執行緒的所有請求,且確保請求恰當地串行化。
本發明的VM 130設置為排程器110、QM 120、系統執行佇列140與系統休眠佇列150之間的中間層。VM 130代替系統執行佇列140以及系統休眠佇列150與執行緒排程器110以及QM 120互動。VM 130可將排程器110的排程引導至較重要的執行緒,例如與用戶當前關注(focus)的應用程序(application)相關的執行緒,使得這些程序可被優先執行。VM 130可參考執行緒列表160以查詢執行緒的當前狀態。此外,VM 130支持對作業系統100透明化的即時被安裝或卸載的能力,這意味VM 130可靈活地被啟用或停用。
當VM 130被停用時,排程器110以及QM 120不受VM 130影響,且作業系統100表現如一般多任務作業系統一樣。在這種狀況下,排程器110將此時應喚醒的執行緒按優先次序從系統休眠佇列150移動到系統執行佇列140,且接著排程器110選擇系統執行佇列140中的第一執行緒作為將由處理器執行的下一執行緒。選定的執行緒可執行歷時其剩餘時間量和/或系統休眠佇列 150中第一個執行緒的休眠時間中的最小值。
當VM 130被啟用時,VM 130將系統執行佇列140中的執行緒分類為兩部分,且參考用戶活動(例如,當前正在執行的前景應用程序)來管理處理器進行的執行緒執行之排程。下文論述VM 130的處理細節。
圖2繪示根據本發明一實施例之VM 130的示意圖。VM 130包含切換模組210、控制單元230、白名單220、虛擬執行佇列240以及虛擬封鎖佇列250。切換模組210監視一些預定條件,且根據預定條件而停用或啟用VM 130。舉例來說,可根據(例如)處理器的使用率(usage)、匯流排流通量(bus traffic)、處理器的吞吐量(throughput)和/或可影響效率或處理優先級的其它條件來定義預定條件。當處理器的利用率百分比高於第一臨界值時,切換模組210啟用控制單元230以用於將新進執行緒映射到虛擬執行佇列240或虛擬封鎖佇列250中,且用於重定向新進請求的排程。當處理器的利用率百分比低於第二臨界值時,切換模組210停用控制單元230。切換模組210也可在顯示屏幕閒置超過某一時間段(其暗示用戶可能不與電子裝置互動,或顯示屏幕關閉等)的情況下停用控制單元230。
在本發明的一個實施例中,控制單元230可週期性地輪詢切換模組210以檢測切換模組210的接通/切斷狀態。當切換模組210接通時,控制單元230啟用且開始執行用於執行緒排程的方法,所述方法的流程繪示於圖3到圖9中。當切換模組210切 斷時,控制單元230停用且停止執行用於執行緒排程的方法。在本發明的另一實施例中,切換模組210可響應於切換模組210處於接通狀態(其意味滿足預定條件中的至少一者)而用信號通知啟用控制單元230。類似地,當條件未滿足時,切換模組210可用信號通知停用控制單元230。
當控制單元230被啟用時,控制單元230根據白名單220將系統執行佇列140中的執行緒映射到虛擬執行佇列240或虛擬封鎖佇列250中。當系統執行佇列140中執行緒的父程序或相關程序處於白名單220中時,此執行緒會映射到虛擬執行佇列240中;否則,此執行緒會映射到虛擬封鎖佇列250中。白名單220記錄對用戶和/或作業系統100來說重要的程序。在本發明的一個實施例中,白名單220可包含與前景應用程序相關的所有執行緒、對作業系統至關重要的服務以及不能被中斷的其它重要程序。因此,虛擬執行佇列240中的執行緒為從用戶觀點來看相對重要的執行緒,而虛擬封鎖佇列250中的執行緒相比來說較不重要因此可延遲處理。
白名單220可包含靜態白名單以及動態白名單。靜態白名單可包含對作業系統100來說為基本且在任何狀況下不應被封鎖的一個或一個以上預定程序,例如,作業系統100的核心程序、文件系統以及硬體裝置驅動程序。靜態白名單為固定的,這意味靜態白名單中列出的程序將不會被改變或移除。動態白名單包含當前正在執行的其它程序,例如,作業系統100的前景程序。前 景程序為當前顯示在電子裝置之屏幕上的程序。因此,前景程序應具有比其它正在執行之程序較高的優先級。此外,前景程序為當前由用戶使用且當前正與用戶互動的應用程序。不能終止的後景應用程序(例如,音頻媒體播放,例如音樂播放器、收音機等)的程序也會添加到動態白名單中。當所請求的服務與動態白名單中至少一個程序相關時,提供該服務的程序會動態地添加到白名單220中。白名單220由控制單元230維護且在應用程序切換時更新。
舉例來說,當用戶用瀏覽器瀏覽網站時,瀏覽器為前景程序。當用戶單擊瀏覽器的插件以觀看串流視頻時,插件啟動下載並播放視頻的程序,且啟動播放串流視頻之音頻播放的另一程序。由於瀏覽器請求插件的服務,且插件請求下載程序以及音頻播放程序的服務,因此控制單元230將插件程序、下載程序以及音頻播放程序添加到白名單220中。因此,之後與插件、下載以及音頻播放相關的請求將被放入到虛擬執行佇列240中,使得其可被恰當地排程以用於執行。
控制單元230可向作業系統100發送詢問以瞭解哪些程序為前景程序以及哪些程序為後景程序。此詢問可週期性地或在預定時刻執行。舉例來說,控制單元230可在每次控制單元230被啟用時、接收到排程請求時或其它條件發生時發送詢問。在先前系統中,當需要執行執行緒重排程的時候,排程器110將檢查系統封鎖佇列150且使已經過休眠時段的程序處於可執行狀態, 並選擇系統執行佇列140中具有較高優先級的執行緒以用於排程。然而,在本發明中,控制單元230可中斷排程器110的此意圖,且重新引導排程器110從虛擬執行佇列240選擇候選執行緒以用於排程。另外,當由白名單220中的程序針對服務而請求程序時,所請求程序的至少一個執行緒必須被QM 120插入到系統執行佇列140中以提供該服務。當QM 120將要將執行緒插入到系統執行佇列140中時,控制單元230可攔截QM 120的意圖,且根據白名單220將此執行緒放入到虛擬執行佇列240或虛擬封鎖佇列250中。
除了維護控制單元230外,作業系統100還可提供專用應用程序設計接口(application programming interface;API)以供程序修改動態白名單。程序可透過向專用API發送請求來將其自身或其它程序添加到動態白名單中。程序還可透過向專用API發送另一請求來將其自身或其它程序從動態白名單移除。此專用API為白名單220的建構提供較高的靈活性以及效率。
控制單元230透過將對用戶以及作業系統100來說重要的執行緒保持於虛擬執行佇列240中,以及將無關執行緒暫時保持於虛擬封鎖佇列250中而起作用。控制單元230將處理器的執行週期集中在虛擬執行佇列240的執行緒上以加快與用戶緊密相關之執行緒的響應,因此用戶可覺得所有資源專門供其使用且享受流暢體驗。在虛擬管理器130的激活期間暫時不排程虛擬封鎖佇列250中的執行緒來執行。細節陳述于用於執行緒排程的方法 的步驟中,所述方法的流程繪示於圖3到圖9中。
圖3繪示本發明實施例用於執行緒排程之方法的初始化程序流程的示意圖。當切換模組210因預設條件而接通,控制單元230執行圖3的流程以啟用VM 130。首先,在步驟310,切換模組210判斷是否滿足多個預設條件中的至少一者。如果滿足,那麼切換模組210接通。同時電子裝置的中斷將被屏蔽,這是因為中斷應在初始化程序期間被暫時屏蔽,以防止這個時段中的重排程,使得可保證所有佇列一致。預設條件可包含以下各項中的至少一者:硬體處理器的使用率超過預定臨界值、時序關鍵(timing critical)應用程序或服務的需求、耦合到硬體處理器的匯流排的流通量,以及硬體處理器的吞吐量。
接下來,在步驟320處,藉由攔截排程器110以及QM 120對系統執行佇列140的操作來啟用VM 130。在安裝之後,控制單元230可攔截排程器110以及QM 120對系統執行佇列140的各種操作,且對應執行圖5到圖8所示的流程。在圖5到圖8所示的流程中,控制單元230將所攔截之對系統執行佇列140的操作轉換為對虛擬執行佇列240以及虛擬封鎖佇列250的操作。系統休眠佇列150的任何操作可被略過而無任何干擾,這是因為這些操作實際上不影響用戶體驗。
在步驟330中,VM 130產生白名單220,白名單220包含與當前電子裝置正在執行之應用程序相關的程序。白名單220可包含與前景應用程序、系統關鍵服務以及時序關鍵背景應用程 序或服務相關的程序。接著VM 130在步驟340中根據白名單220將含有處於可執行狀態之執行緒的系統執行佇列140中的執行緒映射到虛擬執行佇列240以及虛擬封鎖佇列250中。與白名單中的程序相關的執行緒映射到虛擬執行佇列240,而不在白名單中的執行緒則映射到虛擬封鎖佇列220中。
接下來,在步驟350處,由執行緒排程器110接收用於排程將執行之執行緒的請求。該請求可在正在休眠的執行緒將喚醒或正在執行之執行緒的執行或時間量用完時被接收。響應於此請求,VM 130在步驟360中屏蔽執行緒排程器110以防止其存取系統執行佇列140來選擇和排程將執行的執行緒。如上所述,通常執行緒排程器110將根據優先級從系統執行佇列140選取執行緒。在這個實施例中,VM 130將攔截請求且引導執行緒排程器110從虛擬執行佇列240選擇執行緒以供執行,如步驟370所示。在步驟380中,選定的執行緒可由執行緒排程器110排程以用於執行。
圖4繪示本發明實施例用於執行緒排程之方法的總流程示意圖。首先,在步驟410,以上述方式產生白名單220。將前景程序添加到白名單220中,且接著將服務白名單220中至少一個程序之請求的任何程序也添加到白名單220中。接下來,在步驟420處,根據白名單220將系統執行佇列140的執行緒映射到虛擬執行佇列240以及虛擬封鎖佇列250中。將系統執行佇列140中父程序在白名單220的執行緒移動到虛擬執行佇列240中。按優 先級次序來對虛擬執行佇列240的執行緒進行排序。虛擬執行佇列240中的第一個執行緒具有最高優先級。將系統執行佇列140中父程序不在白名單220的執行緒移動到虛擬封鎖佇列250中。當將執行緒插入到虛擬封鎖佇列250中時,執行緒的當前狀態從可執行或正在執行改變為封鎖,且執行緒的休眠時間設定為極大或無窮大。接下來,在步驟430中,當接收到對應於虛擬執行佇列240中執行緒的請求,允許該執行緒被處理器執行。在步驟440中,當接收到對應於虛擬封鎖佇列250中執行緒的請求,暫時阻止該執行緒被執行。如上所述,映射到虛擬執行佇列240中的執行緒為與對用戶重要之程序相關的執行緒,且因此這些執行緒的執行具有高優先級。然而,虛擬封鎖佇列250中的執行緒並不那麼重要而無需立即執行,且因為計算資源缺乏,這些執行緒將被阻止排程以改進總體性能和用戶體驗。
圖5繪示本發明實施例用於執行緒排程之方法的流程示意圖。當排程器110執行處理器的重排程時,控制單元230執行圖5中的流程。首先,當重排程發生時,排程器110喚醒駐存在系統休眠佇列150中且有限休眠時段已到期的執行緒。在步驟510處,引導排程器110將被排程器110喚醒且父程序在白名單220中的執行緒按優先次序從系統休眠佇列150移動到虛擬執行佇列240中。另外,引導排程器110將被排程器110喚醒且父程序不在白名單220中的執行緒按優先次序從系統休眠佇列150移動到虛擬封鎖佇列250中。
接下來,在步驟520處,引導排程器110選擇虛擬執行佇列240的第一個執行緒作為將執行的下一執行緒。在步驟530處,攔截來自排程器110的決策,此決策包含由排程器110選擇的執行緒。
接下來,在步驟540處,檢查排程器110選擇之執行緒的父程序是否在白名單220中。當排程器110選擇之執行緒的父程序在白名單220中時,流程進行到步驟550以排程處理器來執行排程器110選擇的執行緒。當排程器110選擇之執行緒的父程序不在白名單220中時,流程進行到步驟560以按優先次序將排程器110選擇的執行緒插入到虛擬封鎖佇列250中,且接著再次觸發排程器110的選擇程序以返回到步驟520。
圖6繪示本發明實施例用於執行緒排程之方法的流程示意圖。每當執行緒將被QM 120插入到系統執行佇列140中或從系統執行佇列140刪除時,控制單元230執行圖6中的流程。首先,在步驟610處,檢查來自QM 120的所攔截的操作是插入還是刪除。當所攔截的操作為插入執行緒時,流程進行到步驟620以按優先次序將執行緒插入到虛擬執行佇列240中。在步驟630處,喚醒虛擬封鎖佇列250中父程序在白名單220的執行緒。在步驟640處,從虛擬封鎖佇列250移除被喚醒的執行緒。在步驟650處,按優先次序將被喚醒的執行緒插入到虛擬執行佇列240中。步驟630到650的目的為在切換前景程序時,將與新的前景程序相關的執行緒移動到虛擬執行佇列240中。
在步驟610處,當所攔截的操作為刪除執行緒時,流程進行到步驟660以簡單地將執行緒從虛擬執行佇列240移除。
圖7繪示本發明實施例用於執行緒排程之方法的流程示意圖。當正在執行的執行緒(當前被處理器執行的執行緒)請求由虛擬封鎖佇列250中的封鎖執行緒所獲取的排他性物件(exclusive object)時,控制單元230執行圖7中的流程。排他性物件可為共享資源,例如,揚聲器或印表機。或者,排他性物件可為同步物件,例如,共享信號(semaphore)、自旋鎖(spinlock)或互斥鎖。如果這個問題不解決,那麼可能產生死鎖(deadlock),這是因為只要VM 130接通,虛擬封鎖佇列250中的封鎖執行緒絕不會被執行進而釋放排他性物件。當正在執行的執行緒必須等待排他性物件時,QM 120必須改變正在執行的執行緒的狀態。控制單元230可攔截來自QM 120的此操作且檢查排他性物件的擁有者。一旦發現擁有者在虛擬封鎖佇列250中休眠,控制單元230就執行圖7中的流程以避免死鎖。
首先,在步驟710處,喚醒封鎖執行緒。在步驟720處,喚醒虛擬封鎖佇列250中父程序在白名單220的執行緒。在步驟730處,從虛擬封鎖佇列250移除在步驟710以及720處被喚醒的執行緒。在步驟740處,按優先次序將在步驟710以及720處被喚醒的執行緒插入到虛擬執行佇列240中。
圖8繪示本發明實施例用於執行緒排程之方法的流程示意圖。當前景程序從先前前景序切換到下一前景程序時,控制單 元230執行圖8中的流程。首先,在步驟810處,清除動態白名單。由於動態白名單記錄與前景程序相關的程序,因此當前景程序切換時,動態白名單必須重設以及重建。在步驟820處,將下一前景程序添加到動態白名單中。在步驟830處,喚醒虛擬封鎖佇列250中父程序為下一前景程序的執行緒。在步驟840處,從虛擬封鎖佇列250移除被喚醒的執行緒。在步驟850處,將被喚醒的執行緒按優先次序插入到虛擬執行佇列240中。至於在先前前景程序的動態白名單中且仍在虛擬執行佇列240中的執行緒,將在處理器的下一重排程時依圖4的流程把這些執行緒移動到虛擬封鎖佇列250中。
圖9繪示本發明實施例用於執行緒排程之方法的流程示意圖。當切換模組210因應預設條件切斷時,控制單元230執行圖9中的流程以關閉VM 130。圖9中的流程可在圖3的步驟330之後執行。
首先,在步驟910處,屏蔽電子裝置的中斷以防止重排程且保證所有佇列的一致性。在步驟920處,藉由按優先次序合併虛擬執行佇列240與虛擬封鎖佇列250的執行緒來重建系統執行佇列140。在圖4所示的初始化程序之後,系統執行佇列140變成空的,然而當VM 130關閉時,排程器110以及QM 120會直接存取系統執行佇列140,因此,必須重建系統執行佇列140。在步驟930處,藉由取消在圖4的步驟420進行的攔截排程器110以及QM 120對系統執行佇列140的操作來卸載(uninstall)VM 130。VM 130對排程器110、QM 120以及作業系統100的任何影響都將被轉返。接下來,在步驟940處,取消屏蔽電子裝置的中斷。在步驟940之後,VM 130完全關閉,且作業系統100表現得如同VM 130不存在一樣。
圖10繪示本發明實施例可執行執行緒排程之電子裝置1000的示意圖。電子裝置1000包含處理器1010以及儲存裝置1020。處理器1010可執行包含VM 130以及控制單元230的作業系統100。換句話說,處理器1010可執行用於執行緒排程的方法,所述方法流程繪示於圖3到圖9中。儲存裝置1020耦接至處理器1010。儲存裝置1020可存儲系統執行佇列140、系統休眠佇列150、虛擬執行佇列240、虛擬封鎖佇列250以及白名單220。
總之,本發明根據可執行之執行緒與前景程序之間的關係來對作業系統中的可執行之執行緒進行分類,且調整處理器的排程以將執行週期集中在與前景程序緊密相關的執行緒上。因此,前景程序的操作為流暢且反應靈敏的,這改進了用戶體驗。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
310~380‧‧‧方法步驟

Claims (22)

  1. 一種用於在具有用以執行一作業系統之一硬體處理器的一電子裝置中執行執行緒排程的方法,其中所述作業系統包括一執行緒排程器以及一佇列管理器,所述方法包括:判斷是否滿足多個預設條件中的至少一者;當滿足所述多個預設條件中的一者時,啟用由所述硬體處理器執行的虛擬管理器;由所述執行緒排程器接收用於排程將執行之執行緒的請求;由所述虛擬管理器屏蔽所述執行緒排程器以防止存取第一佇列,所述第一佇列包括處於可執行狀態的多個第一執行緒;將所述執行緒排程器導引至包含所述第一佇列的所述多個第一執行緒的第一部分的一第一虛擬佇列以選擇將執行的所述執行緒,所述第一執行緒的所述第一部分與當前正在執行的至少一個應用程序相關;以及由所述硬體處理器來排程選定的所述執行緒的執行。
  2. 如申請專利範圍第1項所述的方法,更包括:由所述虛擬管理器產生包括與當前正在執行的所述應用程序相關之程序的白名單;以及由所述虛擬管理器根據所述多個第一執行緒對所述白名單的從屬性,將所述多個第一執行緒映射到所述第一虛擬佇列以及一第二虛擬佇列。
  3. 如申請專利範圍第2項所述的方法,其中所述白名單包 括與前景應用程序、系統關鍵服務、時序關鍵背景應用程序或服務相關的至少一個程序。
  4. 如申請專利範圍第2項所述的方法,更包括:根據當前正在所述電子裝置上執行的應用程序來更新所述白名單。
  5. 如申請專利範圍第2項所述的方法,更包括:由佇列管理器來接收用於插入執行緒的請求;由所述虛擬管理器屏蔽所述佇列管理器以防止存取所述第一佇列;由所述虛擬管理器根據所述白名單判斷所述第二虛擬佇列中與所插入的執行緒相關的執行緒;以及由所述虛擬管理器將所插入的執行緒以及所述第二虛擬佇列中相關的執行緒移動到所述第一虛擬佇列中。
  6. 如申請專利範圍第2項所述的方法,更包括:由所述排程器接收對所述第一佇列中執行緒的請求;由所述虛擬管理器攔截所述請求;判斷所請求的執行緒是否在所述第二虛擬佇列中;當所請求的執行緒在所述第二虛擬佇列中時,由所述虛擬管理器根據所述白名單判斷所述第二虛擬佇列中與所請求的執行緒相關的執行緒;以及由所述虛擬管理器將所請求的執行緒以及所述第二虛擬佇列中相關的執行緒移動到所述第一虛擬佇列中。
  7. 如申請專利範圍第2項所述的方法,更包括:判斷當前正在所述電子裝置上執行的前景應用程序;於當前正在執行的所述前景應用程序被切換時,根據新的前景應用程序更新所述白名單;以及根據所述更新的白名單來更新所述第一虛擬佇列以及所述第二虛擬佇列。
  8. 如申請專利範圍第2項所述的方法,更包括:由所述排程器來判斷所述第二佇列中的多個第二執行緒的狀態改變,所述多個第二執行緒處於休眠狀態;當所述第二執行緒中的至少一者的狀態被改變時,向所述佇列管理器發送用於插入具有狀態改變的所述第二執行緒的請求;由所述虛擬管理器從所述佇列管理器攔截所述用於插入具有狀態改變的所述第二執行緒的請求;以及根據所述白名單而將具有狀態改變的所述第二執行緒插入到所述第一虛擬佇列或所述第二虛擬佇列中。
  9. 如申請專利範圍第1項所述的方法,其中所述預設條件包括以下各項中的至少一者:所述硬體處理器的使用率超過預定臨界值、時序關鍵應用程序或服務的需求、耦接到所述硬體處理器之匯流排的流通量,以及所述硬體處理器的吞吐量。
  10. 如申請專利範圍第1項所述的方法,更包括:由所述佇列管理器來接收用於刪除執行緒的請求;由所述虛擬管理器來屏蔽所述佇列管理器以防止存取所述第 一佇列;以及從所述第一虛擬佇列移除所述刪除的執行緒。
  11. 如申請專利範圍第1項所述的方法,更包括:判斷是否未滿足所述多個預設條件;當未滿足所述預設條件時,由所述虛擬管理器將所述第一虛擬佇列以及所述第二虛擬佇列中的執行緒映射回到所述第一佇列;以及停用所述虛擬管理器。
  12. 一種用於電子裝置中的執行緒排程系統,包括:一系統佇列,包括用於維持處於第一狀態的多個第一執行緒的第一佇列,以及用於維持處於第二狀態的多個第二執行緒的第二佇列;一執行緒排程器,用以接收用於排程所述第一執行緒中的至少一者的執行以及更新所述第二執行緒的狀態的請求;一佇列管理器,用以接收用於更新所述第一佇列以及所述第二佇列之執行緒的請求;以及一虛擬管理器,用以攔截由所述執行緒排程器以及所述佇列管理器接收之用於存取所述第一佇列的請求,更新所述第一佇列以及所述第二佇列中的執行緒,且用以根據與當前正在執行的至少一個應用程序相關的白名單而將所述第一佇列中的所述第一執行緒映射到第一虛擬佇列以及第二虛擬佇列中。
  13. 如申請專利範圍第12項所述的執行緒排程系統,其中所 述虛擬管理器更包括:一切換模組,用以檢測多個預設條件;以及一控制單元,用以於當所述多個預設條件中的至少一者滿足時而被啟用,且用以攔截所述請求。
  14. 如申請專利範圍第13項所述的執行緒排程系統,其中所述多個預設條件包括以下各項中的至少一者:硬體處理器的使用率超過預定臨界值、時序關鍵應用程序或服務的需求、耦接到所述硬體處理器之匯流排的流通量,以及所述硬體處理器的吞吐量。
  15. 如申請專利範圍第13項所述的執行緒排程系統,其中所述控制單元更用以於當所述執行緒排程器接收到用於排程所述第一執行緒中至少一者之執行的所述請求時,屏蔽所述執行緒排程器以防止存取所述第一佇列,且將所述執行緒排程器導引至所述第一虛擬佇列以選擇將執行的所述第一執行緒。
  16. 如申請專利範圍第13項所述的執行緒排程系統,其中所述控制單元更用以攔截由所述佇列管理器接收之插入新執行緒的請求,屏蔽所述佇列管理器以防止存取所述第一佇列,以及根據所述白名單將所述新執行緒以及所述第二虛擬佇列中與所述新執行緒相關的所述第一執行緒移動到所述第一虛擬佇列中。
  17. 如申請專利範圍第13項所述的執行緒排程系統,其中所述控制單元更用以將所述第一虛擬佇列以及所述第二虛擬佇列更新回所述第一佇列,且用以於當未滿足所述多個預設條件時而停用。
  18. 如申請專利範圍第12項所述的執行緒排程系統,其中所述白名單包括與前景應用程序、系統關鍵服務、時序關鍵背景應用程序或服務相關的至少一個程序。
  19. 如申請專利範圍第12項所述的執行緒排程系統,其中所述虛擬管理器更用以判斷當前正在執行之所述至少一個應用程序的狀態,且當所述至少一個應用程序被切換時更新所述白名單。
  20. 一種用於在具有用以執行作業系統之硬體處理器的電子裝置中執行執行緒排程的方法,其中所述作業系統包括執行佇列以及休眠佇列,所述方法包括:由所述硬體處理器產生包括與當前正在執行的應用程序相關之程序的白名單;由所述硬體處理器根據所述白名單排程所述執行佇列中的執行緒的執行;以及由所述硬體處理器根據所述白名單將所述休眠佇列中的執行緒更新到所述執行佇列中。
  21. 如申請專利範圍第20項所述的方法,更包括:根據所述白名單將所述執行佇列中的執行緒映射到虛擬執行佇列以及虛擬封鎖佇列;從所述虛擬執行佇列選擇將排程以用於執行的執行緒;以及暫時阻止所述虛擬封鎖佇列中的所述執行緒的排程。
  22. 如申請專利範圍第20項所述的方法,其中所述白名單包括與前景應用程序、系統關鍵服務、時序關鍵背景應用程序或服務相關的至少一個程序。
TW102113616A 2013-02-07 2013-04-17 用於執行緒排程的方法以及系統 TWI512619B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/762,329 US9274832B2 (en) 2013-02-07 2013-02-07 Method and electronic device for thread scheduling

Publications (2)

Publication Number Publication Date
TW201432565A true TW201432565A (zh) 2014-08-16
TWI512619B TWI512619B (zh) 2015-12-11

Family

ID=51206140

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102113616A TWI512619B (zh) 2013-02-07 2013-04-17 用於執行緒排程的方法以及系統

Country Status (4)

Country Link
US (1) US9274832B2 (zh)
CN (1) CN103984598B (zh)
DE (1) DE102013217995B4 (zh)
TW (1) TWI512619B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI639955B (zh) * 2017-11-06 2018-11-01 晨星半導體股份有限公司 多處理器系統及其處理器管理方法

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9501644B2 (en) * 2010-03-15 2016-11-22 F-Secure Oyj Malware protection
GB2521155B (en) * 2013-12-10 2021-06-02 Advanced Risc Mach Ltd Configuring thread scheduling on a multi-threaded data processing apparatus
CN106575385B (zh) * 2014-08-11 2019-11-05 艾玛迪斯简易股份公司 自动售票
EP2985721A1 (en) * 2014-08-11 2016-02-17 Amadeus S.A.A. Automated ticketing
CN104239094B (zh) * 2014-08-29 2017-12-08 小米科技有限责任公司 后台应用程序的控制方法、装置及终端设备
CN105589633A (zh) * 2014-10-22 2016-05-18 中兴通讯股份有限公司 一种实现终端应用切换的方法及装置
KR102279027B1 (ko) * 2014-12-03 2021-07-19 삼성전자주식회사 멀티 스레드를 실행하는 방법 및 장치
US9916178B2 (en) * 2015-09-25 2018-03-13 Intel Corporation Technologies for integrated thread scheduling
US11023233B2 (en) 2016-02-09 2021-06-01 Intel Corporation Methods, apparatus, and instructions for user level thread suspension
CN105893120B (zh) * 2016-04-21 2019-07-30 北京京东尚科信息技术有限公司 一种线程同步资源的获取方法和装置
CN106020893B (zh) * 2016-05-26 2019-03-15 北京小米移动软件有限公司 应用安装的方法及装置
CN105979095B (zh) * 2016-06-27 2019-08-16 努比亚技术有限公司 移动终端及应用功耗控制方法
US10540300B2 (en) * 2017-02-16 2020-01-21 Qualcomm Incorporated Optimizing network driver performance and power consumption in multi-core processor-based systems
US10560394B2 (en) * 2017-09-22 2020-02-11 Cisco Technology, Inc. Dynamic transmission side scaling
CN108958911B (zh) * 2018-05-30 2022-02-08 北京小米移动软件有限公司 进程的控制方法及装置
CN112462921B (zh) 2019-09-09 2023-07-21 中兴通讯股份有限公司 应用程序管理方法、装置和存储介质
CN111399994B (zh) * 2019-11-27 2023-10-10 杭州海康威视系统技术有限公司 请求调度方法、装置、电子设备及存储介质
CN110989820A (zh) * 2019-11-29 2020-04-10 上海庆科信息技术有限公司 处理器功耗的控制方法、装置、处理器及电子装置
CN111651261B (zh) * 2020-07-07 2023-04-07 Oppo(重庆)智能科技有限公司 进程管理方法、装置、终端设备及计算机可读存储介质
CN113032123B (zh) * 2021-04-02 2024-05-14 深圳市大富网络技术有限公司 一种远程npl运行环境的线程调度方法、系统及相关装置
CN116501475B (zh) * 2023-06-21 2023-10-20 杭州炬华科技股份有限公司 线程调度方法、系统以及介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4642756A (en) * 1985-03-15 1987-02-10 S & H Computer Systems, Inc. Method and apparatus for scheduling the execution of multiple processing tasks in a computer system
US5812844A (en) 1995-12-07 1998-09-22 Microsoft Corporation Method and system for scheduling the execution of threads using optional time-specific scheduling constraints
US7210146B2 (en) * 2001-06-18 2007-04-24 Microsoft Corporation Sleep queue management
US7302684B2 (en) * 2001-06-18 2007-11-27 Microsoft Corporation Systems and methods for managing a run queue
WO2004059481A2 (en) 2002-12-16 2004-07-15 Globespanvirata Incorporated System and method for scheduling thread execution
US7536689B2 (en) 2003-01-10 2009-05-19 Tricerat, Inc. Method and system for optimizing thread scheduling using quality objectives
US7458077B2 (en) 2004-03-31 2008-11-25 Intel Corporation System and method for dynamically adjusting a thread scheduling quantum value
US20050251806A1 (en) * 2004-05-10 2005-11-10 Auslander Marc A Enhancement of real-time operating system functionality using a hypervisor
CN1740974A (zh) * 2005-09-14 2006-03-01 艾默生网络能源有限公司 一种线程调度管理方法和系统
US8959515B2 (en) * 2006-01-18 2015-02-17 International Business Machines Corporation Task scheduling policy for limited memory systems
US7853950B2 (en) 2007-04-05 2010-12-14 International Business Machines Corporarion Executing multiple threads in a processor
CN100578459C (zh) * 2007-06-12 2010-01-06 华为技术有限公司 线程调度方法及其装置
US8839255B2 (en) 2009-07-23 2014-09-16 Empire Technology Development Llc Scheduling of threads by batch scheduling
US8904399B2 (en) * 2010-03-15 2014-12-02 Qualcomm Incorporated System and method of executing threads at a processor
US8423750B2 (en) * 2010-05-12 2013-04-16 International Business Machines Corporation Hardware assist thread for increasing code parallelism
US9141422B2 (en) * 2010-05-18 2015-09-22 Microsoft Technology Licensing, Llc Plug-in task scheduler

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI639955B (zh) * 2017-11-06 2018-11-01 晨星半導體股份有限公司 多處理器系統及其處理器管理方法

Also Published As

Publication number Publication date
CN103984598A (zh) 2014-08-13
CN103984598B (zh) 2017-09-29
US9274832B2 (en) 2016-03-01
DE102013217995B4 (de) 2019-11-14
DE102013217995A1 (de) 2014-08-07
US20140223437A1 (en) 2014-08-07
TWI512619B (zh) 2015-12-11

Similar Documents

Publication Publication Date Title
TWI512619B (zh) 用於執行緒排程的方法以及系統
US10908954B2 (en) Quality of service classes
JP5723968B2 (ja) 便宜的マルチタスキング
JP6199477B2 (ja) ゲストオペレーティングシステムおよび仮想プロセッサとともにハイパーバイザを使用するシステムおよび方法
WO2018082570A1 (zh) I/o请求的调度方法及装置
US9904575B2 (en) System and method for selective timer rate limiting
US20170371725A1 (en) Hardware multi-threading co-scheduling for parallel processing systems
KR101702698B1 (ko) 적응형 프로세스 중요도
US8056083B2 (en) Dividing a computer job into micro-jobs for execution
US9411649B2 (en) Resource allocation method
JP2013232207A (ja) コンピュータマイクロジョブを中断せずに実行するようスケジュールするための方法、システムおよび装置
US20080184233A1 (en) Abstracting a multithreaded processor core to a single threaded processor core
KR101551321B1 (ko) 휴대용 컴퓨팅 디바이스에서 요청들을 스케쥴링하기 위한 방법 및 시스템
JP2005100264A (ja) スケジューリング方法および情報処理システム
Inam et al. The multi-resource server for predictable execution on multi-core platforms
US11422857B2 (en) Multi-level scheduling
WO2024119988A1 (zh) 多cpu环境下的进程调度方法、装置、电子设备和介质
GB2525002A (en) Data processing systems
JP2008108075A (ja) タスク切替え制御方法及びコンピュータシステム
Huh et al. Cross‐layer resource control and scheduling for improving interactivity in Android
CN114090196A (zh) 一种协程切换的方法、装置及设备
JP5299869B2 (ja) コンピュータマイクロジョブ
WO2017203274A1 (en) Methods for reconciling interrupt conflicts
JP2018536945A (ja) タスクをタイムベーススケジューリングする方法及び装置
Seo et al. Catching two rabbits: adaptive real‐time support for embedded Linux

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees