5.1 Operating System Concepts 第五章 CPU Scheduling n 基本觀念 n 排程標準 (Scheduling...
-
date post
22-Dec-2015 -
Category
Documents
-
view
231 -
download
1
Transcript of 5.1 Operating System Concepts 第五章 CPU Scheduling n 基本觀念 n 排程標準 (Scheduling...
5.1Operating System Concepts
第五章 CPU Scheduling
基本觀念 排程標準 (Scheduling Criteria ) 排程演算法 (Scheduling Algorithms) 多處理器的排程 (Multiple-Processor
Scheduling) 即時排程 (Real-Time Scheduling) 演算法評估 (Algorithm Evaluation)
5.2Operating System Concepts
基本觀念 CPU 排程是為了讓 CPU 的使用率 (CPU
utilization) 變高以獲致多程式(multiprogramming) 化目標multiprogramming
多元程式規劃系統的主要目的,就是要隨時保有一個行程在執行,藉以提高 CPU使用率。
行程的執行是由 CPU 執行時間及 I/O 等待時間所組成的週期 (cycle) 。行程在這兩個狀態之間交替往返。 CPU burst( 分割 ) 的分佈 (distribution)
行程執行由一個 CPU 分割 (CPU burst) 開始。跟著是一個 I/O 分割 (1/O burst) ,然後再由另外一個CPU 分割跟著,再來又是另一個 I/O 分割。
5.3Operating System Concepts
CPU And I/O Bursts 的變換程序
5.4Operating System Concepts
CPU-burst 的發生時間頻率柱狀圖 (histogram)
5.5Operating System Concepts
CPU 排班器 從記憶體中的眾多正等待被執行的行程中挑選一個出來,
配置 CPU 來執行 . CPU 排程要做選擇的時間點都發生在以下的狀況
1. 行程由執行 (running) 切換到等待 (wait) 的狀態 .—I/O2. 行程由執行 (running) 的狀態切換到就緒 (ready) 的狀態—中
斷 .3. 行程由等待 (wait) 的狀態切換到就緒 (ready) 的狀態 Switches
from waiting to ready.4. 結束 (terminate).
上述的 1,4 排程是無優先權 (non-preemptive, 不可搶先 ).
2,3 的排程是可以被搶先的 (preemptive).
5.6Operating System Concepts
分派程式 (Dispatcher)
分派程式是一個程式模組,它將 CPU 控制權交給由短程排班者所選出的行程,其中牽涉到 switching context切換到使用者模式能正確的到使用者程式中的正確位址開始執行程式
分派潛伏期 (Dispatch latency)從停止一個行程的執行到啟動另一個行程執行所花去的時間 .
一個系統中若只有行程主動放棄執行權時才會進行重新排程的話,則這個系統的排程方法為不可搶先的,反之,稱為可搶先的。
5.7Operating System Concepts
排程標準 CPU 使用率 : 我們要使 CPU 盡可能地忙碌。原則上它的使用率可以從 0 個 百
分比到 100 個百分比。而在實際的系統異,它的使用率應該是 40%( 負荷 較輕的系統 ) 到 90%( 負荷較重的系統 ) 的擴化範圍。
產量 (throughput): 如果 CPU 是忙碌地執行行程,那麼工作就可以不斷地進 行。其中有一種衡量工作量的標準,就是用每單位時間所完成的行程數來計 算,稱為產量。對長的行程而言,可能一個鐘頭只完成一個,但是對短的行程 而言,則產量可能多到每秒鐘完成十個。
回復時間 (turnaround time): 對某一個特定行程而言,我們所開心的是這個行 程到底需要多少時間才能完成。從行程進入電腦,一直到該行程完成並且離開 電腦,這整段時間稱為回復時問。回復時間是進入等待主記憶體、在就緒佇 列等待,以及 CPU 執行和執行輸出 / 入動作等時間的總和。
等候時間 (waiting time): CPU 排班的法則,對於實際執行一個行程所需的 時間,而輸出入動作的次數並沒有任何的影響。它只會影響一個行程在就緒佇列等待的時間。等候時問是在就緒佇列中等待所花費週期的總和。
反應時間 (response time): 在交談式系統之中,行程的回復時間有時候並不是 主要的衡量標準。通常行程可能很快地產生一個輸出結果,並且不等輸出結束就繼續計算下一個結果。因此另一個衡量的標準就是以提出一個要求到第一個反應出現的時間間隔來計算,這就是所謂反應時問。
5.8Operating System Concepts
最佳化標準
最大 CPU 使用率 最大產量 (throughput) 最短回覆時間 (turnaround time) 最短等待時間 (waiting time) 最短反應時間 (response time) 之變異數
5.9Operating System Concepts
排程方法
一個排程方法決定就緒佇列中那一個行程可以使用 CPU 資源。
常見的排程方法有:先到先做排程最短工作優先排程優先權排程循環分時排程多層佇列排程多層反饋佇列排程
5.10Operating System Concepts
先到先做排程
先到先做( FCFS)為最簡單的不可搶先排程法。
根據行程要求使用 CPU 的順序,來取得 CPU 的使用權。
所產生的平均等待時間經常都很長。 使用先到先做排程法時,若系統中存在一個
CPU 分割時間很長的行程時,則會產生護送現象 (convoy) 。
5.11Operating System Concepts
先來先做 (FCFS) 排程法Process Burst TimeP1 24
P2 3P3 3
假使三個行程到達的順序是 : P1 , P2 , P3 這樣排程的甘特圖 (Gantt Charts):
各行程的等待時間是 P1 = 0; P2 = 24; P3 = 27 平均等待時間是 : (0 + 24 + 27)/3 = 17
P1 P2 P3
24 27 300
5.12Operating System Concepts
先來先做 (FCFS) 排程法 (Cont.)
如果行程的順序換成 P2 , P3 , P1 .
這樣排程的 Gantt chart 是 :
各行程的等待時間是 P1 = 6; P2 = 0; P3 = 3 平均等待時間是 (6 + 0 + 3)/3 = 3 比前面的例子好很多 有護送效應 (convoy effect), 必須讓前面的一個可能要
花去很長 CPU 執行時間的行程先完成 , 後面的短行程才可以有機會執行 .
P1P3P2
63 300
5.13Operating System Concepts
最短工作優先 (SJF) 排程法 每一個行程都有附屬它下一次 CPU burst 長度的資
訊 . 排程會找出這些行程中的最短的 CPU burst長度來讓它獲得 CPU 執行 .
有兩種機制 : 無搶先 (nonpreemptive)
一旦 CPU 配置給一個行程後 , 這個行程就不能被其他短行程插斷 , 一直要到它 CPU burst 結束 .
可搶先 (preemptive) 一個新的行程的 CPU burst 長度比現在執行中的行程所剩下的
CPU burst 長度來得短 , 執行中的行程可以被插斷讓新的行程執行執行 (preempt). 這個機制就是所謂的最短剩餘時間優先排程法 (Shortest-Remaining-Time-First, SRTF).
SJF 是最佳化的排程法在一個被排程的行程集合中它擁有最短平均等待時間 .
5.14Operating System Concepts
不可搶先執行的 SJF 範例
Process Arrival Time Burst TimeP1 0.0 7P2 2.0 4P3 4.0 1P4 5.0 4
SJF (non-preemptive)
Average waiting time = (0 + 6 + 3 + 7)/4 =4
P1 P3 P2
73 160
P4
8 12
5.15Operating System Concepts
可搶先執行的 SJF 範例
Process Arrival Time Burst TimeP1 0.0 7P2 2.0 4P3 4.0 1P4 5.0 4
SJF (preemptive)
Average waiting time = (9 + 1 + 0 +2)/4 =3
P1 P3P2
42 110
P4
5 7
P2 P1
16
5.16Operating System Concepts
下一個 CPU burst 長度的預估
5.17Operating System Concepts
具有優先權的排程法 每個行程具有一個整數值的優先權號碼 CPU 會配置給最高優先權的行程 ( 通常是最小號碼具有最高優先權 ). Preemptive nonpreemptive
SJF 可以看成是一個以預測的下一個 CPU burst長度為優先權的優先權排程法 .
可能出現的問題是飢餓的現象 (Starvation)低優先權的行程可能永遠無法執行 .
解決方案是老化 (Aging) 當每一段時間過去後去增加該行程的的優先權 .
5.18Operating System Concepts
優先權排程 ( 續 )
行程 CPU 分割時間(毫秒) 優先權 P1 6 2 P2 5 0 P3 7 3 P4 4 1 P5 3 2
0 5 9 25
平均等待時間:( 9 + 0 + 18 + 5 + 15 ) / 5 = 9.4 毫秒 15
P5 P3
18
使用不可搶先的優先權排程優先權數值愈小代表優先權愈高
P2 P4 P1
5.19Operating System Concepts
知更鳥式循環排序法 (Round Robin,RR)
特別為了分時作業系統而設計的,這種排班方法和 FCFS排班法相類似,但是加入可搶先的規則以便試行程互相交換使用 CPU 。我們定義一個小的時間單位,稱為一個時間量 (time quantum或是時間片段 time slice) 。
假使有 n 個行程在 ready queue 而所分配到的時間量是 q, 所以每個行程會以最多是一次 q 時間的區段分到1/n 的 CPU time. 沒有行程會等到超過 (n-1)q 時間 .
效能 q值大時 FIFO q值小時 在考慮 context switch 的消耗時間下 ,q值必須夠
大 , 不然 context switch 的時間會造成系統太大負擔 .
使用 RR 排程法最重要的一點就是定義時間量的長短。一般的經驗法則是 80% 行程的 CPU 分割時間應該要比一個時間量要來得短。
5.20Operating System Concepts
當時間量是 20 的知更鳥循環排程法的範例
Process Burst Time P1 53 P2 17 P3 68 P4 24
The Gantt chart is:
一般來說 , 比 SJF 有較高的平均回覆時間 (turnaround than SJF), 但它的反應時間比較好 .
P1 P2 P3 P4 P1 P3 P4 P1 P3 P3
0 20 37 57 77 97 117 121 134 154 162
5.21Operating System Concepts
時間量及 Context Switch 時間
5.22Operating System Concepts
時間量的不同對於回覆時間(Turnaround Time) 的影響
5.23Operating System Concepts
多層佇列 (multi-level feedback queue) 排程
Ready queue 被分成不同類別的 queues: 前景 , foreground (interactive) 背景 ,background (batch)
每一個 queue 有自己的排程演算法 foreground – RR background – FCFS
必須考慮 queue 之間的排程 . 固定優先權排程 (Fixed priority scheduling)
先服務前景行程 , 然後是背景行程 有可會造成 starvation.
時間切塊 (time slice) 每一個 queue 會獲得固定大小的 CPU 時間 , 這段時間每個 queue 可以排程自己所有的行程
例如 80%CPU 時間給前景 queue 以 RR 來排程 , 20% 給背景 queue以 FCFS 排程
5.24Operating System Concepts
多層佇列排程
5.25Operating System Concepts
多層回饋佇列 (multi-level feedback queue)
一個行程可以在各類 queue 間移走 aging 可以以這樣的方式製作 .
能避免飢餓的現象發生。 多層回饋佇列排班器可以下列參數來定義 :
queues 的個數每個 queue 的排程演算法決定要提升某個行程到另外一個 queue 的方法決定要外放某個行程到另外一個 queue 的方法當一個行程需要服務時 , 決定它要放到哪一個 queue的方法
5.26Operating System Concepts
多層次迴授佇列排程範例 三個 queue:
Q0 – time quantum 8 milliseconds Q1 – time quantum 16 milliseconds Q2 – FCFS
排程方法一個工作會以先來先做的方式進入 Q0,當它獲得
CPU 執行時 , 會有 8 milliseconds 執行時間 .假使無法在 8 milliseconds 完成 , 工作會移到 Q1.
仍然以先來先做的方式進入 Q1 然後可獲得另外 16 milliseconds 的 CPU 執行時間 .假使仍然無法在時間內完成 , 工作會被中斷然後移入 Q2.
5.27Operating System Concepts
Multilevel Feedback Queues
5.28Operating System Concepts
多處理器排程 (Multiple-Processor Scheduling)
1. 方法之一是擁有所有的排班決定、 I/O 處理和由一個單一處理器處理 ( 主機伺服器 ) 。其它處理器只有執行使用者程式碼。非對稱多元處理 (asymmetric multiprocessing) 比對稱式的多處理器簡單,因為只有一個虛理器存取系統資料,減少對資料共享的需要。
2. 第二種方法使用對稱多元處理 (symmetric multiprocessing , SMP) ,每個處理器自行排班。所有處理器可能在一個普通準備好的佇列中,或每一個處理器在準備好行程有它自己私人佇列。不管如何,排班開始時,由每一個處理器的排班程式來檢查準備好的佇列並且選擇一個行程來執行。
5.29Operating System Concepts
執行緒排班
競爭範圍在使用者層次和核心層次的執行緒間有一項差別,是在於它們如何被排班。在製作多對一和多對多模式的系統上,執行緒庫 (thread library) 排班使用者層次的執行緒在可取得的 LWP 上執行,這種技巧稱為行程競爭範圍 (Process-contention scope, PCS) ,因為 CPU的競爭發生在屬於相同行程的執行緒。
當我們說執行緒庫排班使用者執行緒到可用的 LWP上時,並不是指執行緒正在某一個 CPU 上執行 ; 這必須要作業系統排班核心執行緒在實體的 CPU 上執行。
5.30Operating System Concepts
執行緒排班
Pthread 的排班在製作多對多模式的系統上, PTHREAD_SCOPE_PROCESS策略地排班使用者的執行緒在可用的 LWPs 。 LWPs 的數目是由執行緒庫維持,或許使用排班程式活化作用。
在多對多的系統上, PTHREAD_SCOPE_SYSTEM的排班策略將產生和連結一個 LWP 給每一個使用層次執行緒,使用一對一策略有效地對映執行緒。
5.31Operating System Concepts
Solaris 排班
5.32Operating System Concepts
5.33Operating System Concepts
Linux
5.34Operating System Concepts
Windows 2000 的優先權
5.35Operating System Concepts
排程演算法的評估
確認可行的模型 (Deterministic modeling)找一個特定但可確認可行的行程工作量 (workload) 來決定在那個工作量下的每一個行程演算法的效能 .
等候理論模型 (Queueing models) 實做 (Implementation)
5.36Operating System Concepts
經由模擬所獲得的 CPU 排程的評估結果
5.37Operating System Concepts
期中考模擬考題