每一個process都有一個priority,system會從priority的開始優先處理。若一直有高priority的process要執行的話,則可能會造成low priority的process永遠不會被執行到,造成indefinite blocking or starvation。
Priority Scheduling可以是preemptive or non-preemptive。若是preemptive,則新到process若其priority比正在跑之process高則取代它執行;若是後者則放在ready queue中等待執行
indefinite blocking也可能發生在用LIFO(Last In First Out)的scheduling中
Solution:這可以用aging或者Dynamic Priority, Floating Priority來解決
/* aging: 系統每隔一段時間,將待在系統內時間很長,卻又未能完成工作的process,逐漸調高其priority,因此,在有限的時間內,其優先權可以升到最高,進而可取得資源完成工作 */
Reference:
[1]http://www.csie.ntnu.edu.tw/~swanky/os/chap4.htm
2012年2月29日 星期三
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言