時間片輪轉調度算法

時間片輪轉調度算法

時間片輪轉調度是一種最古老,最簡單,最公平且使用最廣的算法。每個進程被分配一時間段,稱作它的時間片,即該進程允許運行的時間。

含義

時間片輪轉調度是一種最古老,最簡單,最公平且使用最廣的算法。每個進程被分配一個時間段,稱作它的時間片,即該進程允許運行的時間。如果在時間片結束時進程還在運行,則CPU將被剝奪並分配給另一個進程。如果進程在時間片結束前阻塞或結束,則CPU當即進行切換。調度程式所要做的就是維護一張就緒進程列表,當進程用完它的時間片後,它被移到佇列的末尾。

時間片輪轉調度中唯一有趣的一點是時間片的長度。從一個進程切換到另一個進程是需要一定時間的--保存和裝入暫存器值及記憶體映像,更新各種表格和佇列等。假如進程切換(process switch) - 有時稱為上下文切換(context switch),需要5毫秒,再假設時間片設為20毫秒,則在做完20毫秒有用的工作之後,CPU將花費5毫秒來進行進程切換。CPU時間的20%被浪費在了管理開銷上。

為了提高CPU效率,我們可以將時間片設為500毫秒。這時浪費的時間只有1%。但考慮在一個分時系統中,如果有十個互動用戶幾乎同時按下回車鍵,將發生什麼情況?假設所有其他進程都用足它們的時間片的話,最後一個不幸的進程不得不等待5秒鐘才獲得運行機會。多數用戶無法忍受一條簡短命令要5秒鐘才能做出回響。同樣的問題在一台支持多道程式的個人計算機上也會發生。

結論可以歸結如下:時間片設得太短會導致過多的進程切換,降低了CPU效率;而設得太長又可能引起對短的互動請求的回響變差。將時間片設為100毫秒通常是一個比較合理的折衷。

基本原理

在早期的時間片輪轉法中,系統將所有的就緒進程按先來先服務的原則,排成一個佇列,每次調度時,把CPU分配給隊首進程,並令其執行一個時間片.時間片的大小從幾ms到幾百ms.當執行的時間片用完時,由一個計時器發出時鐘中斷請求,調度程式便據此信號來停止該進程的執行,並將它送往就緒佇列的末尾;然後,再把處理機分配給就緒佇列中新的隊首進程,同時也讓它執行一個時間片.這樣就可以保證就緒佇列中的所有進程,在一給定的時間內,均能獲得一時間片的處理機執行時間.

時間片

時間片大小的確定

1.系統對回響時間的要求

2.就緒佇列中進程的數目

3.系統的處理能力

算法

多級反饋

多級反饋佇列調度算法

(1) 設定多個就緒佇列,並為各個佇列賦予不同的優先權. 第一個佇列的優先權最高,第二個佇列次之,其餘各佇列的優先權逐個降低.

該算法賦予各個佇列中進程執行時間片的大小也各不相同:

在優先權愈高的佇列中,為每個進程所規定的執行時間片就愈小.

例如:第二個佇列的時間片要比第一個佇列的時間片長一倍,……,第i+1個佇列的時間片要比第i個佇列的時間片長一倍.

(2) 當一個新進程進入記憶體後,首先將它放入第一佇列的末尾,按FCFS原則排隊等待調度.當輪到該進程執行時,如它能在該時間片內完成,便可準備撤離系統;如果它在一個時間片結束時尚未完成,調度程式便將該進程轉入第二佇列的末尾,再同樣地按FCFS原則等待調度執行;如果它在第二佇列中運行一個時間片後仍未完成,再依次將它放入第三佇列,……,如此下去,當一個長作業(進程)從第一佇列依次降到第n佇列後,在第n佇列中便採取按時間片輪轉的方式運行.

(3) 僅當第一佇列空閒時,調度程式才調度第二佇列中的進程運行; 僅當第1~(i-1) 佇列均空時,才會調度第i佇列中的進程運行.如果處理機正在第i佇列中為某進程服務時,又有新進程進入優先權較高的佇列(第1~(i-1)中的任何一個佇列),則此時新進程將搶占正在運行進程的處理機,即由調度程式把正在運行的進程放回到第i佇列的末尾,把處理機分配給新到的高優先權進程.?

性能

(1)終端型作業用戶

(2) 短批處理作業用戶

(3) 長批處理作業用戶

滿足了多數用戶的需求

優先權

優先權調度算法

1,優先權調度算法的類型

非搶占式優先權算法

在這種方式下,系統一旦把處理機分配給就緒佇列中優先權最高的進程後,該進程便一直執行下去,直至完成; 或因發生某事件使該進程放棄處理機時,系統方可再將處理機重新分配給另一優先權最高的進程.這種調度算法主要用於批處理系統中;也可用於某些對實時性要求不嚴的實時系統中.

搶占式優先權調度算法

系統同樣把處理機分配給優先權最高的進程,使之執行.但在其執行期間,只要又出現了另一個其優先權更高的進程,進程調度程式就立即停止當前進程(原優先權最高的進程)的執行,重新將處理機分配給新到的優先權最高的進程.

這種搶占式的優先權調度算法,能更好地滿足緊迫作業的要求,常用於要求比較嚴格的實時系統中, 以及對性能要求較高的批處理和分時系統中.

2,優先權的類型

(1) 靜態優先權

靜態優先權是在創建進程時確定的,且在進程的整個運行期間保持不變.

一般地,優先權是利用某一範圍內的一個整數來表示的,例如,0~7或0~255中的某一整數, 又把該整數稱為優先數.只是具體用法各異:有的系統用"0"表示最高優先權,當數值愈大時,其優先權愈低;而有的系統恰恰相反.

確定進程優先權的依據有如下三個方面:

1.進程類型.(系統進程/用戶進程)

2.進程對資源的需求.(需求量的大小)

3.用戶要求.(用戶進程緊迫程度)

(2) 動態優先權

動態優先權是指在創建進程時所賦予的優先權,可以隨進程的推進或隨其等待時間的增加而改變的,以便獲得更好的調度性能.

例如,我們可以規定,在就緒佇列中的進程,隨其等待時間的增長,其優先權以速率a提高.若所有的進程都具有相同的優先權初值,則顯然是最先進入就緒佇列的進程,將因其動態優先權變得最高而優先獲得處理機,此即FCFS算法.

優先權的變化規律可描述為:

由於等待時間與服務時間之和,就是系統對該作業的回響時間,故該優先權又相當於回響比RP.據此,又可表示為:

3,高回響比優先調度算法

由上面的式子可以得到以下結論:

(1) 如果作業的等待時間相同,則要求服務的時間愈短,其優先權愈高,因而該算法有利於短作業.

(2) 當要求服務的時間相同時,作業的優先權決定於其等待時間,等待時間愈長,其優先權愈高,因而它實現的是先來先服務.

(3) 對於長作業,作業的優先權可以隨等待時間的增加而提高,當其等待時間足夠長時,其優先權便可升到很高, 從而也可獲得處理機.

該算法照顧了短作業,且不會使長作業長期得不到服務

搶占式

1. 非搶占式調度算法

為每一個被控對象建立一個實時任務並將它們排列成一輪轉佇列,調度程式每次選擇佇列中的第一個任務投入運行.該任務完成後便把它掛在輪轉佇列的隊尾等待下次調度運行.

2. 非搶占式優先調度算法.

實時任務到達時,把他們安排在就緒佇列的對首,等待當前任務自我終止或運行完成後才能被調度執行.

3. 搶占式調度算法

1)基於時鐘中斷的搶占式優先權調度算法.

實時任務到達後,如果該任務的優先權別高於當前任務的優先權並不立即搶占當前任務的處理機,而是等到時鐘中斷到來時,調度程式才剝奪當前任務的執行,將處理機分配給新到的高優先權任務.

2)立即搶占的優先權調度算法.

在這種調度策略中,要求作業系統具有快速回響外部時間中斷的能力.一旦出現外部中斷,只要當前任務未處於臨界區便立即剝奪當前任務的執行,把處理機分配給請求中斷的緊迫任務,實時進程調度,實時進程搶占當前。

實時系統

1 實現實時調度的基本條件

1-1. 提供必要的信息-就緒時間.

1-2. 開始截止時間和完成截止時間.

1-3. 處理時間.

1-4. 資源要求.

1-5. 優先權.

2. 系統處理能力強

在實時系統中,通常都有著多個實時任務.若處理機的處理能力不夠強,則有可能因處理機忙不過來而使某些實時任務不能得到及時處理, 從而導致發生難以預料的後果.假定系統中有m個周期性的硬實時任務,它們的處理時間可表示為Ci,周期時間表示為Pi,則在單處理機情況下,系統可調度必須滿足下面的限制條件:

當系統不可調度時解決的方法是提高系統的處理能力,其途徑有二:

其一仍是採用單處理機系統,但須增強其處理能力, 以顯著地減少對每一個任務的處理時間;

其二是採用多處理機系統.假定系統中的處理機數為N,則應將上述的限制條件改為:

3. 採用搶占式調度機制

當一個優先權更高的任務到達時,允許將當前任務暫時掛起,而令高優先權任務立即投入運行.採用這種方式去滿足那些開始截止時間即將到來的任務.?

4. 具有快速切換機制

應具有的能力:

(1) 對外部中斷的快速回響能力.為使在緊迫的外部事件請求中斷時系統能及時回響,要求系統具有快速硬體中斷機構,還應使禁止中斷的時間間隔儘量短,以免耽誤時機(其它緊迫任務).?

(2) 快速的任務分派能力.在完成任務調度後,便應進行任務切換.為了提高分派程式進行任務切換時的速度, 應使系統中的每個運行功能單位適當的小,以減少任務切換的時間開銷. 實時調度實例

一, 最早截止時間優先算法(EDF)

EDF算法用於非搶占調度方式

優先權:根據任務的開始截止時間來確定任務的優先權.

二,最低鬆弛優先算法(LLF)

例如:系統中有兩個周期性實時任務A和B,任務A要求每20ms執行一次,執行時間為10ms;任務B要求每50ms執行一次,執行時間為25ms.這樣可知A和B每次必須完成的時間和開始截止時間如圖所示

優先權:根據任務緊急程度來確定任務優先權

A和B任務每次必須完成的時間

A1 (10) A2 (30) A3(50) A4 (70) A5(90) A6 (110) A7(130) A8(150)

0 、10、 20、 30 、40、 50 、60、 70、 80 、90 、100 、110、 120、130、 140、 150

B1(25) B2(75) B3(125)

A和B任務每次必須開始的時間

時間(ms) A截止時間 B截止時間 調度對象

0 A1(10) B1(25) A1

10 A2(20) B1(15) B1

30 A2(0) B1(15) A2

40 A3(10) B1(5) B1

45 A3(5) B2(30) A3

55 A4(15) B2(20) B2

70 A4(0) B2(20) A4

鬆弛度

鬆弛度

( 20-10-0 ) ( 50-25-0 )

(40-10-10 ) ( 50-25-10 )

(40-10-30) (50-5-30)

(60-10-40) (50-5-40)

(60-10-45) (100-25-45)

(80-10-55) (100-25-55)

(80-10-70) (100-10-70 )

3.4.1 多處理器系統的類型

(1) 緊密耦合(Tightly Coupted)MPS.

這通常是通過高速匯流排或高速交叉開關,來實現多個處理器之間的互連的.它們共享主存儲器系統和I/O設備,並要求將主存儲器劃分為若干個能獨立訪問的存儲器模組,以便多個處理機能同時對主存進行訪問.系統中的所有資源和進程,都由作業系統實施統一的控制和管理.

3.4 多處理機系統中的調度

從處理器之間耦合的緊密程度上劃分:

鬆散耦合(Loosely Coupled)MPS.

在鬆散耦合MPS中,通常是通過通道或通信線路,來實現多台計算機之間的互連.每台計算機都有自己的存儲器和I/O設備,並配置了OS來管理本地資源和在本地運行的進程.因此,每一台計算機都能獨立地工作, 必要時可通過通信線路與其它計算機交換信息,以及協調它們之間的工作.

根據系統中所用處理器的相同與否劃分:

(1) 對稱多處理器系統SMPS. 在系統中所包含的各處理器單元,在功能和結構上都是相同的,當前的絕大多數MPS都屬於SMP系統.例如,IBM公司的SR/6000 Model F50, 便是利用4片Power PC處理器構成的.?

(2) 非對稱多處理器系統.在系統中有多種類型的處理單元,它們的功能和結構各不相同,其中只有一個主處理器,有多個從處理器:

1. 對稱多處理器系統中的進程分配方式

在SMP系統中,所有的處理器都是相同的,因而可把所有的處理器作為一個處理器池(Processor pool),由調度程式或基於處理器的請求,將任何一個進程分配給池中的任何一個處理器去處理.在進行進程分配時,可採用以下兩種方式之一.

1) 靜態分配(Static Assigenment)方式

2) 動態分配(Dynamic Assgement)方式?

3.4.2 進程分配方式

靜態分配(Static Assigenment)方式

一個進程從開始執行直到完成,都被固定分配到一個處理器上去執行.

2) 動態分配(Dynamic Assgement)方式

系統中設定有公共的就緒佇列.分配進程時,可以將進程分配到任何一個處理器上.

動態分配方式的主要優點是消除了各處理器忙閒不均的現象

2. 非對稱MPS中的進程分配方式?

對於非對稱MPS,其OS大多採用主—從(Master-Slave)式OS,即OS的核心部分駐留在一台主機上(Master),而從機(Slave)上只是用戶程式,進程調度只由主機執行.每當從機空閒時,便向主機傳送一索求進程的信號,然後,便等待主機為它分配進程.在主機中保持有一個就緒佇列,只要就緒佇列不空,主機便從其隊首摘下一進程分配給請求的從機.從機接收到分配的進程後便運行該進程,該進程結束後從機又向主機發出請求.

缺點:對主機要求高,出現故障導致整個系統癱瘓

1. 自調度(Self-Scheduling)方式

1) 自調度機制?

在系統中設定有一個公共的進程或執行緒就緒佇列, 所有的處理器在空閒時,都可自己到該佇列中取得一進程(或執行緒)來運行.在自調度方式中,可採用在單處理機環境下所用的調度算法,如先來先服務(FCFS)調度算法,最高優先權優先(FPF)調度算法和搶占式最高優先權優先調度算法等.

3.4.3 進程(執行緒)調度方式

2) 自調度方式的優點?

1,系統中的公共就緒佇列可按照單處理機系統中所採用的各種方式加以組織;其調度算法也可沿用單處理機系統所用的算法,即很容易將單處理機環境下的調度機制移植到多處理機系統中

2,只要系統中有任務(公共就緒佇列不空)就不會出現處理機空閒的情況,也不會發生處理器忙閒不均的現象,因而有利於提高處理器的利用率.

3)自調度方式的缺點

3.4.4進程調度過程

1、進程名:作為進程的標識。

指針:進程按順序排成循環鍊表,用指針指出下一個進程的進程控制塊首地址,最後一個進程中的指針指出第一個進程的進程控制塊首地址。

2、要求運行時間:假設進程需要運行的單位時間數。

已運行時間:假設進程已經運行的單位時間數,初值為0。

狀態:可假設有兩種狀態,就緒狀態和結束狀態。進程的初始狀態都為就緒狀態。

3、每次運行所設計的處理器調度程式調度進程之前,為每個進程任意確定它的要求運行時間。

4、此程式是模擬處理器調度,因此,被選中的進程並不實際啟動運行,而是執行

已運行時間+1

來模擬進程的一次運行,表示進程已經運行過一個單位時間。

.5、在所設計的程式中應有顯示或列印語句,能顯示或列印每次被選中的進程名以及運行一次後進程佇列的變化。

6、為進程任意確定要求運行時間,運行所設計的處理器調度程式,顯示或列印逐次被選中進程的進程名以及進程控制塊的動態變化過程。

7、設有一個就緒佇列,就緒進程按優先數(優先數範圍0-100)由小到大排列(優先數越小,級別越高)。當某一進程運行完一個時間片後,其優先權應下調(如優先數加2或3)。

8、例如一組進程如下表:

進程名 A B C D E F G H J K L M
到達時間 0 1 2 3 6 8 12 12 12 18 25 25
服務時間 6 4 10 5 1 2 5 10 4 3 15 8

瓶頸問題

1. 整個系統中只有一個就緒佇列供多個處理器共享.

(2)低效性.

執行緒在其生命周期內多次更換處理器使得高速快取的使用率很低

(3)執行緒切換頻繁.

2. 成組調度(Gang Scheduling)方式

3.專用處理器分配方式

相關詞條

相關搜尋

熱門詞條

聯絡我們