更新時(shí)間:2020-11-26 17:43:10 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2323次
在系統(tǒng)中,用戶進(jìn)程數(shù)一般都多于處理機(jī)數(shù),這將導(dǎo)致它們互相爭奪處理機(jī)。另外,系統(tǒng)進(jìn)程也同樣需要使用處理機(jī)。這就要求進(jìn)程調(diào)度程序按一定的策略,動(dòng)態(tài)地把處理機(jī)分配給處于就緒隊(duì)列中的某一個(gè)進(jìn)程,以使之執(zhí)行。本文我們就來介紹這些進(jìn)行動(dòng)態(tài)分配的進(jìn)程調(diào)度算法。
一、先來先服務(wù)和短作業(yè)(進(jìn)程)優(yōu)先調(diào)度算法
1.先來先服務(wù)調(diào)度算法
按照作業(yè)提交或進(jìn)程變?yōu)榫途w狀態(tài)的先后次序,分派CPU;
當(dāng)前作業(yè)或進(jìn)程占用CPU,直到執(zhí)行完或阻塞,才出讓CPU(非搶占方式)。
在作業(yè)或進(jìn)程喚醒后(如I/O完成),并不立即恢復(fù)執(zhí)行,通常等到當(dāng)前作業(yè)或進(jìn)程出讓CPU。
適用場景:
比較有利于長作業(yè),而不利于短作業(yè)。因?yàn)殚L作業(yè)會(huì)長時(shí)間占據(jù)處理機(jī)。
有利于CPU繁忙的作業(yè),而不利于I/O繁忙的作業(yè)。
2.短作業(yè)(進(jìn)程)優(yōu)先調(diào)度算法
短作業(yè)(進(jìn)程)優(yōu)先調(diào)度算法SJ(P)F,是指對(duì)短作業(yè)或短進(jìn)程優(yōu)先調(diào)度的算法。它們可以分別用于作業(yè)調(diào)度和進(jìn)程調(diào)度。短作業(yè)優(yōu)先(SJF)的調(diào)度算法是從后備隊(duì)列中選擇一個(gè)或若干個(gè)估計(jì)運(yùn)行時(shí)間最短的作業(yè),將它們調(diào)入內(nèi)存運(yùn)行。而短進(jìn)程優(yōu)先(SPF)調(diào)度算法則是從就緒隊(duì)列中選出一個(gè)估計(jì)運(yùn)行時(shí)間最短的進(jìn)程,將處理機(jī)分配給它,使它立即執(zhí)行并一直執(zhí)行到完成,或發(fā)生某事件而被阻塞放棄處理機(jī)時(shí)再重新調(diào)度。主要的不足之處是長作業(yè)的運(yùn)行得不到保證
二、高優(yōu)先權(quán)優(yōu)先調(diào)度算法
1.優(yōu)先權(quán)調(diào)度算法的類型
為了照顧緊迫型作業(yè),使之在進(jìn)入系統(tǒng)后便獲得優(yōu)先處理,引入了最高優(yōu)先權(quán)優(yōu)先(FPF)調(diào)度算法。此算法常被用于批處理系統(tǒng)中,作為作業(yè)調(diào)度算法,也作為多種操作中的進(jìn)程調(diào)度算法,還可用于實(shí)時(shí)系統(tǒng)中。當(dāng)把該算法用于作業(yè)調(diào)度時(shí),系統(tǒng)將從后備隊(duì)列中選擇若干個(gè)優(yōu)先權(quán)最高的作業(yè)裝入內(nèi)存。當(dāng)用于進(jìn)程調(diào)度時(shí),該算法是把處理機(jī)分配給就緒隊(duì)列中優(yōu)先權(quán)最高的進(jìn)程。
2.高響應(yīng)比優(yōu)先調(diào)度算法
在批處理系統(tǒng)中,短作業(yè)優(yōu)先算法是一種比較好的算法,其主要的不足之處是長作業(yè)的運(yùn)行得不到保證。如果我們能為每個(gè)作業(yè)引入前面所述的動(dòng)態(tài)優(yōu)先權(quán),并使作業(yè)的優(yōu)先級(jí)隨著等待時(shí)間的增加而以速率a 提高,則長作業(yè)在等待一定的時(shí)間后,必然有機(jī)會(huì)分配到處理機(jī)。
三、基于時(shí)間片的輪轉(zhuǎn)調(diào)度算法
1.輪轉(zhuǎn)調(diào)度算法
在分時(shí)系統(tǒng)中,最簡單最常用的是時(shí)間片的輪轉(zhuǎn)調(diào)度算法,該算法采用了非常公平的處理機(jī)分配方式,即讓就緒隊(duì)列上的每個(gè)進(jìn)程僅運(yùn)行一個(gè)時(shí)間片。
系統(tǒng)將所有就緒進(jìn)程按FCFS策略排成就緒隊(duì)列。系統(tǒng)每隔一段時(shí)間產(chǎn)生一次間斷,去激活進(jìn)程調(diào)度程序進(jìn)行調(diào)度,把CPU分配給隊(duì)首進(jìn)程,并令其執(zhí)行一個(gè)時(shí)間片
若一個(gè)時(shí)間片還未用完,進(jìn)程便已完成就立即激活調(diào)度程序,將他從就緒隊(duì)列中刪除。
若一個(gè)時(shí)間片用完,計(jì)時(shí)器中斷處理程序被激活,調(diào)度程序?qū)⑺屯途w隊(duì)列末尾。
2.多級(jí)反饋隊(duì)列調(diào)度算法
前面介紹的各種用作進(jìn)程調(diào)度的算法都有一定的局限性。如短進(jìn)程優(yōu)先的調(diào)度算法,僅照顧了短進(jìn)程而忽略了長進(jìn)程,而且如果并未指明進(jìn)程的長度,則短進(jìn)程優(yōu)先和基于進(jìn)程長度的搶占式調(diào)度算法都將無法使用。而多級(jí)反饋隊(duì)列調(diào)度算法則不必事先知道各種進(jìn)程所需的執(zhí)行時(shí)間,而且還可以滿足各種類型進(jìn)程的需要,因而它是目前被公認(rèn)的一種較好的進(jìn)程調(diào)度算法。
進(jìn)程調(diào)度任務(wù)的本質(zhì)實(shí)際上就是保存當(dāng)前進(jìn)程的處理機(jī)的現(xiàn)場信息,然后按照算法選取進(jìn)程,再把處理器分配給進(jìn)程。知道了進(jìn)程調(diào)度任務(wù)的本質(zhì)我們理解起進(jìn)程調(diào)度算法也就事半功倍了。我們也可以參考本站的Java多線程教程中關(guān)于多進(jìn)程調(diào)度算法的講解,加深我們對(duì)多進(jìn)程調(diào)度算法的理解。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743