本發明實施例屬于電子技術領域,尤其涉及一種終端及其進程調度優化方法。
背景技術:
隨著智能終端技術的不斷發展,手機、平板電腦等智能終端的內核數量也在不斷增加,提高了智能終端的運行速度。智能終端的內核通常按照其進程隊列中的進程優先級順序來調度并運行進程。
然而,在進程的實際運行過程中,某些優先級較低的進程會惡意的將自身的調度的順序調整到前面,以使內核優先運行,造成正在運行的其他進程的運行空間被擠占,導致智能終端的內核使用率過高而出現卡頓現象。
技術實現要素:
本發明實施例提供一種終端及其進程調度優化方法,能夠確保終端的進程隊列中的進程按照預設優先級順序依次被調度和運行,保證終端的進程調度穩定有序的進行,提高終端運行的流暢程度。
本發明實施例一方面提供一種終端的進程調度優化方法,其包括:
按照預設優先級順序運行進程隊列中的進程,并將所述進程隊列中優先級最高的第一進程標記為前臺進程;
在運行所述第一進程的過程中,若檢測到將第二進程設置為前臺進程的請求,則判斷所述第二進程是否屬于前臺運行的進程;
若所述第二進程不屬于前臺運行的進程,則不響應所述請求,并將所述第二進程設置為后臺進程。
本發明實施例另一方面還提供一種終端,所述終端包括:
運行標記單元,用于按照預設優先級順序運行進程隊列中的進程,并將所述進程隊列中優先級最高的第一進程標記為前臺進程;
檢測單元,用于在運行所述第一進程的過程中,若檢測到將第二進程設置為前臺進程的請求,則判斷所述第二進程是否屬于前臺運行的進程;
設置單元,用于若所述第二進程不屬于前臺運行的進程,則不響應所述請求,并將所述第二進程設置為后臺進程。
本發明實施例通過將終端進程隊列中優先級最高的進程標記為前臺進程,并在檢測到將第二進程設置為前臺進程的請求時,若判斷該第二進程不屬于前臺進程,將該第二進程設置為后臺進程,能夠確保終端的進程隊列中的進程按照預設優先級順序依次被調度和運行,保證終端的進程調度穩定有序的進行,提高終端運行的流暢程度。
附圖說明
為了更清楚地說明本發明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1是本發明的一個實施例提供的終端的進程調度優化方法的流程框圖;
圖2是本發明的一個實施例提供的終端的進程調度優化方法的流程框圖;
圖3是本發明的一個實施例提供的終端的結構框圖;
圖4是本發明的一個實施例提供的終端的結構框圖;
圖5是本發明的一個實施例提供的終端的結構框圖。
具體實施方式
為了使本技術領域的人員更好地理解本發明方案,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚地描述,顯然,所描述的實施例是本發明一部分的實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都應當屬于本發明保護的范圍。
本發明的說明書和權利要求書及上述附圖中的術語“包括”以及它們任何變形,意圖在于覆蓋不排他的包含。例如包含一系列步驟或單元的過程、方法或系統、產品或設備沒有限定于已列出的步驟或單元,而是可選地還包括沒有列出的步驟或單元,或可選地還包括對于這些過程、方法、產品或設備固有的其它步驟或單元。此外,術語“第一”、“第二”和“第三”等是用于區別不同對象,而非用于描述特定順序。
如圖1所示,為本發明的一個實施例提供一種終端的進程調度優化方法,其包括:
步驟S10:按照預設優先級順序運行進程隊列中的進程,并將所述進程隊列中優先級最高的第一進程標記為前臺進程。
在具體應用中,預設優先級順序具體可以是指按照進程隊列中進程的排列順序。在其他應用中,該預設優先級順序也可以是指按照進程隊列中進程的重要程度排列的順序,也可以是按照進程所需的運行空間占比排列的順序。
在具體應用中,可通過在終端的內核系統的線程創建接口(繼承(Thread)類或獵取(Runnable)接口)的調度(run)方法中寫入設置進程優先級為前臺進程的函數THREAD_PRIORITY_FOREGROUND,來實現將進程隊列中優先級最高的第一進程標記為前臺進程。
在一個實施例中,步驟S10具體可以包括:按照進程隊列中進程的重要程度和所需的運行空間占比,優先運行重要程度較高或運行空間占比較小的進程。
如圖2所示,在本發明的一個實施例中,步驟S10具體可以包括:
步驟S11:按照進程隊列中各進程的排列順序運行所述進程隊列中的進程;
步驟S12:將排在所述進程隊列首位的優先級最高的第一進程標記為前臺進程。
在具體應用中,排在進程隊列前面的進程將會被優先運行處理,排隊的時間越長被處理的幾率就越大。
步驟S20:在運行所述第一進程的過程中,若檢測到將第二進程設置為前臺進程的請求,則判斷所述第二進程是否屬于前臺運行的進程。
在具體應用中,所述請求由想要將其進程優先級設置為前臺進程的第二進程發送給終端的系統內核。
在一個實施例中,步驟S20具體包括:通過判斷所述第二進程是否為所述第一進程,來判斷所述第二進程是否屬于前臺運行的進程,若所述第二進程是否為所述第一進程,則所述第二進程不屬于前臺運行的進程。
在一個實施例中,步驟S20具體包括:通過判斷所述第二進程是否已被標記為前臺進程,來判斷所述第二進程是否屬于前臺運行的進程,若所述第二進程未被標記為前臺進程,則所述第二進程不屬于前臺運行的進程。
步驟S30:若所述第二進程不屬于前臺運行的進程,則不響應所述請求,并將所述第二進程設置為后臺進程。
本實施例中,前臺進程具體是指進程隊列中優先級最高、終端正在運行的進程,后臺進程具體是指在進程隊列中排隊等待運行的進程。進程通常是指應用程序,一個進程包含多個正在運行的線程。
在一個實施例中,步驟S30具體包括:將所述第二進程的優先級設置為低于所述前臺進程的優先級,以將所述第二進程設置為后臺進程。
下面以一個具體實例來說明本發明實施例的工作原理:
當系統內核正在運行某一個前臺進程(例如,游戲程序)時,終端的QQ通訊錄同步工具觸發了一個網絡聯系人同步請求,則系統內核啟動一個后臺進程“同步聯系人進程(process sync contact)”,該QQ通訊錄同步工具為了使系統內核優先運行同步聯系人進程,向系統內核發一個將同步聯系人進程的優先級設置為前臺進程的請求,具體表現為在系統內核的線程創建接口(繼承(Thread)類或獵取(Runnable)接口)的調度(run)方法中寫入設置同步聯系人進程為前臺進程的函數THREAD_PRIORITY_FOREGROUND。
系統內核檢測到QQ通訊錄同步工具的這個優先級設置行為時,判斷同步聯系人進程是否屬于前臺進程,若不是,則拒絕QQ通訊錄同步工具的優先級設置請求,并將同步聯系人進程的優先級設置為后臺進程,具體表現為在系統內核的線程創建接口(繼承(Thread)類或獵取(Runnable)接口)的調度(run)方法中寫入設置同步聯系人進程為后臺進程的函數THREAD_PRIORITY_BACKGROUND,以避免同步聯系人進程與游戲程序搶占系統內核的運行空間,從而保證了系統內核運行的流暢性。
本發明實施例通過將終端進程隊列中優先級最高的進程標記為前臺進程,并在檢測到將第二進程設置為前臺進程的請求時,若判斷該第二進程不屬于前臺進程,將該第二進程設置為后臺進程,能夠確保終端的進程隊列中的進程按照預設優先級順序依次被調度和運行,保證終端的進程調度穩定有序的進行,提高終端運行的流暢程度。
如圖3所示,本發明的一個實施例提供一種終端101,用于執行圖1所對應的實施例中的方法步驟,其包括:
運行標記單元10,用于按照預設優先級順序運行進程隊列中的進程,并將所述進程隊列中優先級最高的第一進程標記為前臺進程;
檢測單元20,用于在運行所述第一進程的過程中,若檢測到將第二進程設置為前臺進程的請求,則判斷所述第二進程是否屬于前臺運行的進程;
設置單元30,用于若所述第二進程不屬于前臺運行的進程,則不響應所述請求,并將所述第二進程設置為后臺進程。
在一個實施例中,運行標記單元10,具體可以用于:按照進程隊列中進程的重要程度和所需的運行空間占比,優先運行重要程度較高或運行空間占比較小的進程。
如圖4所示,在本發明的一個實施例中,運行標記單元10具體可以包括:
運行單元11,用于按照進程隊列中各進程的排列順序運行所述進程隊列中的進程;
標記單元12,用于將排在所述進程隊列首位的優先級最高的第一進程標記為前臺進程。
在一個實施例中,檢測單元20具體用于:通過判斷所述第二進程是否為所述第一進程,來判斷所述第二進程是否屬于前臺運行的進程,若所述第二進程是否為所述第一進程,則所述第二進程不屬于前臺運行的進程。
在一個實施例中,檢測單元20具體用于:通過判斷所述第二進程是否已被標記為前臺進程,來判斷所述第二進程是否屬于前臺運行的進程,若所述第二進程未被標記為前臺進程,則所述第二進程不屬于前臺運行的進程。
在一個實施例中,設置單元30具體用于:若所述第二進程不屬于前臺運行的進程,則不響應所述請求,并將所述第二進程設置為后臺進程。
本發明實施例通過將終端進程隊列中優先級最高的進程標記為前臺進程,并在檢測到將第二進程設置為前臺進程的請求時,若判斷該第二進程不屬于前臺進程,將該第二進程設置為后臺進程,能夠確保終端的進程隊列中的進程按照預設優先級順序依次被調度和運行,保證終端的進程調度穩定有序的進行,提高終端運行的流暢程度。
如圖5所示,本發明的一個實施例提供一種終端102,其包括:
處理器(processor)110,通信接口(Communications Interface)120,存儲器(memory)130和總線140。
處理器110,通信接口120,存儲器130,通過總線140完成相互間的通信。
通信接口120,用于與外界設備,例如,個人電腦、智能手機等通信。
處理器110,用于執行程序131;
具體地,程序131可以包括程序代碼,所述程序代碼包括計算機指令指令。
處理器110可能是一個中央處理器CPU,或者是特定集成電路ASIC(Application Specific Integrated Circuit),或者是被配置成實施本發明實施例的一個或多個集成電路。
存儲器130,用于存放程序131。存儲器130可能包含高速RAM存儲器,也可能還包括非易失性存儲器(non-volatile memory),例如至少一個磁盤存儲器。程序131具體可以包括:
按照預設優先級順序運行進程隊列中的進程,并將所述進程隊列中優先級最高的第一進程標記為前臺進程;
在運行所述第一進程的過程中,若檢測到將第二進程設置為前臺進程的請求,則判斷所述第二進程是否屬于前臺運行的進程;
若所述第二進程不屬于前臺運行的進程,則不響應所述請求,并將所述第二進程設置為后臺進程。
在一個實施例中,程序131具體還可以包括:
按照進程隊列中各進程的排列順序運行所述進程隊列中的進程;
將排在所述進程隊列首位的優先級最高的第一進程標記為前臺進程。
在一個實施例中,程序131具體還可以包括:
判斷所述第二進程是否為所述第一進程,若否,則所述第二進程不屬于前臺運行的進程。
在一個實施例中,程序131具體還可以包括:
判斷所述第二進程是否已被標記為前臺進程,若否,則所述第二進程不屬于前臺運行的進程。
在一個實施例中,程序131具體還可以包括:
將所述第二進程的優先級設置為低于所述前臺進程的優先級,以將所述第二進程設置為后臺進程。
本發明所有實施例中的單元或子單元,可以通過通用集成電路,例如CPU(Central Processing Unit,中央處理器),或通過ASIC(Application Specific Integrated Circuit,專用集成電路)來實現。
本發明實施例方法中的步驟可以根據實際需要進行順序調整、合并和刪減。
本發明實施例裝置中的單元可以根據實際需要進行合并、劃分和刪減。
本領域普通技術人員可以理解實現上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質中,該程序在執行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory,ROM)或隨機存儲記憶體(Random Access Memory,RAM)等。
以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護范圍之內。