1 / 45

作業系統

作業系統. 第五章 CPU 排班. 教學目標. 概觀 排班準則 排班演算法 多處理器的排班 排班演算法的評估. 概觀. 排班程式 就緒佇列 行程執行模式 CPU 排班啟動的時機 分派程式. 排班程式( 1/2 ). 行程在系統中,從要開始執行到執行結束所需碰到的排班程式 長期、中期和短期排班程式 長期排班程式 管理所有要求執行的 程式 進入系統中,並讓執行結束的 行程 離開系統 控制多工作業系統內的多工程度 進入系統的演算法 先進先出、優先權. 排班程式( 2/2 ). 短期排班程式( CPU 排班程式)

Download Presentation

作業系統

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 作業系統 第五章 CPU排班

  2. 教學目標 • 概觀 • 排班準則 • 排班演算法 • 多處理器的排班 • 排班演算法的評估

  3. 概觀 • 排班程式 • 就緒佇列 • 行程執行模式 • CPU排班啟動的時機 • 分派程式

  4. 排班程式(1/2) • 行程在系統中,從要開始執行到執行結束所需碰到的排班程式 • 長期、中期和短期排班程式 • 長期排班程式 • 管理所有要求執行的程式進入系統中,並讓執行結束的行程離開系統 • 控制多工作業系統內的多工程度 • 進入系統的演算法 • 先進先出、優先權

  5. 排班程式(2/2) • 短期排班程式(CPU排班程式) • 從所有準備就緒的行程中選出一個來使用CPU • 使用最頻繁、對效能影響最大,為本章主題 • 中期排班程式 • CPU使用效率 v.s.整體系統效能降低(記憶體空間不足或行程替換過於頻繁) • 為了取得平衡,會暫時讓某些程式離開記憶體,並從就緒狀態移到等待狀態 • 通常屬於記憶體管理系統(ref. ch8, ch9)

  6. 排班程式 v.s. 行程狀態圖

  7. 行程 v.s. 執行緒 的CPU排班 • 相異 • 代表行程的,是在就緒佇列中的行程控制表(PCB) • 代表執行緒的,是在就緒佇列中的執行緒控制表(程式計數器、堆疊記憶體內容、堆疊指標及訊號遮罩表 ) • 其它的考量點(演算法、準則等)相同,因此我們以行程的CPU排班為討論主題

  8. 就緒佇列(ready queue) • 存放準備就緒、等待執行(行程狀態為就緒)的行程的資料結構 • CPU排班演算法對此資料結構作運算 • 慣稱 • 依排班演算法和實作的不同,可能為佇列(queue)、堆疊(stack)、堆積(heap)等,不見得一定是佇列(queue)型態 • 一般以就緒佇列為其慣稱

  9. 行程執行模式 • CPU排班就是,合理分配CPU執行權給每個行程的CPU週期

  10. CPU排班啟動的時機 • 準備就緒 • 執行結束 • 等待某個事件 • 等待的事件發生 • CPU時間分量結束

  11. 閒置行程(idle process) • 目的 • 若目前沒有任何行程能夠執行,CPU排班程式就挑它來執行,避免不可預期的結果 • 工作內容 • 讓CPU空轉 • 其它工作(啟動省電模式、記憶體回收、….) • 範例 • Linux的Init行程 • Windows的System Idle Process

  12. 分派程式(dispatcher) • 目的 • 將CPU的執行權交給由CPU排班程式挑出來的行程 • 步驟 • 本文切換 • 由核心模式切回使用者模式 • 跳到該行程接下來要執行的程式碼,讓行程重新啟動

  13. 準備就緒 執行結束 選好的下個 執行行程 觸發 CPU排班程式 分派程式 等待某個事件 本文切換 等待的事件發生 就緒佇列 行程開始執行 CPU時間分量結束 CPU排班流程示意圖

  14. 排班的準則 • 目的 • 設計、評估一個排班演算法的依據 • 項目 • CPU使用率(CPU utilization) • 整體成效(throughput) • 行程所需時間(turnaround time) • 等待時間(waiting time) • 回應時間(response time)

  15. 應用範例 • 科學計算 • CPU使用率高的演算法 • 交談式系統 • 回應時間短的演算法 • 一般狀況 • 平衡、兼顧各項準則

  16. 排班演算法 • CPU排班的核心問題 • 也可為其它領域(e.g. 磁碟排班、I/O排班、通訊封包排班等)參考 • 介紹的內容 • 先來先做 • 最短工作優先 • 優先權 • 循環式 • 多層佇列 • 多層回饋佇列

  17. 可搶先式 v.s. 不可搶先式 • 不可搶先式(non-preemptive) • 正在執行中的行程,只能主動地放棄CPU執行權,例如:行程結束、等待事件、…. • 優點:較簡單、行程所需時間(turnaround time)短 • 可搶先式(preemptive) • 正在執行中的行程,任何時候都可能被迫放棄CPU執行權給別的行程 • 優點:等待時間短、回應時間短

  18. 先來先做(first come first served;FCFS)排班演算法 • 較早來到作業系統內部的行程,會較早取得CPU的資源來執行其運算 • 佇列(queue) • 不可搶先 • 優點 • 原理簡單、容易懂、也容易實作 • 缺點 • 平均等待時間長(不適合分時系統 ) • 回應時間長(不適合交談式系統)

  19. 先來先做演算法的範例 PA、PB、PC的到達順序 平均等待時間:(0+41+43)/3=28毫秒 Pc、PB、PA的到達順序 平均等待時間:(0+1+3)/3=1.33毫秒

  20. 最短工作優先(shortest job first;SJF)排班演算法 • 或稱最短時間優先(shortest-next-cpu-burst;SNCB)演算法 • 下一次CPU執行週期時間最短的行程優先 • 預測行程的下一個CPU運算週期時間之方法 • 指數平均數(exponential average)的方法 • 可搶先 v.s 不可搶先(最短剩餘時間優先 ) • 整體的行程平均等待時間(average waiting time)最小

  21. 最短工作優先的範例 不可搶先,平均等待時間: (0+6.5+9+5.5)/4=5.25毫秒 可搶先,平均等待時間: (6+0+9+0)/4=3.75毫秒

  22. 優先權(priority)排班演算法 • 為每個行程指定它的優先權 • 選取下一個要被執行的行程時,是以當時具有最高優先權的行程為第一優先 • 可搶先 v.s.不可搶先 • 潛在問題 • 飢餓 • 可被用來模擬其他種類的排班演算法 • 例如:先來先做、後來先執行、最短工作優先

  23. 循環式(round-robin;RR)排班演算法 • 為每個行程分配一段時間分量(time quantum / time slice,通常是10~100毫秒之間) • 當執行中的行程用完其時間分量時 • 強制取得其CPU使用權 • 將此行程重新放到就緒佇列的末端 • 將CPU的使用權給就緒佇列開頭的行程

  24. 時間分量1 時間分量2 ●●● 時間分量n ●●● 行程1 行程2 行程n 遞減 執行 計時器 CPU 循環式排班演算法示意圖

  25. 循環式排班演算法的範例 時間分量為3,平均等待時間: (12+1.5+7+3.5)/4=6毫秒

  26. 循環式演算法的問題—即時反應與整體效能的平衡之考量循環式演算法的問題—即時反應與整體效能的平衡之考量

  27. 循環式與優先權排班的結合 • 目標 • 在循環式排班演算法中,加入優先權的性質 • 方法 • 在就緒佇列中放置多份代表某一行程的資料結構,優先權越高的越多份 • 直接分配較多的時間分量給高優先權的行程

  28. 多層佇列(multilevel-queue)排班演算法 • 將就緒佇列分成幾個分類較細的就緒佇列 • 校長、教授、助教、學生工作的就緒佇列 • 前景行程、背景行程就緒佇列 • 高、中、低優先權就緒佇列 • 可對各個就緒佇列採用不同的排班演算法 • 例如:對前景行程用循環式、背景行程用先來先做 • 優點 • 因應各性質的行程、彈性高 • 缺點 • 行程飢餓(starvation)

  29. 多層佇列排班演算法示意圖

  30. 多層回饋佇列(multilevel-feedback-queue)排班演算法 • 多層佇列+允許行程在不同的就緒佇列中移動 • 解決行程飢餓問題 • 低優先權佇列的行程太久沒被執行,就移往較高優先權佇列 • 範例 • Windows XP和Linux對一般等級的行程所設定的排班演算法

  31. 多層回饋佇列排班演算法示意圖

  32. 多處理器系統的排班 • 概觀 • 分類 • 硬體特性 • 工作性質 • 共用佇列與專屬佇列 • 負載平衡 • 處理器偏好

  33. 多處理器系統排班之概觀 • 優點 • 理論上,多一個處理器就可以同時多執行一項工作,使系統的執行效能得到加倍提昇 • 挑戰 • 所面對的問題遠比單處理器複雜 • 例如:共用資源的存取、各處理器的工作負荷不平均

  34. 多處理器系統的分類—硬體特性 • 異質 • 每個處理器本身可以做的工作就不相同 • 例如:MCU+DSP • 同質 • 每個處理器本身可以做的工作性質都是相同的 • 例如:目前流行的雙核心、四核心處理器

  35. 多處理器系統的分類—工作性質 • 非對稱式多重處理 • 主從式的模式 • 運作單純、整體效能比較差 • 異質多處理器系統只能採用本模式 • 對稱式多重處理(SMP) • 每個處理器的地位相當,都有自己所屬的CPU排班程式 • 目前大部分的現代作業系統都有支援SMP,也是我們討論的主題

  36. SMP系統排班的主要考量 • 共用佇列與專屬佇列 • 負載平衡 • 處理器偏好

  37. 共用佇列與專屬佇列 • 所有就緒行程的佇列安排方式: • 共用佇列 • 全放到一個共用的佇列中,每個處理器的排班程式再到共用佇列中取得行程來執行 • 同步問題 • 專屬佇列 • 分散到各個處理器專屬的佇列中,每個處理器的排班程式到各專屬的佇列中挑取行程來執行 • 大部分的SMP系統採用專屬佇列

  38. 就緒佇列 就緒佇列 就緒佇列 同步控制 排班程式 排班程式 排班程式 排班程式 CPU[n] CPU[1] ●● CPU[n] CPU[1] ●● 使用共用佇列的SMP 使用專屬佇列的SMP SMP共用佇列與專屬佇列示意圖

  39. 負載平衡(load balance) • 狀況 • 某些處理器可能會一直很忙碌,並且還有一堆行程等待處理 • 而某些處理器卻閒置著 • 目的 • 讓每個處理器都能維持忙碌的狀態,以提高系統最大的效能

  40. 達成負載平衡的作法 • 拉遷移 • 閒置的處理器主動到忙碌的處理器之就緒佇列中,「拉」一或多個等待執行的行程回來執行 • 推遷移 • 一特定行程,週期性地檢查每個處理器的負載情況 • 發現有負載不平衡時,從負載過重的處理器那「推」幾個行程給閒置中或負載過輕的處理器 • 兩種作法可並存

  41. 處理器偏好(processor affinity) • 原因 • 將某行程移到另一個處理器執行的時候,必須把已經放在原處理器的記憶體和各層快取中的所有資料作廢,另外再搬移到新處理器的記憶體和各層的快取裡 • 很耗系統時間 • 某個行程會「偏好」於某個處理器執行,避免浪費系統資源

  42. 處理器偏好的分類 • 軟性偏好 • 作業系統會儘量讓行程待在同一個處理器執行,但是不保證一定不會被移到別的處理器 • 硬性偏好 • 作業系統允許行程設定成它只會在某個處理器執行,並保證不會被移到別的處理器 • 注意 • 負載平衡和處理器偏好兩者是互相違背的

  43. 排班演算法的評估 • 定量評估 • 使用一個事先想像好的狀況,模擬各個演算法的執行效率 • 模擬 • 寫模擬程式,求得實際的演算法數據 • 實作 • 依照演算法的流程,實際撰寫真實系統中的程式碼片段

  44. 小結(1/2) • 行程在系統中,從要開始執行到執行結束所需碰到的排班程式,包括長期、中期和短期排班程式 • CPU(短期)排班演算法是討論的主題,設計、評估的準則有CPU使用率、整體成效、行程所需時間、等待時間、回應時間 • 討論的CPU排班演算法,包括先來先做、最短工作優先、優先權、循環式、多層佇列以及多層回饋佇列

  45. 小結(2/2) • 多處理器系統的排班考量,包括對稱式多重處理和非對稱式多重處理、共用佇列與專用佇列、處理器偏好以及負載平衡等 • 硬性即時排班演算法為另一個其它常見的主題,常見於即時系統(ch14)和要求服務品質(QoS)的系統(ch15) • 評估各種排班演算法效率的方法,通常包括定量評估、模擬與實作

More Related