第一章 1.4操作系統作業調度和進程調度

1.操作系統兩級調度

前言

包括長期調度和短期調度。長期調度是作業調度,以小時爲單位,短期調度是進程調度,以毫秒爲單位。現代操作系統不產生長期不被調度和經常被調度的進程。進程調度是操作系統對進程就緒隊列的調度。高性能計算機中的任務調度是任務怎樣劃分,哪一個任務安排到哪一個處理機上執行。它們是不同的概念。 應注意的是進程調度與程序按順序執行沒有關聯,所以進程調度看似無序,實際上每個程序都在按語句順序執行,而且進程調度的效率和公平原則也始終起作用。
進程調度產生的原因是多進程或多線程競爭CPU。在就緒隊列中,根據調度算法完成選擇最佳進程工作的程序稱爲調度程序(scheduler)。適合進程調度的方法也適合線程調度。現在計算機速度很快,遠超過從前的計算機,因此調度程序在PC機上並不重要。但是轉向網絡服務器,多個客戶機請求進程經常競爭CPU,因此操作系統的調度功能再次變得至關重要。在這一節我們主要學習FIFO,短作業優先,優先級調度,分時系統輪轉法,多級隊列等調度算法。


1.4.1操作系統進程調度和作業調度的基本概念 

一、週轉時間Turnaround Time

對一個程序而言,從提交開始到完成爲止的這段時間間隔稱爲週轉時間。週轉時間是批處理系統中衡量調度性能的一個重要指標。對批處理系統中的一個作業而言,它包括:(1)作業在外存後備隊列上等待進入內存的時間,外存包括磁盤;(2)在就緒隊列上等待獲得處理機的時間,或者在PC機上是等待CPU的時間,可能多次等待;(3)在CPU上的執行時間;(4)等待I/O操作完成的時間。
對一個分時系統的進程而言,它的週轉時間是從第一次進入就緒隊列開始,到進程運行完畢所經歷的時間,期間可能多次被調度。然而通常情況是進程在一次調度中執行完畢。
週轉時間的計算公式見下。
1.平均週轉時間
如果作業i提交給系統的時刻是ts,完成時刻是tf,則該作業的週轉時間ti爲:
ti = tf - ts
實際上,它是作業在系統裏的等待時間與運行時間之和。
爲了提高系統的性能,要讓若干個用戶(n個)的平均作業週轉時間最小。平均作業週轉時間 :
T = (Σti) / n
    2.平均帶權週轉時間
如果作業i的週轉時間爲ti,所需運行時間爲tk,則該作業的帶權週轉時間
wi=ti /tk=1+( ti - tk)/tk
ti是等待時間與運行時間之和,可稱爲作業響應時間,( ti - tk)是等待時間,所以帶權週轉時間總大於1。帶權週轉時間又稱爲響應比,在最高響應比優先算法中介紹。
平均作業帶權週轉時間
W = (Σwi) / n    

二、響應時間Response Time

分時系統衡量調度性能的一個重要指標。所謂響應時間,是指從提交一個請求開始到首次產生相應爲止(顯示出結果)的一段時間間隔。提交請求包括:用戶輸入命令,運行程序。響應時間包括:(1)把請求信號從鍵盤傳輸到計算機的時間;(2)計算機對請求進行處理的時間;(3)再將響應送回終端的時間。
響應時間應注意均衡性,發傳真和簡單請求的響應時間不同,因此用戶的接受程度不同。操作系統應及時響應用戶的簡單請求,而對發傳真等複雜請求可用較多時間響應。
響應時間是網絡系統軟件要求較高的一個指標,例如:商業銀行城市綜合業務網絡系統中,銀行網點的客戶機要求在規定的時間內辦理一筆銀行業務,例如:5秒鐘,否則客戶久等將造成對銀行信譽的不良影響。響應時間在網絡報文中用超時表示,超時則規定重發。因此超時必須避免,否則造成網絡傳輸效率過低的現象,喪失客戶參與,則沒有經濟效益。    

三、剝奪方式Preemptive Mode


    當一個進程正在運行時,操作系統根據某種規定,在時鐘中斷髮生時或者有進程的優先級更高時,將執行進程獲得的處理機,分配給新的最佳進程。所根據的規定有:(1)優先級算法。優先級高的進程比優先級低的執行進程更有資格分配處理機而運行;(2)短進程優先。短進程到達後比在執行的長進程更有效率而獲得處理機;(3)時間片到。分時系統的一個時間片用完後,進程調度程序重新調度。    

四、吞吐量Throughout


    操作系統每小時完成的作業數量。把所有因素都考慮進去以後,吞吐量是50的操作系統優於值爲40的操作系統。操作系統吞吐量大,但是平均週轉時間不一定最小。例如:有許多短作業和長作業的一個作業組,若總是先運行短作業而不運行長作業,則吞吐量出色。但是長作業的週轉時間將很差,因此平均週轉時間也許很長,這並不是一個好的選擇。    

五、CPU利用率


批處理系統的一個度量標準。但是並不是一個好的度量參數。吞吐量是操作系統每個小時可完成多少作業,週轉時間是完成作業需要多少時間,這兩個性能指標更有價值。
CPU利用率=CPU有效工作時間/CPU總的運行時間,
CPU總的運行時間=CPU有效工作時間+CPU空閒等待時間。
現在的多核系統CPU利用率不足,原因是線程數量少。可應用操作系統的解決方法,例如:區分進程性質是CPU忙還是I/O忙等等。    

六、作業和進程


作業是操作系統的任務實體,進程是完成任務的執行實體;沒有作業任務,進程無事可幹,沒有進程,作業任務沒法完成。批處理操作系統應用作業概念,大量作業在後援存儲器中等待到內存,再以建立進程的方式執行,操作系統管理作業的運行過程而用戶不能干涉;多道程序設計創建進程概念,包括分時,實時,交互等系統中採用進程爲基本單位,用戶能用命令等方式管理進程。
作業由“作業註冊”程序負責爲作業建立作業控制塊JCB,稱爲作業進入系統,保存在後援存儲器上,並把它加入後備作業隊列中,等候作業調度進程調度。而作業被作業調度程序選中,分配內存等必要資源後,才建立一組相應進程,稱爲作業進入了運行狀態。當作業正常完成後,“終止作業”程序收回JBC和資源。

1.4.2 調度算法


進程調度算法服務操作系統的功能目標。作業調度算法和進程調度算法考慮的階段和情況都不同,然而有些算法類似,因此放到一起。    

一、先進先出FIFO算法

按照進程到達就緒隊列的時間順序分配CPU。調度時根據隊列的特徵,選就緒隊列隊第一個進程投入執行。FIFO調度算法是非剝奪的,只有進程運行到不能運行下去而阻塞或者完成,才釋還處理機。
在批處理系統,作業的先來先服務調度算法FCFS的平均作業週轉時間與作業提交的順序有關。
例題1:三個作業同時到達系統並立即進入調度。
作業名/所需CPU時間:作業1/28,作業2/9,作業3/3。FCFS算法的平均作業週轉時間爲:
T=(28+(9+28)+(3+(28+9)))/3=35。
第一個作業最先執行,第2個作業的等待時間是28,運行時間是9,第三個作業也如此。注意不能忽略等待時間。
應知道作業等待時間是等待從外存調入內存的時間,而不是等待在CPU上運行的時間。這是作業調度和進程調度的不同,作業調度選擇作業調度到內存,進程調度在內存中選擇CPU上執行的進程。
例題2:有三個進程P1,P2和P3,它們先後(但幾乎同時)進入就緒隊列。CPU執行期分別是21,6和3個時間單位。按FIFO調度算法,平均週轉時間爲:
T=(21+27+30)/3=26。
FCFS調度算法對短作業不利,例如作業3,但是易於實現,表面公平,卻服務質量不佳。作業3等了很久,三個作業可視爲同時達到,因此先執行作業3能提高進程調度效率。         

二、短作業優先

SJF調度算法屬於作業調度算法,將作業從外存後備隊列調入到內存,以進入系統的作業所要求的CPU時間爲衡量標準,每次選取預計CPU時間最短的作業投入運行。主要弱點是可能出現長作業久等過期,和估計CPU時間沒有考慮等待CPU時間。
例題3:四個作業同時到達系統並進入調度。作業名/所需CPU時間:作業1/9,作業2/4,作業3/10,作業4/8。
因此根據所需CPU時間,SJF作業調度順序爲作業2、4、1、3,則:(1)平均作業週轉時間T =(4+12+21+31)/4= 17,
(2)平均帶權作業週轉時間W= (1+1+4/8+1+12/9+1+21/10)/4=1.98。
若採用FCFS調度算法,則:
(1)平均作業週轉時間T =(9+13+23+31)/4=19,
(2)平均帶權作業週轉時間W = 2.51。
SJF的平均帶權作業週轉時間比FCFS要小而且吞吐量更高,因此效率更高;SJF平均作業週轉時間表示的整體性能比FCFS略有優勢,所以更公平。然而對長作業,例如作業3,卻存在讓權等待現象,似乎有欠考慮。
應注意的是,SJF調度算法要求每一個調度階段包括的多個進程應該在同一時期內到達。
例題4:進程的最短CPU運行期優先調度算法SCBF,在就緒隊列中有四個進程P1,P2,P3和P4,它們的下一個執行期分別是16,12,4和3個單位時間。在SCBF算法進行調度時,進程調度順序是P4,P3,P2和P1,平均週轉時間是16個單位時間。但是若用FIFO算法調度,平均週轉時間近似爲28。從效率上看,在4個進程中下一個最佳選擇是P4,所有其它進程等待時間最少,因此SCBF效率優於FIFO;然而SCBF對要求執行時間長的進程P1,儘管最先到達卻最後一個調度。但是整體公平度,不能僅僅看等待在CPU上執行的時間,還要看是否某一類進程長時間不被選擇調度。
在此基礎上,計算機操作系統界的研究人員推出了最高響應比優先調度算法。    

三、最高響應比優先算法HRRF.

HRRF是介乎FIFO和SJB之間的調和算法,是作業調度的一種。既考慮作業在後備隊列的等待時間,又考慮它們的運行時間;既考慮短作業的調度效率,又照顧長作業的等待時間不能過長。在性能上,對多個進程整體的調度得到了完善提高。
作業進入系統後的等待時間與估計運行時間之比稱爲響應比,有定義:
響應比 =1+已等待時間/估計運行時間
公式有兩項,第二項的(估計)運行時間使短作業容易得到較高響應比,而已等待時間讓長作業在等待時間足夠長後,也能獲得足夠高的響應比。響應比實際是帶權週轉時間。
前面的例題都是作業或者進程同時到達,從例題5開始,一組作業或進程的到達不再要求同時。
例題5.四個作業的作業號-到達系統時間/所需CPU時間:作業1-0/20,作業2-5/15,作業3-10 /5,作業4- 15/ 10。
1* FCFS調度算法
調度順序爲作業1、2、3、4。平均作業週轉時間和平均帶權週轉時間的表格方法見下,在熟練掌握後可不再使用表格,提高思考能力。
表1-2-1  FCFS調度算法(在不同時間到達的條件下)
作業 到達時間 運行時間 開始時間 完成時間 等待時間 週轉時間
1 (1) 0 20 0 20 0 20
2 (2) 5 15 20 35 15 30
3 (3) 10 5 35 40 25 30(短作業)
4 (4) 15 10 40 50 25 35(短作業)
平均週轉時間 T=(20+30+30+35)/4=28.75
平均帶權週轉時間 W=(1+1+1+1+5+1+2.5)/4=3.125
2* SJF調度算法
當第一個作業到達時,沒有其它作業到達,因此先執行。在執行結束後,作業2,3,4都到達了,SJF調度順序爲作業1、3、4、2。
表1-2-2  SJB調度算法(在不同時間到達的條件下)
作業 到達時間 運行時間 開始時間 完成時間 等待時間 週轉時間
1 (1) 0 20 0 20 0 20
2 (4) 5 15 35 50 30 45(長作業)
3 (2) 10 5 20 25 10 15
4 (3) 15 10 25 35 10 20
平均週轉時間 T=(20+15+20+45)/4=25
平均帶權週轉時間 W=(1+1+2+1+1+1+2)/4=2.25
3* HRRF調度
調度順序爲作業1、3、4、2,平均作業週轉時間T=26.25, 平均帶權作業週轉時間W=2.46。
表1-2-2  HRRF調度算法(在不同時間到達的條件下)
作業 到達時刻 運行時間 開始 完成 等待時刻 週轉時間 響應比
1(1) 0  20 0 20 0 20 1
2(3)  5  15 25 40 20 35 1+4/3
3(2)  10  5 20 25 10 15 1+2
4(4) 15 10 40 50 25 35 1+2.5
平均週轉時間            T=(20+35+15+35)/4=26.25
平均帶權週轉時間         W=(1+1+4/3+3+3.5)/4=2.46
三個算法比較可知,平均帶權週轉時間FIFO最長,HRRF次之,而SJF最低;帶權週轉時間也是如此。因此總體性能FIFO最低,完成一組進程的調度所需時間最長,而SJF效率最高;整體公平性HRRF最周到。
作業調度從此後結束。進程調度考慮的指標不再是週轉時間,而是平均等待時間,即所有進程等待處理機執行的時間總和。

發佈了42 篇原創文章 · 獲贊 24 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章