第八天 CPU Scheduling--上
今天我們來說說CPU的排程吧!先來講基本的排程概論:
CPU Scheduling是為了要讓CPU在多處理器的架構下,能有最好的運用效能。在執行時,CPU跟I/O burst會輪流執行,形成CPU-I/O Burst Cycle,在這兩者之中,CPU burst的分配是最主要的,而且短時間內CPU跟I/O互相作用(幾乎在10 milliseconds 內作用完成)。
而現在這裡講的CPU Scheduling是講short-term scheduling。CPU Scheduling是由short-term scheduler來負責。scheduling的時間點有4個:
其中的一跟四在排程時,是不能中斷的,二跟三是可以中斷,但需要考慮到是否有shared data、是否在kernel mode,還有他們是不是真的能中斷。
在scheduling中,真正把process搬上搬下(context switch),還有把CPU控制權交給scheduler所選的process,其實是dispatcher。Dispatcher做的事情有:
而要怎麼確認scheduling呢?以下有一些標準可以評斷:
接下來我們來說排程的演算法,有以下幾種:
那要預估就需要用到exponential averaging,以下是他的公式:
我們通常會將α設定為1/2
而這種演算法,如果執行到一半,有一個比剩下要執行時間還短的process來,這時候就要先去執行新來的process。以下是舉例即說明:
還有幾個演算法,我們明天繼續討論!