欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種處理器調(diào)度方法及系統(tǒng)與流程

文檔序號:12363118閱讀:194來源:國知局
一種處理器調(diào)度方法及系統(tǒng)與流程

本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種處理器調(diào)度方法及系統(tǒng)。



背景技術(shù):

雙系統(tǒng)智能終端可以同時運行2個獨立的系統(tǒng)(例如安全系統(tǒng)和標準系統(tǒng)),兩個系統(tǒng)的應(yīng)用也都是獨立的。這兩個系統(tǒng)都是運行在虛擬層之上的,并且該虛擬層進行處理器調(diào)度時候,所采用的處理器調(diào)度算法是基于進程優(yōu)先級的調(diào)度算法。進程處于生存周期里有三種狀態(tài):就緒、執(zhí)行和阻塞,這三種狀態(tài)之間的切換都由進程調(diào)度程序控制。進程通常被定義為一個正在運行的程序的實例,它是資源分配的單位,進程可以支持多個線程,一個進程中的多個線程共享相同的內(nèi)存地址空間。

因為現(xiàn)有的雙系統(tǒng)智能終端是基于進程優(yōu)先級的調(diào)度算法,而進程間切換會比較消耗資源,所以進程間切換頻繁的話,效率會比較差,處理器資源的利用率就不會很高。并且當最高優(yōu)先級任務(wù)在運行時,它將持續(xù)占有CPU直到結(jié)束或阻塞,否則其他任務(wù)無法獲得運行機會,因此系統(tǒng)的實時性會比較差。

綜上可知,現(xiàn)有技術(shù)在實際使用上顯然存在不便與缺陷,所以有必要加以改進。



技術(shù)實現(xiàn)要素:

針對上述的缺陷,本發(fā)明的目的在于提供一種處理器調(diào)度方法及系統(tǒng),其提升了不同和相同優(yōu)先級線程之間在占有CPU的切換效率,也兼顧了線程間占有處理器資源的公平性,系統(tǒng)實時性高。

為了實現(xiàn)上述目的,本發(fā)明提供一種處理器調(diào)度方法,所述方法包括如下步驟:

接收線程優(yōu)先級或時間片修改指令;

修改線程的優(yōu)先級或時間片并獲取處于就緒狀態(tài)且優(yōu)先級最高的線程;

當前處于運行狀態(tài)的線程退出內(nèi)核獨占區(qū)時,將所述處于就緒狀態(tài)且優(yōu)先 級最高的線程按照其時間片長短在處理器中執(zhí)行。

根據(jù)本發(fā)明的處理器調(diào)度方法,所述修改線程的優(yōu)先級或時間片并獲取處于就緒狀態(tài)且優(yōu)先級最高的線程的步驟之后還包括:

判斷所述處于就緒狀態(tài)且優(yōu)先級最高的線程的優(yōu)先級是否比所述當前處于運行狀態(tài)的線程的優(yōu)先級高;

若是則所述處理器內(nèi)核中斷執(zhí)行所述當前處于運行狀態(tài)的線程,否則等待所述當前處于運行狀態(tài)的線程的時間片結(jié)束。

根據(jù)本發(fā)明的處理器調(diào)度方法,所述方法還包括:

在所述處于就緒狀態(tài)且優(yōu)先級最高的線程具有多個時,按照各線程的時間片比例輪流在所述處理器中執(zhí)行。

根據(jù)本發(fā)明的處理器調(diào)度方法,判斷所述處于就緒狀態(tài)且優(yōu)先級最高的線程的優(yōu)先級是否比所述當前處于運行狀態(tài)的線程的優(yōu)先級高的步驟之前還包括:

檢查函數(shù)是否被線程調(diào)度以及所述處理器內(nèi)核是否允許線程調(diào)度,若是則計算處于就緒狀態(tài)的線程的最高優(yōu)先級。

根據(jù)本發(fā)明的處理器調(diào)度方法,修改線程的優(yōu)先級或時間片并獲取處于就緒狀態(tài)且優(yōu)先級最高的線程的步驟包括:

判斷待修改優(yōu)先級的線程的狀態(tài);

若所述待修改優(yōu)先級的線程為就緒狀態(tài),則在修改所述線程的優(yōu)先級后獲取處于就緒狀態(tài)且優(yōu)先級最高的線程;

若所述待修改優(yōu)先級的線程不為就緒狀態(tài),則等待當前處于運行狀態(tài)的線程退出內(nèi)核獨占區(qū)。

本發(fā)明相應(yīng)提供一種處理器調(diào)度系統(tǒng),所述系統(tǒng)包括:

指令接收模塊,用于接收線程優(yōu)先級或時間片修改指令;

處理模塊,用于修改線程的優(yōu)先級或時間片并獲取處于就緒狀態(tài)且優(yōu)先級最高的線程;

執(zhí)行模塊,用于當前處于運行狀態(tài)的線程退出內(nèi)核獨占區(qū)時,將所述處于就緒狀態(tài)且優(yōu)先級最高的線程按照其時間片長短在處理器中執(zhí)行。

根據(jù)本發(fā)明的處理器調(diào)度系統(tǒng),所述處理模塊還包括第一判斷單元,所述第一判斷單元用于判斷所述處于就緒狀態(tài)且優(yōu)先級最高的線程的優(yōu)先級是否比 所述當前處于運行狀態(tài)的線程的優(yōu)先級高;

所述執(zhí)行模塊還用于所述處于就緒狀態(tài)且優(yōu)先級最高的線程的優(yōu)先級比所述當前處于運行狀態(tài)的線程的優(yōu)先級高時,請求所述處理器內(nèi)核中斷執(zhí)行所述當前處于運行狀態(tài)的線程,否則等待所述當前處于運行狀態(tài)的線程的時間片結(jié)束。

根據(jù)本發(fā)明的處理器調(diào)度系統(tǒng),所述執(zhí)行模塊還用于在所述處于就緒狀態(tài)且優(yōu)先級最高的線程具有多個時,按照各線程的時間片比例輪流在所述處理器中執(zhí)行。

根據(jù)本發(fā)明的處理器調(diào)度系統(tǒng),所述處理模塊還包括檢查單元,用于檢查函數(shù)是否被線程調(diào)度以及所述處理器內(nèi)核是否允許線程調(diào)度,若是所述處理模塊則計算處于就緒狀態(tài)的線程的最高優(yōu)先級。

根據(jù)本發(fā)明的處理器調(diào)度系統(tǒng),所述處理模塊還包括第二判斷單元,所述第二判斷單元用于判斷待修改優(yōu)先級的線程的狀態(tài);

所述執(zhí)行模塊還用于在所述待修改優(yōu)先級的線程為就緒狀態(tài)時,在修改所述線程的優(yōu)先級后獲取處于就緒狀態(tài)且優(yōu)先級最高的線程;

所述執(zhí)行模塊還用于在所述待修改優(yōu)先級的線程不為就緒狀態(tài)時,則等待當前處于運行狀態(tài)的線程退出內(nèi)核獨占區(qū)。

本發(fā)明通過修改線程的優(yōu)先級或時間片并獲取處于就緒狀態(tài)且優(yōu)先級最高的線程,當前處于運行狀態(tài)的線程退出內(nèi)核獨占區(qū)時,將處于就緒狀態(tài)且優(yōu)先級最高的線程按照其時間片長短在處理器中執(zhí)行。本發(fā)明融合了優(yōu)先級強制機制和時間片輪轉(zhuǎn)機制,在不同優(yōu)先級的線程間采用優(yōu)先級搶占機制,在相同優(yōu)先級線程間采用時間片輪轉(zhuǎn)機制,因為是基于線程的調(diào)度機制,所以線程間切換所消耗的資源很小,因此,其提升了不同和相同優(yōu)先級線程之間在占有CPU的切換效率,也兼顧了線程間占有處理器資源的公平性,系統(tǒng)實時性高。

附圖說明

圖1是本發(fā)明一種處理器調(diào)度系統(tǒng)的原理框圖;

圖2是本發(fā)明一種實施例中動態(tài)修改線程優(yōu)先級的流程圖;

圖3是本發(fā)明一種實施例中動態(tài)修改線程時間片的流程圖;

圖4是本發(fā)明一種處理器調(diào)度方法的流程圖。

具體實施方式

為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

如圖1所示,本發(fā)明提供一種處理器調(diào)度系統(tǒng)100,系統(tǒng)100可應(yīng)用于雙系統(tǒng)智能終端中,該智能終端可以是手機、PDA(Personal Digital Assistant,個人數(shù)字助理)、平板電腦等通信終端。該系統(tǒng)100可以是內(nèi)置于移動終端的軟件單元,硬件單元或軟硬件結(jié)合單元。該系統(tǒng)100包括指令接收模塊10、處理模塊20以及執(zhí)行模塊30。

指令接收模塊10,用于接收線程優(yōu)先級或時間片修改指令。線程的優(yōu)先級和時間片是在建立的時候分配的,但線程在程序運行期間動態(tài)實時修改優(yōu)先級和時間片。例如在進入代碼的關(guān)鍵部分之前(在此期間,線程常常使用由鎖定控制的共享資源),線程常常請求提高優(yōu)先級,以降低在執(zhí)行關(guān)鍵部分時線程被搶險的可能性,當線程完成代碼的關(guān)鍵部分之后,鎖定被釋放,線程的優(yōu)先級被操作系統(tǒng)重置。在雙系統(tǒng)移動終端的安全系統(tǒng)和標準系統(tǒng)同時有多個進程存在的情況下,會進行線程調(diào)度修改優(yōu)先級和時間片。線程調(diào)度是指按照特定機制為多個線程分配處理器的使用權(quán)。

處理模塊20,用于修改線程的優(yōu)先級或時間片并獲取處于就緒狀態(tài)且優(yōu)先級最高的線程。在修改某個線程的優(yōu)先級后,線程緩沖池內(nèi)的線程優(yōu)先級排序會發(fā)生變化,此時需要選擇處于就緒狀態(tài)且優(yōu)先級最高的線程待執(zhí)行。

執(zhí)行模塊30,用于當前處于運行狀態(tài)的線程退出內(nèi)核獨占區(qū)時,將處于就緒狀態(tài)且優(yōu)先級最高的線程按照其時間片長短在處理器中執(zhí)行。在處于就緒狀態(tài)且優(yōu)先級最高的線程具有多個時,執(zhí)行模塊30按照各線程的時間片比例輪流在處理器中執(zhí)行。具體的,每一個線程具有一時間片,其占用內(nèi)核獨占區(qū)的時間由該時間片決定。當前處于運行狀態(tài)的線程時間片結(jié)束時退出處理器的內(nèi)核獨占區(qū),處于就緒狀態(tài)且優(yōu)先級最高的線程進入內(nèi)核獨占區(qū)占用處理器資源。

處理模塊20還包括第一判斷單元21,第一判斷單元21用于判斷處于就緒狀態(tài)且優(yōu)先級最高的線程的優(yōu)先級是否比當前處于運行狀態(tài)的線程的優(yōu)先級高;執(zhí)行模塊30還用于處于就緒狀態(tài)且優(yōu)先級最高的線程的優(yōu)先級比當前處于 運行狀態(tài)的線程的優(yōu)先級高時,請求處理器內(nèi)核中斷執(zhí)行當前處于運行狀態(tài)的線程,否則等待當前處于運行狀態(tài)的線程的時間片結(jié)束。具體的,每個線程被分配一個優(yōu)先級,優(yōu)先級高的線程只要進入了就緒態(tài),就可以立即執(zhí)行。除了優(yōu)先級最高的那個線程外,其他線程在執(zhí)行過程中隨時都可能停下來,讓給優(yōu)先級更高的線程先執(zhí)行,從而能保證系統(tǒng)的實時性。

處理模塊20還包括檢查單元22,檢查單元22用于檢查函數(shù)是否被線程調(diào)度以及處理器內(nèi)核是否允許線程調(diào)度,若是處理模塊20則計算處于就緒狀態(tài)的線程的最高優(yōu)先級。

處理模塊20還包括第二判斷單元23,第二判斷單元用于判斷待修改優(yōu)先級的線程的狀態(tài),執(zhí)行模塊30還用于在待修改優(yōu)先級的線程為就緒狀態(tài)時,在修改線程的優(yōu)先級后獲取處于就緒狀態(tài)且優(yōu)先級最高的線程。執(zhí)行模塊30還用于在待修改優(yōu)先級的線程不為就緒狀態(tài)時,則等待當前處于運行狀態(tài)的線程退出內(nèi)核獨占區(qū)。具體的,線程包括5個狀態(tài):新建狀態(tài)、就緒狀態(tài)、運行狀態(tài)、阻塞狀態(tài)和死亡狀態(tài)。新建狀態(tài)是指新創(chuàng)建了線程對象。就緒狀態(tài)是該線程變得可運行,等待獲取處理器的使用權(quán)。運行狀態(tài)是指獲取了處理器使用權(quán)正在執(zhí)行程序代碼。阻塞狀態(tài)是指線程因為某種原因放棄CPU使用權(quán)暫時停止運行。死亡狀態(tài)是指線程執(zhí)行完了或者因異常退出,該線程結(jié)束生命周期。對于就緒狀態(tài)的優(yōu)先級被修改后,將會可能出現(xiàn)就緒狀態(tài)的線程優(yōu)先級比正在運行線程的優(yōu)先級高而需要處理器進行線程調(diào)度將正在運行的線程退出內(nèi)核獨占區(qū),因此需要計算處于就緒狀態(tài)優(yōu)先級最高的線程;而對于其他狀態(tài)的線程修改了優(yōu)先級則不需要處理器進行線程調(diào)度,只有就緒狀態(tài)線程才能進入運行狀態(tài),因此僅僅就緒狀態(tài)的線程修改了優(yōu)先級后才會發(fā)生線程調(diào)度。

本發(fā)明融合了優(yōu)先級強制機制和時間片輪轉(zhuǎn)機制,在不同優(yōu)先級的線程間采用優(yōu)先級搶占機制,在相同優(yōu)先級線程間采用時間片輪轉(zhuǎn)機制,也即首先根據(jù)優(yōu)先級的高低進行線程調(diào)度,在優(yōu)先級相同的情況先才會根據(jù)時間片進行線程調(diào)度。因為本發(fā)明是基于線程的調(diào)度機制,線程間切換所消耗的資源很小,其提升了不同和相同優(yōu)先級線程之間在占有CPU的切換效率,也兼顧了線程間占有處理器資源的公平性,系統(tǒng)實時性高。

圖2是本發(fā)明一種實施例中動態(tài)修改線程優(yōu)先級的流程圖。該流程包括:

步驟S201,判斷線程是否允許被修改優(yōu)先級。若是則進入步驟S202,否則 直接返回。默認情況下線程優(yōu)先級是可以修改的,但是可以修改參數(shù),使其優(yōu)先級不可修改。所以,默認情況下線程允許修改優(yōu)先級。

步驟S202,內(nèi)核進入獨占區(qū)。程序中有調(diào)用內(nèi)核代碼,并且調(diào)用部分處于獨占區(qū)。

步驟S203,判斷線程是否處于就緒狀態(tài)。若是則進入步驟S205,否則進入步驟S204。具體的判斷待修改優(yōu)先級的線程是否為就緒狀態(tài)。線程狀態(tài)包括:新建狀態(tài)、就緒狀態(tài)、運行狀態(tài)、阻塞狀態(tài)和死亡狀態(tài)。

步驟S204,直接修改線程的優(yōu)先級,并進入步驟S210。對于新建狀態(tài)、運行狀態(tài)、阻塞狀態(tài)和死亡狀態(tài)的線程可以直接修改優(yōu)先級。并且處于阻塞狀態(tài)的線程有單獨的函數(shù)來處理,可以使得處于阻塞狀態(tài)的線程快速進入就緒狀態(tài)。由于僅處于就緒狀態(tài)的線程才有可能進入運行狀態(tài),其他狀態(tài)只有先進入就緒狀態(tài)才可能進入運行狀態(tài),因此修改了非就緒狀態(tài)的線程的優(yōu)先級后直接等待內(nèi)核退出獨占區(qū)。

步驟S205,修改就緒狀態(tài)線程的優(yōu)先級。

步驟S206,判斷函數(shù)是否被線程調(diào)用且內(nèi)核是否允許線程調(diào)度。若是則進入步驟S207,否則進入步驟S210。

步驟S207,獲取處于就緒狀態(tài)線程的最高優(yōu)先級。在本發(fā)明中首先判斷函數(shù)是否被線程調(diào)用且內(nèi)核是否允許線程調(diào)度,在均允許的情況下才進行計算最高優(yōu)先級,計算最高優(yōu)先級的目的就是為了進行線程調(diào)度,若不允許進行線程調(diào)度則沒有進行優(yōu)先級計算的必要。

步驟S208,判斷處于最高就緒優(yōu)先級是否比當前運行線程的優(yōu)先級高。若是則進入步驟S209,否則進入步驟S210。具體的,判斷處于最高優(yōu)先級的就緒狀態(tài)線程的優(yōu)先級是否比當前運行的線程的優(yōu)先級高。

步驟S209,請求線程調(diào)度。最高優(yōu)先級的就緒狀態(tài)線程的優(yōu)先級比當前運行的線程的優(yōu)先級高,則向處理器內(nèi)核申請線程調(diào)度,使正在運行的線程退出獨占區(qū),讓給優(yōu)先級更高的線程先執(zhí)行。最高優(yōu)先級的就緒狀態(tài)線程的優(yōu)先級比當前運行的線程的優(yōu)先級低,表示該優(yōu)先級低的線程不被調(diào)度。

步驟S210,內(nèi)核退出獨占區(qū)。內(nèi)核代碼退出獨占區(qū)后可能發(fā)生中斷,在中斷退出時可能發(fā)生線程調(diào)度。

圖3是本發(fā)明一種實施例中動態(tài)修改線程時間片的流程圖。該流程包括:

步驟S301,內(nèi)核進入獨占區(qū)。

步驟S302,判斷線程時間片長度是否可修改。若是則進入步驟S303,否則進入步驟S304。

步驟S303,修改線程時間片長度。

步驟S204,內(nèi)核退出獨占區(qū)。

圖4是本發(fā)明一種處理器調(diào)度方法的流程圖,該方法通過如圖1所示的系統(tǒng)100實現(xiàn),該方法包括:

步驟S401,接收線程優(yōu)先級或時間片修改指令。本步驟通過指令接收模塊10實現(xiàn)。

步驟S402,修改線程的優(yōu)先級或時間片并獲取處于就緒狀態(tài)且優(yōu)先級最高的線程。本步驟通過處理模塊20實現(xiàn)。

步驟S403,當前處于運行狀態(tài)的線程退出內(nèi)核獨占區(qū)時,將處于就緒狀態(tài)且優(yōu)先級最高的線程按照其時間片長短在處理器中執(zhí)行。本步驟通過執(zhí)行模塊30實現(xiàn)。

優(yōu)選的是,該方法還包括:在處于就緒狀態(tài)且優(yōu)先級最高的線程具有多個時,按照各線程的時間片比例輪流在處理器中執(zhí)行。

優(yōu)選的是,步驟S402之后還包括:判斷處于就緒狀態(tài)且優(yōu)先級最高的線程的優(yōu)先級是否比當前處于運行狀態(tài)的線程的優(yōu)先級高;若是則處理器內(nèi)核中斷執(zhí)行當前處于運行狀態(tài)的線程,否則等待當前處于運行狀態(tài)的線程的時間片結(jié)束。判斷處于就緒狀態(tài)且優(yōu)先級最高的線程的優(yōu)先級是否比當前處于運行狀態(tài)的線程的優(yōu)先級高的步驟之前還包括:檢查函數(shù)是否被線程調(diào)度以及處理器內(nèi)核是否允許線程調(diào)度,若是則計算處于就緒狀態(tài)的線程的最高優(yōu)先級。

優(yōu)選的是,步驟S402包括:判斷待修改優(yōu)先級的線程的狀態(tài);若待修改優(yōu)先級的線程為就緒狀態(tài),則在修改線程的優(yōu)先級后獲取處于就緒狀態(tài)且優(yōu)先級最高的線程;若待修改優(yōu)先級的線程不為就緒狀態(tài),則等待當前處于運行狀態(tài)的線程退出內(nèi)核獨占區(qū)。

綜上所述,的線程,當前處于運行狀態(tài)的線程退出內(nèi)核獨占區(qū)時,將處于就緒狀態(tài)且優(yōu)先級最高的線程按照其時間片長短在處理器中執(zhí)行。本發(fā)明融合了優(yōu)先級強制機制和時間片輪轉(zhuǎn)機制,在不同優(yōu)先級的線程間采用優(yōu)先級搶占機制,在相同優(yōu)先級線程間采用時間片輪轉(zhuǎn)機制,因為是基于線程的調(diào)度機制, 所以線程間切換所消耗的資源很小,因此,其提升了不同和相同優(yōu)先級線程之間在占有CPU的切換效率,也兼顧了線程間占有處理器資源的公平性,系統(tǒng)實時性高。

當然,本發(fā)明還可有其它多種實施例,在不背離本發(fā)明精神及其實質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護范圍。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
肇源县| 灌南县| 广德县| 衡阳县| 内丘县| 托里县| 鄂伦春自治旗| 江华| 泰和县| 额尔古纳市| 通州区| 常熟市| 萝北县| 明溪县| 镇沅| 资源县| 双辽市| 紫云| 绥中县| 三河市| 邹城市| 翼城县| 义马市| 中卫市| 于田县| 通江县| 灵璧县| 平塘县| 治多县| 泸水县| 马鞍山市| 宁海县| 灵武市| 镇江市| 四子王旗| 建瓯市| 奉贤区| 兴和县| 方正县| 汪清县| 毕节市|