Preemptive Scheduling
Introduction
跟 nonpreemptive scheduling 相比,採用 preemptive scheduling 的 OS 可以強制將 CPU 從 process 那裡搶回來
現代的 OS 都是用 preemptive scheduling
Race Condition
Preemptive 讓 context switch 可以發生在任何時間點,因此很可能發生 race condition
For example,
Process A 正在更新共享資料(寫到一半)
│
▼
OS 把 A 搶走,換 Process B 跑
│
▼
Process B 去讀同一筆資料
│
▼
資料處於 inconsistent state(A 還沒寫完)
│
▼
B 讀到的是錯誤的資料 ← Race Condition!