290 likes | 647 Views
Operation System Chapter 5. 中央處理器的排班. 排程. 為何要排程 (Scheduling)? 避免 CPU 浪費時間等待 許多 processes 同時存放在記憶體中,當某個 process 在等待的狀態時, OS 就把 CPU 的資源交給其他 process 使用。. CPU 排程. 一旦 CPU 閒置,作業系統必須從就緒佇列之中選出其中一個行程來執行。選取行程是由短程排班程式 (short-term scheduler) (或 CPU 排班程式)來執行。 排班程式自記憶體之中準備要執行的數個行程選出一個,並將 CPU 配置給它。
E N D
Operation SystemChapter 5 中央處理器的排班
排程 • 為何要排程(Scheduling)? • 避免CPU浪費時間等待 • 許多processes同時存放在記憶體中,當某個process在等待的狀態時,OS就把CPU的資源交給其他process使用。
CPU排程 • 一旦CPU閒置,作業系統必須從就緒佇列之中選出其中一個行程來執行。選取行程是由短程排班程式(short-term scheduler)(或CPU排班程式)來執行。 • 排班程式自記憶體之中準備要執行的數個行程選出一個,並將CPU配置給它。 • 多元程式規劃系統的主要目的,就是要隨時保有一個行程在執行,藉以提高CPU使用率。
CPU-I/O 分割週期 • 行程的執行是由CPU執行時間及I/O等待時間所組成的週期(cycle)。行程在這兩者之間交替往返 CPU分割 I/O分割 CPU分割 I/O分割 CPU分割 I/O分割
CPU分割時間的統計圖 出現次數 時間長度(毫秒)
CPU 排班程式 • CPU 排班的決策發生在下面四種情況: 1.當一行程從執行狀態轉變成等待狀態時. 2.當一行程從執行狀態轉變成就緒狀態時. 3.當一行程從等待狀態轉變成就緒狀態時. 4.當一行程終止時. • 排班只發生在情況1和4時,稱這種排班方法為不可搶先(nonpreemtive). • 否則就稱為可搶先(preemtive).
不可搶先vs.可搶先 • 在不可搶先排班之下,一旦CPU配置給一個行程,此行程就一直保有CPU資源,直到終止或等待狀態方可釋放出CPU。MS. Windows環境就是使用此種。 • 可搶先排班比上者好,但是需要特殊的OS核心設計,避免數個資料共享的行程因排程而造成混亂;UNIX或Linux皆是此種。
分派程式 • OS中CPU排班功能所包含的另外一個元件就是分派程式(dispatcher),分派程式就是將CPU控制權交給其他行程時所採用的模組,這個功能包括: • 轉換內容 • 轉換成使用者模式 • 跳越到使用者程式的適當位置以便重新開啟程式
排程原則 • CPU使用率:要使CPU盡可能地忙碌 • 產量(throughput):衡量產量的標準以每單位時間所完成的行程數 • 回復時間(turnaround time):從行程進入電腦,一植到它完成並離開的這段時間 • 等候時間(waiting time):總計影響一個行程在就緒佇列等候時間 • 反應時間(response time):從提出一個要求到第一個反應出現的時間
最佳排程的原則 • 1.Max CPU utilization • 2.Max throughput • 3.Min turnaround time • 4.Min waiting time • 5.Min response time
排程法 • 先來先做(First-Come, First-Served, FCFS) • 最短的工作先做(Shortest-Job-First, SJF ) • 優先權(Priority) • 依序循環(Round-robin, RR) • 多層佇列(multilevel) • 多層回饋佇列(multilevel feedback)
P1 P2 P3 0 24 27 30 先來先做之排班方法 (FCFS) • 例子: 行程P1P2P3 分割時間24 3 3 如果行程到達的順序是: P1 , P2 , P3, 並且以FCFS順序來服務,,待到的結果用以下的圖示 • 等待時間: P1 = 0; P2 = 24; P3 = 27 • 平均等待時間: (0 + 24 + 27)/3 = 17
先來先做排班 (Cont.) 如果行程到達的次序是 P2 , P3 , P1 . • 那麼以下的行程圖就表現出另一種結果: • 等待時間是 P1 = 6;P2 = 0; P3 = 3 • 平均等待間: (6 + 0 + 3)/3 = 3 • 當所有其他的行程都在等待一個大行程(如P1 )離開CPU時候.就產生所謂的護送現象(convoy effect),如果比較短的行程可以先做,裝置將可以獲得更高的使用率. P2 P3 P1 0 3 6 30
最短的工作先做之排班方法 (SJR) • SJF ---可以證明是證明是最理想的,採用這種方式我們將可以得到一組行程的最小平均等待間.
不可搶先最短的工作先做之排班 行程到達時間分割時間P1 0.0 7 P2 2.0 4 P3 4.0 1 P4 5.0 4 • SJF (不可搶先) • 平均等待時間 = (0 + 6 + 3 + 7)/4 = 4 P3 P2 P4 P1 0 3 7 8 12 16
可搶先的最短的工作先做之排班 行 程到達時間分割時間 P1 0.0 7 P2 2.0 4 P3 4.0 1 P4 5.0 4 • SJF (可搶先) • 平均等待時間 = (9 + 1 + 0 +2)/4 = 3 P1 P2 P3 P2 P4 P1 11 16 0 2 4 5 7
優先權排班 • 它會先考慮行程的優先先順序 • 以五個行程佇列為例 • 平均等待時間為8.2毫秒
依序循環排班 (RR) • 所謂依序指的是FCFS,循環意味著每個行程只給固定時間輪流執行;以下圖為例,我們以4毫秒為一個週期,則平均等待時間為 • (4+7+(10-4))/3=5.66毫秒
P1 P2 P3 P4 P1 P3 P4 P1 P3 P3 Example: RR with Time Quantum = 20 行程分割時間 P1 53 P2 17 P3 68 P4 24 • 請畫畫看行程圖的結果為何? 0 20 37 57 77 97 117 121 134 154 162
參考文獻 • Silberschatz, A., Baer, G., Gagne, G. (2002), Operating system concepts, 6th ed., John Wiley & Sons.
先來先做(FCFS) P1 P2 P3 P4 0 8 12 21 26 平均回復時間:P1 8 – 0 = 8 P2 12 – 1 = 11 P3 21 – 2 = 19 P4 26 – 3 = 23 (8+11+19+23) / 4 = 15.25 資料轉換次數:3次
最短的工作先做(SJF)不可搶先 P1 P2 P4 P3 0 8 12 17 26 平均回復時間:P1 8 – 0 = 8 P2 12 – 1 = 11 P3 26 – 2 = 24 P4 17 – 3 = 14 (8+11+24+14) / 4 = 14.25 資料轉換次數:3次
最短的工作先做(SJF)可搶先 P1 P2 P4 P1 P3 0 1 5 10 17 26 平均回復時間:P1 17 – 0 = 17 P2 5 – 1 = 4 P3 26 – 2 = 24 P4 10 – 3 = 7 (17+4+24+7) / 4 = 13 資料轉換次數:4次
優先權排班(Priority)不可搶先 P1 P2 P4 P3 0 8 12 17 26 平均回復時間:P1 8 – 0 = 8 P2 12 – 1 = 11 P3 26 – 2 = 24 P4 17 – 3 = 14 (8+11+24+14) / 4 = 14.25 資料轉換次數:3次
優先權排班(Priority)可搶先 P1 P2 P4 P1 P3 0 1 5 10 17 26 平均回復時間:P1 17 – 0 = 17 P2 5 – 1 = 4 P3 26 – 2 = 24 P4 10 – 3 = 7 (17+4+24+7) / 4 = 13 資料轉換次數:4次
依序循環(Round-Robin)time slice=2 P1 P2 P3 P4 P1 P2 P3 P4 P1 P3 P4 P1 P3 P3 0 2 4 6 8 10 12 14 16 18 20 21 23 25 26 平均回復時間:P1 23 – 0 = 23 P2 12 – 1 = 11 P3 26 – 2 = 24 P4 21 – 3 = 18 (23+11+24+18) / 4 = 19 資料轉換次數:12次