在 Process 章節,我們提到系統中包含 Long-term, Short-term, Medium-term 等多種排程
在本章節,我們會針對 Short-term Scheduling,也就是 CPU Scheduling 詳細說明
作業系統採用 multiprogramming 方法得到 CPU 最大使用率,一般 process 一開始都是 CPU Burst,交由 CPU 去處理該 process,接著是 I/O Burst,做 I/O 資料的傳送。在正常的狀況下,process 就在這兩個狀態間一直循環,最後會呼叫一個終止行程執行的 system call 作為行程的結束
排成進行的時機是由 Decision Mode 決定的,一般分為 Non-preemptive 與 Preemptive 兩種
進行 CPU scheduling 的可能時機有下列四種:
Non-preemptive:
Non-preemptive 不可搶奪型,又稱 cooperative scheduling 合作式排程
Preemptive:
Preemptive 可搶奪型
分派程式 Dispatcher 主要負責將 CPU 控制權交給經由 CPU Scheduling 所挑選出來的 process
主要工作有三:
Dispatch Latency 是指 Dispatcher 停止一個 process 並開始另一個 process 所耗的時間,這個時間越短越好
衡量排班效能的準則:
Starvation 飢餓現象: 某些 process 因長期無法取得足夠資源來完成工作,造成自身無窮停滯的情況 (Infinite Blocking)
解決方式: Aging Technique (老化技術)
系統每隔一段時間,便將待在系統內時間很長卻未完成工作的 process 逐步提高其 priority value
Soft Real-Time system 不採用
First Come First Served Scheduling, FCFS
Arrival time 越早的 process 越優先取得 CPU 控制權
Shortest Job First Scheduling, SJF
Process 的 CPU Burst Time 越少,越優先取得 CPU 控制權
Shortest Remaining Time First Scheduling, SRTF
Process 的 Remaining Time 越小,越優先取得 CPU 控制權
Priority Scheduling
Process 的 優先權越高,越優先取得 CPU 控制權
Round Robin Scheduling
作業系統會規定一個 CPU Time Slice (Time Quantum),當 process 獲取 CPU 執行,若未能在 CPU Time Slice 內完成,則 process 會被迫放棄 CPU,狀態從 Running → Ready,等候下一輪 CPU 使用權