tags:
categories:
作業系統該如何決定切換程序?如何執行程序使得效率最大化?
more–>
1、周轉時間
t 周轉
時間=t
完成時間
−t到達
時間t_=t_-t_
t周轉時間
=t完成
時間−
t到達時
間2、響應時間
t 響應
時間=t
第一次執
行時間−
t到達時
間t_=t_-t_
t響應時間
=t第一
次執行時
間−t
到達時間
假設3個工作 a,b,c工作長度為10s,它們大致在相同時間到達(t到達
=0t_=0
t到達=0
)但是a比b稍微早一點點,b比c稍微早一點點。
那麼平均周轉時間是t=(
10+20+
30)/3
=20t=(10+20+30)/3 = 20
t=(10+
20+3
0)/3
=20但是假設a = 100,b和c仍然是10
那麼平均周轉時間是t=(
100+
110+
120)/3
=110
t=(100+110+120)/3 = 110
t=(100
+110
+120
)/3=
110可以看出,fifo排程策略對周轉時間不友好
仍然考慮a = 100,b和c仍然是10的情況
平均周轉時間是t=(
10+20+
120)/3
=50t=(10+20+120)/3 = 50
t=(10+
20+1
20)/
3=50
但是,如果abc不是同時到達,而是a先到達,那麼平均周轉時間和fifo一樣了。
為了解決這個問題,我們讓最短完成時間的任務先執行,那麼即使是a先到達,但在bc到達時切換到bc程序執行,這樣平均周轉時間就又恢復成50s。
前面都只是針對周轉時間,但是響應時間如何(在乙個好的互動系統,響應時間尤為重要,使用者不會願意等它前面的程序完成後才響應當前進行的操作)
這就引出了一種新的排程演算法:輪轉
rr在乙個時間片內執行乙個工作,然後切換到執行對了中的下乙個任務,而不是執行乙個程式直到結束。它反覆執行,直到所有任務完成。
當程序請求i/o時,作業系統可以切換下乙個程序,等程序i/o請求完成後,再切換回來,提公升cpu使用效率。
1、sjf為最短任務優先原則,現在用這個策略排程長度為200的3個作業,由於作業長度一樣(都為200),則假設a、b、b先後執行,那麼各個響應周轉時間應該如下:
與計算相符。
fifo為先進先出策略,即先到的任務先執行,由於三個作業長度都為200,所以結果應該與sjf策略相同,-c測試:
一樣。2、
採用sjf策略排程,那麼先後執行的任務是 100 200 300
假設它們為a b c 任務,那麼各個時間計算如下:
採用fifo策略,假設任務到達的先後順序為 100 200 300
那麼需要的各個時間應該與sjf排程是一樣的。如果是 300 200 100,那麼需要的時間不同:
3、rr排程程式,即輪轉排程,在乙個時間片(time
slice,有時稱為排程量子)內執行乙個工作,然後切換到佇列的下乙個任務,即每個時間片切換乙個不同的程式,反覆執行,直到所有任務完成。時間片必須是時鐘中斷週期的倍數,因為它依靠時鐘週期中斷實現。
現在時間片為1,即每隔一秒切換一次,各個時間應該如下:(仍然假設各個任務為 a b c)
4、1、在相同時間到達,執行相同時間的任務
2、在不同時間到達,但是任務的到達順序是執行時間由短到長。
這兩種型別的工作負載的周轉時間都相同。
5、每個工作的工作負載和量子長度相同時,sjf與rr提供相同的響應時間。
6、sjf的其它工作(除了第乙份工作,因為它是第乙個執行,響應時間為0)響應時間會隨著工作長度的增加而增加。
現在我假設三個工作(依然是 a b c),我將從100 200 300 開始不斷的增加長度,使用模擬程式檢視平均響應時間,得到結果如下:
可以看到,平均響應時間確實是隨著工作長度的增加而增加。
7、顯然,隨著量子長度的增加,rr的響應時間也會隨著增加。
最壞情況:首先我們假設這n個工作的到達順序為從最長的到最短的,假設它們的序號為1,2,3…n,量子長度為s
且最長的工作(序號為1)的工作長度為小於等於量子長度即
1<=s;
那麼,這組工作的響應時間即是前n-1個工作長度的總合,即為
1+2+3+4+…+(n-1)
(注意這裡的數字1,2,3,4表示的是工作的序號,不是工作長度,它們的工作長度順序是1>2>3>4…)
即最壞情況下的響應時間是除了長度最短的工作的所有工作長度的總合。
作業系統 第七章 死鎖
死鎖問題 color 原因 例 系統模型 每一種資源ri有wi種例項 每乙個程序通過如下順序來使用資源 使用資源 釋放資源 必要條件 資源分配圖 申請邊 有向邊pi rj,表示程序pi申請了資源rj的乙個例項 分配邊 有向邊rj pi,表示資源rj的乙個例項分配給程序pi 例 有環但沒有死鎖的資源分...
作業系統第七章 儲存器管理
4.多級頁表及反向頁表 現代計算機系統都支援非常大的邏輯位址空間,致使頁表很大,用連續空間存放頁表顯然不現實。如邏輯位址32位,頁面大小4kb,則頁表項為1m,若每個頁表項佔4位元組,則頁表共需要4mb記憶體空間。解決方案 用離散方式儲存 頁表 僅將當前需要的部分頁表項放在記憶體,其餘放在磁碟上,需...
作業系統概念第七章死鎖筆記
死鎖是指兩個或兩個以上的程序在執行過程中,由於競爭資源或者由於彼此通訊而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程序稱為死鎖程序 程序在使用資源之前必須先申請資源,在使用資源之後要釋放資源。程序所申請的資源數量不能超過系統...