程序排程演算法(上)

2021-10-05 02:50:43 字數 1379 閱讀 2695

當有多個程序或執行緒同時競爭cpu,只要有兩個或多個程序都處於就緒狀態,系統就必須選擇下乙個執行的程序,完成這一工作的部分稱為排程程式,排程程式使用的演算法就是排程演算法

排程簡介

並不是所有系統都對排程有較高的需求,一些系統只需要簡單的排程就可以滿足需求。

而有些系統則需要仔細研究一種合適的排程。比如網路伺服器,當網路伺服器在執行本地計算時傳來了乙個使用者服務請求,如果排程演算法能打斷本地計算而滿足使用者服務請求,則可以使使用者很高興。再比如智慧型手機,電池壽命短是其最重要的約束之一,所以排程演算法要努力優化電量損耗。

何時排程

在建立新程序之後,需要決定是執行父程序還是子程序。

在乙個程序推出時必須做出排程決策,選擇乙個就緒佇列中的程序執行。

當乙個程序阻塞時,需要選擇另乙個程序執行。

發生乙個i/o中斷時,需要做出排程。

排程演算法分類

搶占式:排程程式打斷當前執行中的程序,排程另乙個程序執行。

非搶占式:排程程式會等當前執行中的程序結束之後,再讓排程的程序執行。

以上兩種是基本分類,在不同的環境中還需要不同的排程演算法。如下三種常見情形需要不同的排程演算法。

批處理互動式實時

排程演算法的目標

換句話說就是排程演算法需要達到什麼水平。那麼有幾條指標可以用來衡量排程演算法的好壞

吞吐量:系統每小時完成的作業數量。

先來先服務

顧名思義,程序按照請求cpu的順序來使用cpu。該演算法優點是易於理解且便於使用。缺點也很明顯,該演算法可能導致系統的整體利用率低,比如1000個cpu密集型程序需要1000秒完成,第1001個程序是i/o密集型的,需要1000秒完成磁碟i/o操作,那麼按照fifo,會花費2000秒來完成所有程序,其中前1000秒磁碟利用率很低,後1000秒cpu利用率很低。如果能讓磁碟i/o操作最先執行,那麼只需要1000秒就能完成所有程序,系統利用率接近100%。

最短作業優先

在執行時間課可預知的情況下才能使用此演算法。假設有a,b,c,d四個程序同時到達,執行這四個程序需要花費8,4,4,4分鐘,那麼按照所需時間從少到多來呼叫,即以b,c,d,a的順序執行程式。

最短作業優先演算法的平均周轉時間是所有演算法中最短的,但是得滿足所有作業是同時到達的情況。

最短剩餘時間優先

這是最短作業優先的搶占式版本。排程程式總是選擇剩餘時間最短的程序執行。同樣的,必須能事先掌握程序需要的執行時間。當程序不是同時到達時,該演算法會比最短作業優先要有更少的平均周轉時間。

程序排程演算法(程序排程策略)

程序排程演算法 排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短...

程序排程演算法

排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短作業 程序 由此...

程序排程演算法

先來先服務 first come first service,fcfs 排程演算法按照程序進入就緒佇列的先後順序選擇可以占用處理器的程序。這是一種不可搶占方式的排程演算法,優點是實現簡單,缺點是後來的程序等待cpu的時間較長。它現今主要用作輔助排程法 例如結合在優先順序排程演算法中使用,當有兩個最高...