操作系統導論第七章

tags:

  • 操作系統導論

  • 第七章

categories:

  • 操作系統導論


操作系統導論第七章:進程調度

操作系統該如何決定切換進程?如何運行進程使得效率最大化?

more–>

調度指標

1、週轉時間
T=TTT_{週轉時間}=T_{完成時間}-T_{到達時間}
2、響應時間
T=TTT_{響應時間}=T_{第一次執行時間}-T_{到達時間}

先進先出(FIFO)調度原則

假設3個工作 a,b,c工作長度爲10s,它們大致在相同時間到達(T=0T_{到達}=0)但是a比b稍微早一點點,b比c稍微早一點點。
那麼平均週轉時間是T=(10+20+30)/3=20T=(10+20+30)/3 = 20
但是假設a = 100,b和c仍然是10
那麼平均週轉時間是T=(100+110+120)/3=110T=(100+110+120)/3 = 110
可以看出,FIFO調度策略對週轉時間不友好

最短任務優先 (SJF)##

仍然考慮a = 100,b和c仍然是10的情況
平均週轉時間是T=(10+20+120)/3=50T=(10+20+120)/3 = 50
但是,如果abc不是同時到達,而是a先到達,那麼平均週轉時間和FIFO一樣了。

最短完成時間優先(STCF)

爲了解決這個問題,我們讓最短完成時間的任務先運行,那麼即使是a先到達,但在bc到達時切換到bc進程運行,這樣平均週轉時間就又恢復成50s。

輪轉(RR)調度策略

前面都只是針對週轉時間,但是響應時間如何(在一個好的交互系統,響應時間尤爲重要,用戶不會願意等它前面的進程完成後才響應當前進行的操作)
這就引出了一種新的調度算法:輪轉
RR在一個時間片內運行一個工作,然後切換到運行對了中的下一個任務,而不是運行一個程序直到結束。它反覆執行,直到所有任務完成。

結合I/O

當進程請求I/O時,操作系統可以切換下一個進程,等進程I/O請求完成後,再切換回來,提升CPU使用效率。

課後作業

1、

SJF爲最短任務優先原則,現在用這個策略調度長度爲200的3個作業,由於作業長度一樣(都爲200),則假設a、b、b先後運行,那麼各個響應週轉時間應該如下:

在這裏插入圖片描述

-c測試:
在這裏插入圖片描述

與計算相符。

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…)

即最壞情況下的響應時間是除了長度最短的工作所有工作長度的總合

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章