專利名稱:面向異構(gòu)多核體系的進程調(diào)度方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機操作系統(tǒng)領(lǐng)域,尤其涉及一種面向異構(gòu)多核體系的進程調(diào)度方法。
背景技術(shù):
在操作系統(tǒng)中,進程調(diào)度負(fù)責(zé)動態(tài)地把處理器分配給進程。因此,它又叫處理器調(diào)度或低級調(diào)度。操作系統(tǒng)中實現(xiàn)進程調(diào)度的程序稱為進程調(diào)度程序,或分派程序。
處理器的調(diào)度策略很多;現(xiàn)介紹如下幾種1、先來先服務(wù)算法先來先服務(wù)算法是按照進程進入就緒隊列的先后次序來分配處理器。先進入就緒隊列的進程優(yōu)先被挑選,運行進程一旦占有處理器將一直運行下去直到運行結(jié)束或阻塞。這種算法容易實現(xiàn),但效率不高,顯然不利于I/O頻繁的進程。
2、時間片輪轉(zhuǎn)調(diào)度輪轉(zhuǎn)法調(diào)度也稱之為時間片調(diào)度,具體做法是調(diào)度程序每次把CPU分配給就緒隊列首進程使用一個時間片,例如100ms,就緒隊列中的每個進程輪流地運行一個這樣的時間片。當(dāng)這個時間片結(jié)束時,就強迫一個進程讓出處理器,讓它排列到就緒隊列的尾部,等候下一輪調(diào)度。實現(xiàn)這種調(diào)度要使用一個間隔時鐘,例如,當(dāng)一個進程開始運行時,就將時間片的值置入間隔時鐘內(nèi),當(dāng)發(fā)生間隔時鐘中斷時,就表明該進程連續(xù)運行的時間已超過一個規(guī)定的時間片。此時,中斷處理程序就通知處理器調(diào)度進行處理器的轉(zhuǎn)換工作。這種調(diào)度策略可以防止那些很少使用外圍設(shè)備的進程過長的占用處理器而使得要使用外圍設(shè)備的那些進程沒有機會去啟動外圍設(shè)備。
最常用的輪轉(zhuǎn)法是基本輪轉(zhuǎn)法。它要求每個進程輪流地運行相同的一個時間片。在分時系統(tǒng)中,這是一種較簡單又有效的調(diào)度策略。一個分時系統(tǒng)有許多終端設(shè)備,終端用戶在各自的終端設(shè)備上同時使用計算機,如果某個終端用戶的程序長時間的占用處理器,勢必使其它終端用戶的要求不能得到及時響應(yīng)。一般說分時系統(tǒng)的終端用戶提出要求后到計算機響應(yīng)給出回答的時間只能是幾秒鐘,這樣才能使終端用戶感到滿意。采用基本輪轉(zhuǎn)的調(diào)度策略可以使系統(tǒng)及時響應(yīng)。例如,一個分時系統(tǒng)有10個終端,如果每個終端用戶進程的時間片為100ms,那么,粗略地說,每個終端用戶在每秒鐘內(nèi)可以得到大數(shù)100ms的處理器時間,如果對于終端用戶的每個要求,處理器花費300ms的時間就可以給出回答時,那么終端響應(yīng)的時間大致就在3秒左右,這樣可算得上及時響應(yīng)了。
基本輪轉(zhuǎn)法的策略可以略加修改。例如,對于不同的進程給以不同的時間片;時間片的長短可以動態(tài)地修改等等,這些做法主要是為了進一步提高效率。
輪轉(zhuǎn)法調(diào)度是一種剝奪式調(diào)度,系統(tǒng)耗費在進程切換上的開銷比較大,這個開銷與時間片的大小很有關(guān)系。如果時間片取值太小,以致于大多數(shù)進程都不可能在一個時間片內(nèi)運行完畢,切換就會頻繁,系統(tǒng)開銷顯著增大,所以,從系統(tǒng)效率來看,時間片取大一點好。另一方面,時間片長度固定,那么隨著就緒隊列里進程數(shù)目的增加,輪轉(zhuǎn)一次的總時間增大,亦即對每個進程的響應(yīng)速度放慢了。為了滿足用戶對響應(yīng)時間的要求,要么限制就緒隊列中的進程數(shù)量,要么采用動態(tài)時間片法,根據(jù)當(dāng)前負(fù)載狀況,及時調(diào)整時間片的大小。所以,時間片大小的確定要從系統(tǒng)效率和響應(yīng)時間兩方面考慮。
3、優(yōu)先權(quán)調(diào)度每一個進程給出一個優(yōu)先數(shù),處理器調(diào)度每次選擇就緒進程中優(yōu)先數(shù)最大者,讓它占用處理器運行。怎樣確定優(yōu)先數(shù)呢?可以有以下幾種考慮,使用外圍設(shè)備頻繁者優(yōu)先數(shù)大,這樣有利于提高效率;重要算題程序的進程優(yōu)先數(shù)大,這祥有利于用戶;進入計算機時間長的進程優(yōu)先數(shù)大,這樣有利于縮短作業(yè)完成的時間;交互式用戶的進程優(yōu)先數(shù)大,這樣有利于終端用戶的響應(yīng)時間等等。
這些級別的進程調(diào)度方法都是最簡單的調(diào)度方法,對于在單個處理器的體系結(jié)構(gòu)中,操作系統(tǒng)采用這些調(diào)度就能夠?qū)崿F(xiàn)對多道程序的支持。
發(fā)明內(nèi)容
在異構(gòu)體系結(jié)構(gòu)中,有一個用于通用處理的主處理核和若干個針對特殊應(yīng)用進行優(yōu)化的輔助處理核。本發(fā)明提出了一個面向這種主從關(guān)系的異構(gòu)多核的進程調(diào)度的方法。
本發(fā)明解決技術(shù)問題所采用的技術(shù)方案是1)進程分配策略把異構(gòu)多核分為主處理核和輔助處理核,操作系統(tǒng)為所有處理核維護一個的共用的就緒隊列,每一個就緒進程有一個標(biāo)志位標(biāo)記該進程是運行在主處理核還是輔助處理核上;當(dāng)某一個處理核空閑時,就從就緒隊列里選取一個相應(yīng)進程運行于該處理核上;2)操作系統(tǒng)的實現(xiàn)機制操作系統(tǒng)采用主從式管理結(jié)構(gòu),操作系統(tǒng)的核心進程運行在主處理核上,其他處理器僅運行可以在該類核上運行的各種應(yīng)用程序,當(dāng)應(yīng)用程序需要請求操作系統(tǒng)服務(wù)時,請求將被傳遞到主處理核上的操作系統(tǒng)程序;3)進程的調(diào)度I.均分負(fù)載的進程調(diào)度當(dāng)某一個處理核空閑時,就選擇一個可以在該處理核上運行的就緒進程占有該處理器運行,一個進程就可以在任意時間在任意可運行該進程的處理核上運行;II.處理器專用的進程調(diào)度給一個應(yīng)用程序?qū)iT指派一組處理器,一旦一個應(yīng)用程序被調(diào)度,它的每一個線程被分配一個處理器并一直占有這個處理器運行直到整個應(yīng)用程序運行結(jié)束。
本發(fā)明具有的有益的效果是進程調(diào)度方法能夠使得進程在異構(gòu)多核上合理的進行調(diào)度,從而實現(xiàn)應(yīng)用程序任務(wù)在各個處理核之間的負(fù)載均衡。
附圖是進程調(diào)度處理流程。
具體實施方法1)進程分配策略的實現(xiàn)在異構(gòu)多核體系下,所有的處理并不是完全相同的,而是有一個主控的通用處理核和若干個相同的輔助處理核組成,但所有處理其在數(shù)據(jù)操作上卻是相同的,即對主存和I/O設(shè)備的訪問方式相同,所有采用對主處理核單獨處理,而其他多個輔助處理核則被作為一個處理核池來對待。
采取動態(tài)分配策略,操作系統(tǒng)為所有處理核維護一個的共用的就緒隊列,每一個就緒進程有一個標(biāo)志位標(biāo)記該進程是運行在主處理核還是輔助處理核上。當(dāng)某一個處理核空閑時,就從相應(yīng)的就緒隊列里選取一個就緒進程運行于該處理核上。附圖所示,概要說明了就緒隊列的模型。
2)操作系統(tǒng)的實現(xiàn)機制操作系統(tǒng)采用主從式管理結(jié)構(gòu),操作系統(tǒng)的核心進程運行在主處理核上,其他處理器運行可以在該類核上運行的各種應(yīng)用程序用戶程序,當(dāng)用戶程序需要請求操作系統(tǒng)服務(wù)時,請求將被傳遞到主處理核上的操作系統(tǒng)程序。
每一個進程都有一個也只有一個進程控制塊,是操作系統(tǒng)用于記錄和刻劃進程狀態(tài)及有關(guān)信息的數(shù)據(jù)結(jié)構(gòu)。也是操作系統(tǒng)掌握進程的唯一資料結(jié)構(gòu),它包括了進程執(zhí)行時的情況,以及進程讓出處理器后所處的狀態(tài)、斷點等信息。
每個進程控制塊包含了操作系統(tǒng)管理所需的所有進程信息,進程控制塊的集合事實上定義了一個操作系統(tǒng)的當(dāng)前狀態(tài)。進程控制塊使用或修改權(quán)僅屬于操作系統(tǒng)程序,包括調(diào)度程序、資源分配程序、中斷處理程序、性能監(jiān)視和分析程序等。有了進程控制塊,進程才能被調(diào)度執(zhí)行,因而,進程控制塊可看作是一個虛的CPU。
3)進程的調(diào)度1.均分負(fù)載的進程調(diào)度當(dāng)某一個處理核空閑時,就選擇一個可以在該處理核上運行的就緒進程占有該處理器運行。一個進程就可以在任意時間在任意可運行該進程的處理核上運行。
II.處理器專派的進程調(diào)度給一個應(yīng)用專門指派一組處理器,一旦一個應(yīng)用被調(diào)度,它的每一個線程被分配一個處理器并一直占有這個處理器運行直到整個應(yīng)用運行結(jié)束。
進程調(diào)度的基本思想是由操作系統(tǒng)和應(yīng)用進程共同完成調(diào)度。操作系統(tǒng)負(fù)責(zé)在應(yīng)用進程之間劃分處理器。應(yīng)用程序則根據(jù)它的標(biāo)志位來確定需要哪一類的處理器單元。
在這一調(diào)度中,當(dāng)一個進程達到或要求新的處理器時,操作系統(tǒng)的調(diào)度程序主要限制處理器的分配,并且按照下面的步驟處理1)如果有空閑的處理器,滿足要求,就分配指定的處理器;2)否則,對于新到達進程,通過查看該進程的標(biāo)記位確定需要哪一類處理器,并從當(dāng)前分配了一個以上處理器的進程手中收回一個,并把它分配給新到達進程;3)如果沒有空閑或者可以回收的處理器,則保留申請直到出現(xiàn)可用的處理器或要求取消;4)當(dāng)某個應(yīng)用程序進程釋放了一個或多個處理器后,掃描申請?zhí)幚砥鞯倪M程隊列,按照先來先服務(wù)的原則把處理器逐一分配給每個申請進程直到?jīng)]有可用處理器。
權(quán)利要求
1.一種面向異構(gòu)多核體系的進程調(diào)度方法,其特征在于1)進程分配策略把異構(gòu)多核分為主處理核和輔助處理核,操作系統(tǒng)為所有處理核維護一個的共用的就緒隊列,每一個就緒進程有一個標(biāo)志位標(biāo)記該進程是運行在主處理核還是輔助處理核上;當(dāng)某一個處理核空閑時,就從就緒隊列里選取一個相應(yīng)進程運行于該處理核上;2)操作系統(tǒng)的實現(xiàn)機制操作系統(tǒng)采用主從式管理結(jié)構(gòu),操作系統(tǒng)的核心進程運行在主處理核上,其他處理器僅運行可以在該類核上運行的各種應(yīng)用程序,當(dāng)應(yīng)用程序需要請求操作系統(tǒng)服務(wù)時,請求將被傳遞到主處理核上的操作系統(tǒng)程序;3)進程的調(diào)度I.均分負(fù)載的進程調(diào)度當(dāng)某一個處理核空閑時,就選擇一個可以在該處理核上運行的就緒進程占有該處理器運行,一個進程就可以在任意時間在任意可運行該進程的處理核上運行;II.處理器專用的進程調(diào)度給一個應(yīng)用程序?qū)iT指派一組處理器,一旦一個應(yīng)用程序被調(diào)度,它的每一個線程被分配一個處理器并一直占有這個處理器運行直到整個應(yīng)用程序運行結(jié)束。
全文摘要
本發(fā)明公開了一種面向異構(gòu)多核體系的進程調(diào)度方法。這種方法采用所有處理核共用一個就緒進程隊列,每一個就緒進程有一個標(biāo)志位標(biāo)記該進程是運行在主處理核還是輔助處理核上的實現(xiàn)方式。這種方法中操作系統(tǒng)采用主從式管理結(jié)構(gòu),操作系統(tǒng)的核心進程運行在主處理核上,其他處理器僅運行可以在該類核上運行的各種應(yīng)用程序,當(dāng)應(yīng)用程序需要請求操作系統(tǒng)服務(wù)時,請求將被傳遞到主處理核上的操作系統(tǒng)程序。進程調(diào)度采用均分負(fù)載調(diào)度算法和處理器專派調(diào)度算法,實現(xiàn)了進程的合理調(diào)度。
文檔編號G06F9/46GK101013388SQ20071006692
公開日2007年8月8日 申請日期2007年1月26日 優(yōu)先權(quán)日2007年1月26日
發(fā)明者陳天洲, 黃振寶 申請人:浙江大學(xué)