作業系統之程序與執行緒4 程序排程

2021-08-04 19:59:26 字數 1571 閱讀 9654

程序排程策略依照不同的應用也有不同的策略,比如衛星導航系統需要實時性強、嵌入式系統需要省電等排程策略具體實現。而且面對不同的情況,有無窮盡的排程策略,因此本文只討論一般普通pc機的幾種一般排程策略。

由前邊程序、執行緒切換的知識可知,程序排程策略即是:如何從程序就緒佇列中選取下乙個即將執行的程序(即作為p_next,進行程序切換),從而實現多程序的併發執行。

程序排程(又稱 低階排程)是作業系統的最基本的一種排程,在一般作業系統中都必須配置程序排程(不可或缺)。程序排程的頻率很高,一般幾十毫秒一次。

cpu排程策略的目標應該是:程序滿意—— 時間問題:

同時程序排程短髮本身也需要很簡潔,執行時間短,其本身也相當於系統內耗時間。

—— 需要折中、綜合 ...

1、響應時間和吞吐量之間矛盾:

2、任務不同:

3、io約束型任務和cpu約束型任務特點不同:

第一種:fcfs + 短作業優先(sjf)

先來先服務——> 短作業優先提高 短作業的周轉時間,提高短作業的滿意度,從而提高總體滿意度。

優缺點:

此種方法平均周轉時間最短(可證明),但對程序排程的響應時間沒有考慮。——> 採用時間片輪轉排程(rr:round robin)

第二種:時間片輪轉排程

分成小時間片,輪轉排程各個任務,在時間片內完成任務則切換下乙個任務。

優缺點:

時間片小:保證響應時間短,但頻繁切換任務導致吞吐量小;

時間片大:難以保證響應時間;

——> 因同時必須限制程序的個數,減小響應時間最大值。

第三種:優先順序排程

同時有後台任務和前台任務存在時,word更關心響應時間,gcc更關心周轉時間如何做到讓兩個任務都滿意?

——> 直觀想法:採用兩個任務佇列,佇列中採用不同的排程策略,佇列間採用優先順序排程(前台任務優先順序高)——> 產生問題:若採用絕對優先排程,如果一直有前台操作時,可能有後台任務產生「飢餓」——> 因此,優先順序應該採用動態優先順序,若後台任務長時間得不到執行,需要動態調整其優先執行——>但此時前台任務的響應時間又得不到滿足.......產生矛盾。

——集合了前幾種演算法的優點

多級反饋佇列排程演算法是時間片輪轉排程演算法和優先順序排程演算法的綜合和發展,如圖2-5 所示。通過動態調整程序優先順序和時間片大小,多級反饋佇列排程演算法可以兼顧多方面的系統目標。例如,為提高系統吞吐量和縮短平均周轉時間而照顧短程序;為獲得較好的i/o裝置利用率和縮短響應時間而照顧i/o型程序;同時,也不必事先估計程序的執行時間。

多級反饋佇列排程演算法的實現思想如下:

演算法應該有一定的學習機制,可以動態識別;

作業系統之程序與執行緒4

忙等的演算法 執行緒阻塞喚醒實現不忙等 t0執行,t2還未執行 t0t1flag 0 true 沒執行turn 1 沒執行未進入迴圈,獲得了資源 沒執行t0執行時,t1也執行了 t0進入迴圈判斷前,t1將自己的競爭標誌位置為true,導致t0一直迴圈等待直到t1執行了turn 0將許可權交給t0時,...

作業系統之程序排程

世界上很多問題都是跟資源分配和任務排程有關,而學會了作業系統的程序排程演算法,我覺得也會給你在做事的時候帶來一些啟發吧。在現代的作業系統中,有很多程序在記憶體中。有的正在執行,有的正等待某個事件的發生 比如等待使用者敲擊鍵盤 那麼作業系統作為乙個大佬,就必須管理這些程序,讓它們按照規則來,不能亂了套...

作業系統之 程序排程

程序排程的目的 極小化平均響應時間,極大化吞吐量。程式使用cpu的模式 有何特點 程式大部分時間在cpu上執行 cpu導向或計算密集型程式。運用於 科學計算或天文計算 程式大部分在進行輸入輸出操作 io導向或輸入輸出密集型程式。運用於人機互動,遊戲。比較短任務優先和優先順序排程演算法 短任務stcf...