|
調(diào)度程序是操作系統(tǒng)內(nèi)核的組成部分,它負(fù)責(zé)選擇下一個要運(yùn)行的進(jìn)程。所以調(diào)度策略就決定了這個操作系統(tǒng)的是非實(shí)時還是實(shí)時的操作系統(tǒng)。當(dāng)今操作系統(tǒng)的種類繁多,但進(jìn)程調(diào)度算法可以總結(jié)為一下幾種。 先來先服務(wù)調(diào)度算法(FCFS)先來先服務(wù)的調(diào)度策略非常的簡單。維護(hù)一個就緒隊(duì)列,每次調(diào)度是從就緒隊(duì)列中選擇一個最先進(jìn)入該隊(duì)列的進(jìn)程,為之分配處理機(jī),使之投入運(yùn)行。該進(jìn)程一直運(yùn)行到完成或發(fā)生某事件而阻塞后才放棄處理機(jī)。 短進(jìn)程優(yōu)先調(diào)度算法(SPF)短進(jìn)程優(yōu)先(SPF)調(diào)度算法則是從就緒隊(duì)列中選出一個估計運(yùn)行時間最短的進(jìn)程,將處理機(jī)分配給它,使它立即執(zhí)行并一直執(zhí)行到完成,或發(fā)生某事件而被阻塞放棄處理機(jī)時再重新調(diào)度。 高優(yōu)先權(quán)優(yōu)先調(diào)度算法為了照顧緊迫型的進(jìn)程,能讓這些進(jìn)程得到優(yōu)先的運(yùn)行,所以引入了優(yōu)先權(quán)優(yōu)先調(diào)度算法。這種調(diào)度算法可以用在實(shí)時操作系統(tǒng)上。當(dāng)進(jìn)程調(diào)度發(fā)生時,該算法把處理機(jī)分配給就緒隊(duì)列中優(yōu)先級最高的進(jìn)程。 該算法有兩種類型:
想象下高優(yōu)先進(jìn)程由于因資源缺乏而處于受阻狀態(tài),一直等到低優(yōu)先級進(jìn)程釋放資源為止。而低優(yōu)先級獲得的CPU時間少,如果此時有優(yōu)先級處于兩者之間的任務(wù),并且不需要那個共享資源,則該中優(yōu)先級的進(jìn)程反而超過這兩個進(jìn)程而獲得CPU時間。如果高優(yōu)先級等待資源時不是阻塞等待,而是忙循環(huán),則可能永遠(yuǎn)無法獲得資源,因?yàn)榇藭r低優(yōu)先級進(jìn)程無法與高優(yōu)先級進(jìn)程爭奪CPU時間,從而無法執(zhí)行,進(jìn)而無法釋放資源,造成的后果就是高優(yōu)先級進(jìn)程無法獲得資源而繼續(xù)推進(jìn)。我們把這種現(xiàn)象稱之為:優(yōu)先級翻轉(zhuǎn)。 怎么解決上述問題呢? 有三種方法:
高響應(yīng)比優(yōu)先調(diào)度算法在CPU密集型系統(tǒng)中,短進(jìn)程優(yōu)先級算法是比較好的一種算法。但是長進(jìn)程的運(yùn)行時得不到確定保證的。該怎么解決這個問題呢?我們是不是可以引入一種動態(tài)優(yōu)先級,用大白話說等待的時間越長,優(yōu)先級就會變得越高。所以,等待了一段時間之后,就會一定輪到運(yùn)行的。但是其中的這個動態(tài)計算優(yōu)先級的算法是需要消耗CPU資源的。 時間片輪轉(zhuǎn)在早期的時間片輪轉(zhuǎn)法中,系統(tǒng)將所有的就緒進(jìn)程按先來先服務(wù)的原則排成一個隊(duì)列,每次調(diào)度時,把CPU 分配給隊(duì)首進(jìn)程,并令其執(zhí)行一個時間片。時間片的大小從幾ms 到幾百ms。當(dāng)執(zhí)行的時間片用完時,由一個計時器發(fā)出時鐘中斷請求,調(diào)度程序便據(jù)此信號來停止該進(jìn)程的執(zhí)行,并將它送往就緒隊(duì)列的末尾;然后,再把處理機(jī)分配給就緒隊(duì)列中新的隊(duì)首進(jìn)程,同時也讓它執(zhí)行一個時間片。這樣就可以保證就緒隊(duì)列中的所有進(jìn)程在一給定的時間內(nèi)均能獲得一時間片的處理機(jī)執(zhí)行時間。換言之,系統(tǒng)能在給定的時間內(nèi)響應(yīng)所有用戶的請求。 多級反饋隊(duì)列調(diào)度算法我們之前講的調(diào)度算法都有一定的局限性。如短進(jìn)程優(yōu)先調(diào)度算法,僅照顧了短進(jìn)程,而忽略了長進(jìn)程。而多級反饋隊(duì)列調(diào)度算法,是一種均衡的,能夠滿足各類進(jìn)程的需要。所以是目前比較好的進(jìn)程調(diào)度算法。
參考https://blog.csdn.net/qq_35642036/article/details/82809812,源理君參考了這篇文章。 總結(jié)本文講了幾種進(jìn)程調(diào)度算法,希望對進(jìn)程調(diào)度算法有興趣的朋友們,有所幫助。當(dāng)然還有本文沒有談到的調(diào)度算法,如:彩票調(diào)度,單比率調(diào)度等等。 覺得不錯,記得轉(zhuǎn)發(fā),關(guān)注哦! |
|
|