單處理器調度算法

這裏寫圖片描述

一.什麼是調度?

調度就是從就緒隊列中挑選下一個佔用 CPU 運行的進程。

調度分爲:長程調度、中程調度、短程調度和 I/O 調度。

本文主要講解短程調度。

二.爲什麼要進行進程調度?

  • 正在執行的進程正確完成,或由於某種錯誤而終止運行(陷阱或中斷)
  • 執行中的進程提出 I/O 請求,等待 I/O 完成
  • 在分時系統中,分給進程的時間片用完
  • 按照優先級調度,有更高優先級進程變爲就緒狀態(搶佔方式)
  • 執行中的進程執行了進程通信原語操作,如 wait 操作、阻塞原語或喚醒原語。

三.短程調度準則:

  • 面向用戶的準則:響應時間、週轉時間(週轉時間 = 完成時間 - 到達時間)
  • 面向系統的準則:吞吐量、處理器利用率

四.選擇調度策略

  • 先到先服務FCFS
  • 時間片輪轉RR
  • 最短進程優先SPN
  • 最短剩餘時間優先SRT
  • 最高相應比優先HRRN
  • 反饋法

五.進程調度算法的實例

這裏寫圖片描述

進程調度方式有兩種:

  1. 非搶佔方式
    分配 CPU 後,進程一直運行到完成或異常終止
    簡單、系統開銷小
    批處理系統

  2. 搶佔方式
    系統根據某種策略(搶佔原則)收回正在運行進程的 CPU ,調度其它就緒進程運行
    及時響應各進程的需求
    分時/實時系統

搶佔原則:

  • 時間片原則(時間片用完)
  • 優先級原則(更高優先級進程就緒)
  • 短進程優先原則(更短進程就緒)

1.先來先服務FCFS

FCFS 算法總是把處理機分配給最先進入就緒隊列的進程,一個進程一旦分得處理機,便執行下去,直到該進程完成或阻塞時,才釋放處理機。(非搶佔調度)
這裏寫圖片描述

FCFS 的優點:實現簡單。
FCFS 的缺點:沒有考慮進程的優先級,平均等待時間波動較大,短進程可能排在長進程後面,I/O 資源和 CPU 資源利用率低。
FCFS 有利於長作業(進程)


2.時間片輪轉RR

RR 用於分時系統進程調度,其步驟如下:

  1. 就緒進程按照 FCFS 原則排成一個就緒隊列
  2. 調度隊首進程,執行一個時間片
  3. 在一個時間片結束時,發生時鐘中斷
  4. 調度程序暫停當前進程的執行,並送就緒隊列尾
  5. 通過 CPU 現場切換執行當前的隊首進程

這裏的時間片 q = 1
這裏寫圖片描述

RR 的優點:就緒隊列中的所有進程都會有機會獲得處理器運行;可提高進程併發性和資源利用率;縮短響應時間。

RR 的缺點:時間片的長度影響系統開銷和響應時間。

時間片過短,則調度程序剝奪處理機的次數增多,增加進程上下文交換次數,加重了系統開銷(時間片短,有利於短作業,不利於長作業);
時間片過長,大到進程能完成全部運行作業所需的時間,那麼時間片輪轉法就退化爲 FCFS (長時間片,無法滿足交互式用戶需求)。
最佳時間片,長度略大於一次典型交互所需的時間(響應時間= 進程數目 × 時間片大小)


3.最短進程優先SPN

SPN 算法從就緒隊列中選出估計運行時間最短的進程,爲之分配處理機,如果運行時間相同,按 FCFS 調度。

SPN 算法有搶佔方式非搶佔方式兩種:

  • 最短進程優先SPN(非搶佔)
  • 最短剩餘時間優先SRT(搶佔)

這裏寫圖片描述

SPN 的優點:能有效地降低平均等待時間,提高系統的吞吐量(平均週轉時間最短),有利於短作業。
SPN 的缺點:不利於長作業當短作業持續不斷到達時,長作業可能被餓死。無法準確估計作業的的確切執行時間,不一定能真正做到短作業(進程)優先調度。


4.最短剩餘時間優先SRT

SRT 是對 SPN 的改進,採用了搶佔機制,根據就緒隊列裏進程剩餘需要服務的時間來排隊。剩餘時間越短的排在最前面。因爲需要去記錄進程的剩餘服務時間,所以增加了系統的開銷。

這裏寫圖片描述

SRT 的優點:比 SPN 的性能更好,短作業只要就緒就可以搶佔正在執行長進程的 CPU。
SRT 的缺點:增加了額外開銷,長作業(進程)可能會被餓死。


5.最高相應比優先HRRN

爲了防止長作業(進程)被餓死,選擇最高相應比優先算法。
響應比 = 週轉時間 / 運行時間 = (運行時間 + 等待時間 )/ 運行時間 = 1 + 等待時間 / 運行時間

這裏寫圖片描述

HRRN 的優點:對短作業有利(運行時間越短優先級越高),長作業不會被餓死(運行時間相同時,等待時間越長優先級越高)
HRRN 的缺點:增加了系統的開銷(每次重新調度需要估計運行時間,並計算響應比)


6.反饋法

多級隊列調度:

  • 根據進程屬性設置多個就緒隊列,每個就緒隊列有各自的調度算法、優先級或時間片長度
    前臺(或交互式)RR
    後臺(或批處理)FCFS
  • 隊列之間必須有調度
    通常採用固定優先級可搶佔調度
    另一種可能是在隊列之間劃分時間片。每個隊列都有一定的 CPU 時間

多級反饋隊列:

  • 基於多級隊列調度(多個隊列,不同優先級,不同時間片長度,不同調度算法)
  • 進程可以在不同隊列間移動
  • 可搶佔調度
  • 最通用和最複雜的 CPU 調度算法

多級反饋隊列調度的優點:

  1. 短進程出現在優先級高的隊列中,可提高系統吞吐量、縮短平均週轉時間
  2. I/O 密集型進程放在最高優先級隊列,保證及時 I/O 交互,提高 I/O 設備利用率、縮短響應時間
  3. 不必事先估計進程執行時間,可以在進程中動態調節

六.多種調度算法的比較

這裏寫圖片描述

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