操作系統0x05-處理機調度

2.2.1 調度的概念

調度的基本概念

      在多道程序系統中,進程的數量往往多於處理機的個數,因此進程爭用處理機的情況在所難免。處理機調度是對於處理機進行分配,即從就緒隊列中按照一定的算法選擇一個進程,並將處理機分配給它運行,以實現進程併發地執行。
      處理機調度是多道操作系統的基礎,是操作系統設計的核心問題。

調度的層次

      一個作業從提交到完成,要經歷三級調度
(1)作業調度(高級調度)
      其主要任務是按照一定的原則,從外存上處於後備狀態的作業中挑選一個或多個作業,給它們們分配內存、輸入/輸出設備等必要的資源,並建立相應的進程,以使它們獲得競爭處理機的權利。簡言之,作業調度就是內存與輔存之間的調度。
(2)內存調度(中級調度)
      其作用是提高內存利用率和系統吞吐量。將那些暫時不能運行的進程調至外存等待,把此時的進程狀態稱爲掛起態;當他們已具備運行條件且內存有空閒時,再由中級調度重新調入內存並修改其狀態爲就緒態,掛在就緒隊列上等待。
(3)進程調度(低級調度)
      主要任務是按照某種方法和策略從就緒隊列中選取一個進程,將處理機分配給它。是操作系統中最基本的一種調度。
在這裏插入圖片描述

三級調度的聯繫

      如上圖。作業調度從外存的後備隊列中選擇一批作業進入內存,爲它們建立進程,這些進程就被送入就緒隊列;進程調度從就緒隊列中選擇一個進程,並把其狀態改爲運行態,把CPU分配給他;中級調度是爲了提高內存利用率,系統將那些暫時不能運行的進程掛起來,當內存空間寬鬆時,通過中級調度選擇具備運行條件的進程將其喚醒。
1>作業調度爲進程活動做準備,進程調度使進程正常活動起來,中級調度將暫時不能運行的進程掛起,中級調度處於作業調度和進程調度之間。
2>作業調度次數少,中級調度次數略多,進程調度頻率最高。
3>進程調度是最基本的,不可或缺。

2.2.2 進程調度方式

      當某個進程正在處理機上執行時,若有某個更爲重要或緊迫的進程需要處理,即有優先權更高的進程進入就緒隊列,此時應該如何分配處理機?

非剝奪調度方式(非搶佔方式) 剝奪調度方式(搶佔方式)
當一個進程正在處理機上執行時,即使有某個更爲重要和緊迫的進程進入就緒隊列,仍然讓正在執行的進程繼續執行,直到該進程執行玩或發生某種事件而進入阻塞態時,才把處理機分配給更爲重要的進程。 當一個進程正在處理機上執行時,若有某個更爲重要和緊迫的進程需要使用處理機,則立即暫停正在執行的進程,將處理機分配給這個更爲重要的進程。
優點是實現簡單系統開銷小,適用於大多數的批處理系統。但不能用於分時系統和大多數的實時系統。 對提高系統吞吐率和響應速率都有明顯的好處。

2.2.3 調度的基本準則

      選擇調度算法時,需要考慮的算法特性:

  • CPU利用率
  • 系統吞吐量:單位時間內CPU完成的作業數量。
  • 週轉時間=作業完成時間-作業提交時間
    帶權週轉時間=作業週轉時間/作業實際運行時間
  • 等待時間:進程等待處理機的時間。
  • 響應時間:從用戶提交請求到系統產生響應的時間。

2.2.4 典型的調度算法

先來先服務(FCFS)調度算法

      每次從就緒隊列中選擇最先進入該隊列的進程。將處理機分配給它,使之投入運行,直至完成,或因某種原因而註冊時才釋放處理機。屬於不可剝奪算法。
      算法簡單,但效率低,對長作業比較有利,但對短作業不利。有利於cpu繁忙型。作業而不利於IO繁忙型作業。
假設系統中有四個作業,他們的提交時間分別是8,8.4,8.8,9。運行時間依次是2,1,0.5,0.2。系統採用FCFS調度算法:

作業號 提交時間 運行時間 開始時間 等待時間 完成時間 週轉時間 帶權週轉時間
1 8 2 8 0 10 2 1
2 8.4 1 10 1.6 11 2.6 2.6
3 8.8 0.5 11 2.2 11.5 2.7 5.4
4 9 0.2 11.5 2.5 11.7 2.7 13.5
  • 平均等待時間:1.575
  • 平均週轉時間:2.5
  • 平均帶權週轉時間:5.625

短作業優先(SJF)調度算法

      短作業優先(SJF)調度算法從後備隊列中選擇一個或若干個估計運行時間最短的作業,將它們調入內存運行。短進程優先(SPF)調度算法從就緒隊列中選擇一個估計運行時間最短的進程。將處理機分配給他,使之立即執行,直至完成或發生某事件而阻塞時,才釋放處理機。
      對長作業不利;未完全考慮作業的緊迫程度;SJF調度算法的平均等待時間和平均週轉時間最少。
假設系統中有四個作業,他們的提交時間分別是8,8.4,8.8,9。運行時間依次是2,1,0.5,0.2。系統採用SJF調度算法:

作業號 提交時間 運行時間 開始時間 等待時間 完成時間 週轉時間 帶權週轉時間
1 8 2 8 0 10 2 1
2 8.4 1 10.7 2.3 11.7 3.3 3.3
3 8.8 0.5 10.2 1.4 10.7 1.9 3.8
4 9 0.2 10 1 10.2 1.2 6
  • 平均等待時間:1.175
  • 平均週轉時間:2.1
  • 平均帶權週轉時間:3.525

優先級調度算法

      根據新的更高優先級進程能否搶佔正在執行的進程,可分爲:非剝奪式優先級調度算法、剝奪式優先級調度算法。
      根據進程創建後優先級能否改變,可分爲:靜態優先級、動態優先級。
      優先級設置的參照原則:系統進程>用戶進程、交互型進程>非交互型進程、I/O型進程>計算型進程。

高響應比優先調度算法

      主要用於作業調度,同時考慮了每個作業的等待時間和估計運行時間,是對FCFS和SJF的權衡。在每次作業調度中,選擇響應比.最高的作業投入運行。
響應比Rp=(等待時間+要求服務時間)/ 要求服務時間

時間片輪轉調度算法

      主要適用於分時系統。系統將所有就緒進程按到達時間的先後次序排成一個隊列,選擇就緒隊列中的第一個進程執行,但僅能執行一個時間片,在使用完一個時間片後,即使進程並未完成其運行,也必須釋放出處理機給下一個就緒的進程,而被剝奪的進程發揮到就緒隊列的末尾,重新排隊,等候再次運行。
      應選擇適當的時間片大小。時間片過大:退化爲FDFS。時間片過小:頻繁切換進程,開銷增大。

多級反饋隊列調度算法

      是時間片輪轉調度算法和優先級調度算法的綜合與發展。融合了前幾種算法的優點。
在這裏插入圖片描述

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