程序排程的四種演算法

2021-09-11 22:29:23 字數 1078 閱讀 7813

【作業系統】程序排程的四種演算法

作業由作業流進入輸入井然後觸發作業排程選擇作業進入主存區,建立程序之後,系統會對程序控制塊進行分類鏈入佇列,在就緒佇列中的程序會觸發程序排程,選擇合適的程序占用cpu資源。程序排程會根據合適的演算法進行排程,下面簡單的說一下四種常見的演算法。

1.先到先服務排程演算法

程序就緒佇列的程序實行先來先服務的排程演算法,這個很好理解了,就是先進入就緒佇列的程序會先占用cpu資源,cpu會把該作業處理完畢後再釋放資源,就像你排隊一樣,先來先服務,一樣的道理,但是這個演算法存在很大的乙個缺陷,比如程序a需要占用3ms的cpu資源,程序b需要占用4ms的cpu資源,程序c需要占用20ms的cpu資源,由於進入就緒佇列的隨機性,因此,可能依次進入佇列的順序就是a,b,c,這樣的話它們的平均等待時間就為(0+3+7)/3 = 10/3ms ,但是如果是程序c先進入佇列,其次是程序a,b呢,那麼平均等待時間就為(0+20+23)/3 = 27/3 ms ,明顯比abc這種情況要多出很多時間,但是就是因為程序佇列的進入隨機性,使用這種演算法的程序排程是效率非常低下的。

2.最高優先順序排程演算法

當優先順序相同的時候,這種演算法經常和先到先服務排程演算法一起使用。這種排程演算法有兩種方式,第一種是非搶占式的,它會等待當前優先順序最高的程序占用cpu資源並且處理完畢後才會釋放資源。第二種是搶占式的,當當前程序占用cpu資源時,比它優先順序更高的程序進入就緒佇列,它會立即中斷當前程序,並且儲存當前程序的psw,然後由比它更高的優先順序的程序占取cpu資源,這種搶占式的方式比較好的一面是,當有緊急情況發生時,可以立即占取cpu資源進行處理,不用進行等待。

3.時間片輪轉排程演算法

cpu設定乙個時間片的概念,時間片是指每個程序可以占用cpu的最長時間,程序在占用時間片的過程中,如果遇到需要等待的事件或者程序收到訊號需要等待,則程序直接放棄當前cpu資源進入等待狀態,另一種情況是程序進入僵死狀態,於是也會放棄cpu資源,等待系統**程序,最後一種情況是時間片被消耗完畢,程序被迫放棄cpu資源,由其他程序占去。時間片的概念在分時作業系統中應用相當普遍。如果希望系統盡快應答,應當把時間片設定為盡可能小,這樣每個程序得到執行的機會就越多,如果程序量比較少,可以把時間片設定的大一些,這樣會提高系統執行程序的效率。

4.分級排程演算法

nginx四種排程演算法 高階

a 輪詢 預設 每個請求按時間順序逐一分配到不同的後端伺服器 b ip hash 每個請求按訪問ip的hash結果分配,同乙個ip客戶端固定訪問乙個後端伺服器 c url hash 按訪問url的hash結果來分配請求,使每個url定向到同乙個後端伺服器 1 預設輪訓 root proxy vim ...

硬碟排程演算法的四種實現

include include include include include using namespace std vector int vt int n,now void init int n cout 隨機生成的磁碟序列為 endl for int i 0 i vt.size i cout ...

作業系統四種排程演算法

一 實驗目的 1 掌握程序排程的任務 機制和方式。2 熟練掌握程序程序排程的演算法的原理。二 實驗內容 1 實現 短作業優先排程演算法 2 實現 先到先服務排程演算法 3 實現 非搶占式高響應比優先排程演算法 4 實現 搶占式高響應比優先排程演算法 三 實驗 實驗全部 見附件code.txt 實驗的...