排程與死鎖
衡量作業排程的測度:
1)作業平均周轉時間
t和加權平均周轉時間w。
t=,其中ti=fi-ai,
即作業結束時間減去作業到達時間,
n為作業數
w=,其中wi=ti/ri,r
為事件執行時間
2)作業或程序的平均等待時間,即各個作業或程序進入可以排程的狀態(
作業為收容狀態,程序為就緒狀態
)到開始選中的事件。
分級排程
1)高階排程:又稱作業排程或者長程排程,用於決定將外存上處於後備佇列中的那些作業調入記憶體,並為他們建立程序,分配必要的資源,再將新建立的程序排到就緒佇列中準備執行。
2)中級排程:中程排程,負責程序在記憶體和輔存對換區之間的交換。為了緩和記憶體使用緊張的矛盾,中級排程將處於阻塞狀態而暫時不能執行的程序暫時移到輔存對換區。當其等待的事件已經發生,則在對換區的程序由阻塞轉為就緒。
3)低階排程:又稱程序排程或短程排程,它決定駐留記憶體就緒佇列中哪個程序獲得處理機,然後由分派程式執行將處理機分配給該程序的「上下文切花」操作。
什麼時候啟用程序排程?
1)在cpu
上執行的那個程序正好執行完成。程序排程程式應該立即工作以選擇下乙個執行物件。
2)執行程序被阻塞,比如需要輸入輸出,需要等待某種訊息或某種事件,執行程序將主動讓住cpu
,此時應該施行排程。
3)執行程序因時間片到期被剝奪執行權,程序將轉換為就緒****e
態,程序排程將被啟用;
4)當有互動程序就緒到達時,或者有程序解除等待原因,比如輸入輸出完成,等待的事件已發生或資訊已到達,由等待態轉為就緒態,實施搶占排程的系統,也會進行重新排程,以保證高優先順序程序盡可能快得到執行機會。
高階排程、中級排程和低階排程的關係如下圖:
高階排程以作業為單位,呼叫頻率相對較低;低階排程執行頻率很高,才能保證各個程序在短時間內得到執行機會。
常用排程演算法
兩類排程演算法:
1)非搶占式排程演算法。一旦把處理機分配給程序後,便讓該程序一直執行,直到該程序完成或發生某事件而被阻塞,才能把處理機分配給其他程序。不允許人和程序搶占已經分配的處理機。
2)搶占式演算法。允許排程程式根據某種原則,去停止某個正在執行的程序,將已分配的處理機重新分配給另一程序,搶占原則有以下幾種:
①時間片原則;②優先權原則;③短作業優先原則。
fifo排程演算法:先進先出演算法,實行不可搶占策略。
sjf排程演算法:短作業優先排程演算法,具有最短的平均周轉時間,非搶占式策略演算法。
hrn排程演算法:最高響應比演算法,非搶占式排程策略,即作業為得到作業所花的等待時間演算法。
rr排程演算法:時間片輪轉演算法,剝奪式排程演算法
優先順序排程演算法:選擇優先順序最高的程序或作業進行排程,實行可搶占式策略。
多級反饋佇列排程演算法:實現優待短作業和優待收i/o
制約的作業的機制。
處理流程:乙個新程序首先進入佇列網路的第一級佇列末尾,根據fifo
原則在佇列中移動直至得到處理機。如果該作業完成或由於等待
i/o,或等待其他事件的完成二放棄處理機,該作業離開佇列網路。若該程序在它資源放棄處理機前耗盡時間片,則該程序被放到下一級佇列的末尾。若第乙個隊列為空,則在它到達下級佇列的隊首時應獲得服務。程序使用完每一級佇列提供的事件片之後,被移到下一較低階佇列末尾。通常在乙個底層佇列中,程序按輪轉排程法排程,直至程序執行結束。
優缺點分析:
1)短程序和收i/o
制約的程序講受到排程優待。(受
i/o制約的程序具有較高的優先順序)
2)受cpu
制約的程序會有最大執行效率
3)系統可以自動判斷程序的類別,並對各個程序作出恰當的處理,將它們包容在一起。
4)能夠自動適應程序性質的變化
死鎖:多個程序因競爭資源而造成的一種僵局,若無外力作用,這些程序都講永遠不能再向前推進。
產生死鎖的必要條件:
1)互斥條件。某些資源有排他地使用性質,不能保證資源被程序任意共享。
2)請求並保持條件。程序已經占有部分資源,又還要繼續申請資源。
3)不剝奪條件。程序已經擁有的資源,不能被系統強行**。
4)環路等待條件。兩個程序互相等待被對方已經占用的資源。
預防死鎖:
1)摒棄「請求並保持條件」。系統要求所有程序要一次性地申請在程序整個推進過程中所需要的全部資源。靜態分配。
缺點:1)程序難以一次性提出全部資源要求;
2)只有有一種資源不滿足分配要求,其他資源也不分配,程序處於等待;
3)資源占用嚴重浪費
2)摒棄「不剝奪條件」。不要求程序一次性地申請所有資源,可以在只滿足當前的資源要求的情況下執行,在需要新的資源時才提出要求。但是當乙個已經保持了某些資源的程序,當他再提出新的要求不能立即滿足時,必須釋放它占用的所有資源。動態分配
缺點:程序放棄已經占用但尚未用完的資源要付出很大的開銷。
3)摒棄「環路等待條件」。申請資源嚴格按資源遞增的順序提出。動態分配。
乙個無死鎖的充分條件:系統有n
個程序,
m個資源,資源時逐個申請,每個程序至少申請乙個資源,假定所有程序申請資源總數
,則系統不可能有死鎖。
死鎖避免的演算法:銀行家演算法
OS之程序排程
處理機排程 在多道程式程式的環境中,記憶體中存在著多個程序,程序往往大於處理機數目,這就要系統按照某種演算法,動態的將處理機分配給處於就緒狀態的程序。是之執行,分配處理機的任務就是由處理機排程完成的。排程實質上是一種資源分配。處理機排程演算法的目標 處理價排程演算法的共同目標 1 資源利用率,為了提...
3 排程與死鎖
1 儲存處理機的現場資訊 2 按某種演算法選取程序 3 把處理器分配給程序 搶占方式能滿足實時任務的需求,但比較複雜,所需付出的系統開銷也較大。搶占原則 資源利用率 cpu利用率 公平性 平衡性 策略強制執行 3.處理機利用率高 1.響應時間快 2.均衡性 系統響應時間的快慢應與使用者所請求服務的複...
處理排程與死鎖
提高併發性 1 提高cpu併發計算能力 1 多程序 多執行緒 2 減少程序切換,使用執行緒,考慮程序繫結cpu 3 減少使用不必要的鎖,考慮無鎖程式設計 4 考慮程序優先順序 5 關注系統負載 2 改進i o模型 1 dma技術 儲存器直接訪問,指一種高速的資料傳輸操作,允許在外部裝置和儲存器之間直...