日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

调度算法

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 调度算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先來先服務(FCFS)

FCFS調度算法是一種最簡單的調度算法,它即可用于作業調度,又可以用于進程調度啊,

作業調度中,算法每次從后備作業隊列中選擇最先進入該隊列的一個或幾個作業,將它們調入內存,分配必要的資源,創建進程并放入就緒隊列。

在進程調度中,FCFS調度算法每次從就緒隊列中選擇最先進入該隊列的進程,將處理機分配給它,使之投入運行,直到完成或因某種原因而阻塞時才釋放處理機。

例如:各進程到達就緒隊列的時間、需要的運行時間如下表所示。使用先來先服務調度算法,計算各進程的等待時間、平均等待時間、周轉時間、平均周轉時間、帶權周轉時間、平均帶權周轉時間。

FCFS調度算法屬于不可剝奪算法。不能作為分時系統和實時系統的主要調度策略。

FCFS調度算法特點:算法簡單,效率低;對長作業比較有利,但對短作業不利;有利于CPU繁忙型作業,而不利于I/O繁忙型作業。

短作業優先(SJF)

短作業(進程)優先調度算法:指對短作業優先調度的算法。

短作業優先調度算法從后備隊列中選擇一個或若干估計運行時間最短的作業,將它們調入內存運行。

短作業優先調度算法從就緒隊列中選擇一個估計運行時間最短的進程,將處理機分配給它,使之立即執行,直到完成或發生某事件而阻塞時,才釋放處理機。

例題:各進程到達就緒隊列的時間、需要的運行時間如下表所示。使用非搶占式的短作業優先調度算法(短進程優先調度算法),計算各進程的等待時間、平均等待時間、周轉時間、平均周轉時間、帶權周轉時間、平均帶權周轉時間。

例題:各進程到達就緒隊列的時間、需要的運行時間如下表所示。使用搶占式的短作業優先調度算法(最短剩余時間優先算法),計算各進程的等待時間、平均等待時間、周轉時間、平均周轉時間、帶權周轉時間、平均帶權周轉時間。



SJF調度算法不容忽視缺點:
1)該算法對長作業不利,若有一長作業進入系統的后備隊列,由于調度程序總是優先調度那些短作業,將導致長作業長期不被調度(饑餓現象,注意區分死鎖,后者是系統環形等待)。
2)該算法完全未考慮作業的緊迫程度,因而不能保證緊迫性作業會被及時處理。
3)由于作業的長短只是根據用戶所提供的估計執行時間而定的,而用戶又可能會有意或無意地縮短其作業的估計運行時間,致使該算法不一定能真正做到短作業優先調度。

對FCFS和SJF兩種算法的思考

高響應比優先

高響應比優先算法主要用于作業調度,是對FCFS調度 算法和SJF調度算法的一種綜合平衡,同時考慮了每個作業的等待時間和估計的運行時間。

在每次進行作業調度時,先計算后備作業隊列中每個作業的響應比,從中每個作業的響應比,從中選出響應最高的作業投入運行。

例題:各進程到達就緒隊列的時間、需要的運行時間如下表所示。使用高響應比優先調度算法,計算各進程的等待時間、平均等待時間、周轉時間、平均周轉時間、帶權周轉時間、平均帶權周轉時間。

1)作業的等待時間相同時,要求服務時間越短,響應比越高,有利于短作業。
2)要求服務時間相同時,作業的響應比由其等待時間決定,等待時間越長,其響應比越高,因而它實現的是先來先服務。
3)對于長作業,作業的響應比可以隨等待時間的增加而提高,等待時間足夠長時,其響應比便可升到很高,從而也可獲得處理機。因此,克服饑餓狀態,兼顧了長作業。

時間片輪轉

時間片輪轉調度算法主要適用分時系統。

這種算法中,系統將所有就緒進程按到達時間的先后次序排成一個隊列,進程調度程序總是選擇就緒隊列中的第一個進程執行,即先來先服務的原則,但僅能運行一個時間片,如100ms。在使用完一個時間片后,即使進程并未完成其運行,它也必須釋放出(被剝奪)處理機給下一個就緒的進程,而被剝奪的進程返回到就緒隊列的末尾重新排隊,等待再次運行。

例題:各進程到達就緒隊列的時間、需要的運行時間如下表所示。使用時間片輪轉調度算法,分析時間片大小分別是2、5時的進程運行情況。






若時間片足夠大,以至于所有進程都能在一個時間片內執行完畢,則時間片輪轉調度算法就退化為先來先服務調度算法。

若時間片很小,則處理機將在進程間過于頻繁地切換,使處理機的開銷增大,而真正用于運行用戶進程的時間將減少。

時間片的長短通常的因素:系統的響應時間、就緒隊列中的進程數目和系統的處理能力。

優先級調度算法

優先級調度算法:它既可用于作業調度,又可用于進程調度。該算法中的優先級用于描述作業運行的緊迫程序。

在作業調度中,優先級調度算法每次從后備作業隊列中選擇優先級最高的一個或幾個作業,將它們調入內存,分配必要的資源,創建進程并放入就緒隊列。

在進程調度中,優先級調度算法每次從就緒隊列中選擇優先級最高的進程,將處理機分配給它,使之投入運行。

例題:各進程到達就緒隊列的時間、需要的運行時間如下表所示。使用非搶占式的優先級調度算法,分析進程運行情況。(優先級越大,優先級越高)

例題:各進程到達就緒隊列的時間、需要的運行時間如下表所示。使用搶占式的優先級調度算法,分析進程運行情況。(優先級越大,優先級越高)


根據新的更高優先級進程能否搶占正在執行的進程,可將該調度算法分為如下兩種:
1)非剝奪式優先級調度算法。當一個進程正在處理機上運行時,即使有某個更為重要或緊迫的進程進入就緒隊列,仍然讓正在運行的進程繼續運行,直到由于其自身的原因而主動讓出處理機時(任務完成或等待事件),才把處理機分配給更為重要或緊迫的進程。
2)剝奪式優先級調度算法。當一個進程正在處理機上運行時,若有更為重要或緊迫的進程進入就緒隊列,則立即暫停正在運行的進程,將處理機分配給更為重要或緊迫的進程。

而根據進程創建后其優先級是否可以改變,可以將進程優先級分為以下兩種:
1)靜態優先級。優先級是在創建進程時確定的,且在進程的整個運行期間保持不變。確定靜態優先級的主要依據有進程類型、進程對資源的要求、用戶要求。
2)動態優先級。在進程運行過程中,根據進程情況的變化動態調整優先級。動態調整優先級的主要依據有進程占有CPU時間的長短、就緒進程等待CPU時間的長短。

進程優先級的設置原則:
1)系統進程>用戶進程。系統進程作為系統的管理者,理應擁有更高的優先級。
2)交互型進程>非交互型進程(前臺進程>后臺進程)
3)I/O型進程>計算型進程。I/O型進程:指那些會頻繁使用I/O設備的進程,而計算型進程是那些頻繁使用CPU的進程。

思考

多級反饋隊列調度算法

多級反饋隊列調度算法:時間片輪轉調度算法和優先級調度算法的綜合與發展。

通過動態調整進程優先級和時間片大小,多級反饋隊列調度算法可以兼顧多方面的系統目標。

為提高系統吞吐量和縮短平均周轉時間而照顧短進程;為獲得較好的I/O設備利用率和縮短響應時間而照顧I/O型進程;同時也不必事先估計進程的執行時間。

例題:各進程到達就緒隊列的時間、需要的運行時間如下表所示。使用多級反饋隊列調度算法,分析進程運行情況。

多級反饋調度算法的實現思想
1)設置多個就緒隊列,并為各個隊列賦予不同的優先級,第1級優先級最高,第2級隊列次之,其余隊列的優先級逐次降低。
2)賦予各個隊列中進程執行時間片的大小各個不相同。在優先級越高的隊列,每個進程的運行時間片越小。
3)一個新進程進入內存后,首先將它放入第1級隊列的末尾,按FCFS原則排隊等待調度。
當輪到該進程執行時,如它能在該時間片內完成,便可準備撤離系統;
若它在一個時間片結束時尚未完成,調度程序便將該進程轉入第2級隊列的末尾,再同樣按FCFS原則等待調度執行;
若它在第2級隊列中運行一個時間片后仍未完成,再以同樣的方法放入第3級隊列····
如此下去,當一個長進程從第1級隊列依次降到第n級隊列后,在第n級隊列中便采用時間片輪轉的方式運行。
4)僅當第1級隊列為空時,調度程序才調度第2級隊列中的進程運行;
僅當第1~(i-1)級隊列均為空時,才會調度第i級隊列中的進程運行。
若處理機正在執行第i級隊列中的某進程,這時又有新進程進入優先級較高的隊列[第1~(i-1)中的任何一個隊列],則此時新進程將搶占正在運行進程的處理機,即由調度程序把正在運行的進程放回第i級隊列的末尾,把處理機分配給新到的更高優先級的進程。

多級反饋隊列優勢:
1)終端型作業用戶:短作業優先。
2)短批處理作業用戶:周轉時間較短。
3)長批處理作業用戶:經過前面幾個隊列得到部分執行,不會長期得不到處理。

總結

以上是生活随笔為你收集整理的调度算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。