分時操作系統(tǒng)調(diào)度算法
分時操作系統(tǒng)采用時間片輪轉(zhuǎn)的方式為用戶提供服務,那么你了解什么是時間片輪轉(zhuǎn)調(diào)度嗎?下面由學習啦小編為大家整理了分時操作系統(tǒng)的調(diào)度算法的相關知識,希望對大家有幫助!
分時操作系統(tǒng)的調(diào)度算法詳解
時間片的概念,可以用來部分解釋本書開始時的一句話:"在數(shù)據(jù)傳輸領域,你親眼看見的,都不是真的"。在宏觀上:我們可以同時打開多個應用程序,每個程序并行不悖,同時運行。但是在微觀上:由于只有一個CPU,一次只能處理程序要求的一部分,如何處理公平,一種方法就是引入時間片,每個程序輪流執(zhí)行。
概念的引入
說到并行計算,尤其是單臺計算機的并行計算,一定要先建立時間片的概念。我們現(xiàn)在所用的,不管是Windows還是Linux,一般都稱為多任務操作系統(tǒng),即,系統(tǒng)允許并行運行多個應用程序。操作系統(tǒng)一般是按照一定策略,定期給每個活動的進程執(zhí)行其內(nèi)部程序的機會,并且每次只執(zhí)行一小段時間,然后操作系統(tǒng)利用中斷強行退出執(zhí)行,將當前程序信息壓棧,然后開始執(zhí)行下一個進程的一小段程序。通過這樣不斷快速的循環(huán)切換,每個程序都獲得執(zhí)行,在用戶看來,感覺到很多程序都在平行的執(zhí)行,這就模擬了并行計算。當然,新的多核CPU以及超線程CPU,內(nèi)部就有超過1個的CPU執(zhí)行體,運行時就不是模擬了,而是真的有兩個以上的程序在被執(zhí)行。當然在我們程序員看來,只需要理解程序是被操作系統(tǒng)片段執(zhí)行的,每個片段就是一個時間片,就足夠了。既然是片段執(zhí)行,程序員就必須理解,在自己的程序運行時不是獨一無二的,我們看似很順暢的工作,其實是由一個個的執(zhí)行片段構成的,我們眼中相鄰的兩條語句甚至同一個語句中兩個不同的運算符之間,都有可能插入其他線程或進程的動作。
基本概念
時間片輪轉(zhuǎn)法(Round-Robin,RR)主要用于分時系統(tǒng)中的進程調(diào)度。為了實現(xiàn)輪轉(zhuǎn)調(diào)度,系統(tǒng)把所有就緒進程按先入先出的原則排成一個隊列。新來的進程加到就緒隊列末尾。每當執(zhí)行進程調(diào)度時,進程調(diào)度程序總是選出就緒隊列的隊首進程,讓它在CPU上運行一個時間片的時間。時間片是一個小的時間單位,通常為10~100ms數(shù)量級。當進程用完分給它的時間片后,系統(tǒng)的計時器發(fā)出時鐘中斷,調(diào)度程序便停止該進程的運行,把它放入就緒隊列的末尾;然后,把CPU分給就緒隊列的隊首進程,同樣也讓它運行一個時間片,如此往復。[1]
進程調(diào)度
采用此算法的系統(tǒng),其程序就緒隊列往往按進程到達的時間來排序。進程調(diào)度程序總是選擇就緒隊列中的第一個進程,也就是說按照先來先服務原則調(diào)度,但一旦進程占用處理機則僅使用一個時間片。在使用先一個時間片后,進程還沒有完成其運行,它必須釋放出處理機給下一個就緒的進程,而被搶占的進程返回到就緒隊列的末尾重新排隊等待再次運行。處理器同一個時間只能處理一個任務。處理器在處理多任務的時候,就要看請求的時間順序,如果時間一致,就要進行預測。挑到一個任務后,需要若干步驟才能做完,這些步驟中有些需要處理器參與,有些不需要(如磁盤控制器的存儲過程)。不需要處理器處理的時候,這部分時間就要分配給其他的進程。原來的進程就要處于等待的時間段上。經(jīng)過周密分配時間,宏觀上就象是多個任務一起運行一樣,但微觀上是有先后的,就是時間片輪換。
分時操作系統(tǒng)調(diào)度算法的實現(xiàn)思想
時間片輪轉(zhuǎn)算法的基本思想是,系統(tǒng)將所有的就緒進程按先來先服務算法的原則,排成一個隊列,每次調(diào)度時,系統(tǒng)把處理機分配給隊列首進程,并讓其執(zhí)行一個時間片。當執(zhí)行的時間片用完時,由一個計時器發(fā)出時鐘中斷請求,調(diào)度程序根據(jù)這個請求停止該進程的運行,將它送到就緒隊列的末尾,再把處理機分給就緒隊列中新的隊列首進程,同時讓它也執(zhí)行一個時間片。