目錄表

CPU Scheduling

0x00 Outline


0x01 CPU 排程簡介

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 作為行程的結束


0x02 Decision Mode

排成進行的時機是由 Decision Mode 決定的,一般分為 Non-preemptivePreemptive 兩種

進行 CPU scheduling 的可能時機有下列四種:

  1. 當一個 process 的狀態由 running 轉為 waiting 時
  2. 當一個 process 的狀態由 running 轉為 ready 時 e.g. time sharing 因為 timeout 回到 ready
  3. 當一個 process 的狀態由 waiting 轉為 ready 時
  4. 當一個 process 的狀態由 running 轉為 terminate 時

Non-preemptive:

Non-preemptive 不可搶奪型,又稱 cooperative scheduling 合作式排程

Preemptive:

Preemptive 可搶奪型


0x03 Dispatcher

分派程式 Dispatcher 主要負責將 CPU 控制權交給經由 CPU Scheduling 所挑選出來的 process

主要工作有三:

Dispatch Latency 是指 Dispatcher 停止一個 process 並開始另一個 process 所耗的時間,這個時間越短越好


0x04 Scheduling Criteria

衡量排班效能的準則:


0x05 Starvation

Starvation 飢餓現象: 某些 process 因長期無法取得足夠資源來完成工作,造成自身無窮停滯的情況 (Infinite Blocking)

解決方式: Aging Technique (老化技術)

系統每隔一段時間,便將待在系統內時間很長卻未完成工作的 process 逐步提高其 priority value

Soft Real-Time system 不採用


0x06 Scheduling Algorithms

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 使用權