CPU sheduling在做的就是CPU burst的程式,也就決定在ready queue裡面的Process誰可以被執行,其依靠的就是底下的Scheduling Algorithm,在講演算法之前,要先了解怎麼衡量一個Scheduling演算法的好與壞,因此我需要先介紹一個觀念 - CPU burst & I/O burst
對系統而言,不是在做運算,就是在做I/O,burst的概念有點像是『極限』,CPU burst可以理解為CPU吃到滿,I/O burst則是只系統ㄧ直在做I/O的任務,我在Quora上面有找到一個不錯的解釋情境。
因此最好的排程就是可以把執行時間的CPU burst與I/O burst排到一樣長,不會互相牽制成為彼此的瓶頸。而對於一個programmer而言,都會想要知道程式是屬於 I/O-bound(程式的運行速度瓶頸在記憶體的讀取速度),CPU-bound(程式的執行速度瓶頸在CPU的運算速度),才能夠對症下藥去優化程式的效能。
能做Scheduling 地點大概有四個
Scheduling的Algorithm依照兇殘、霸道的程度分為兩個種類: