1. 程式人生 > >作業系統-7——單處理器排程

作業系統-7——單處理器排程

一、基本概念

  • 長程排程:新作業提交時,決定是否將其送入記憶體,成為一個程序。
  • 中程排程:決定把哪些程序在記憶體與磁碟間交換。
  • 短程排程:決定將CPU分配給哪個就緒程序。
    這裡寫圖片描述

三種排程影響程序的狀態轉換:
這裡寫圖片描述

二、長程排程

  • 批處理系統或OS的批處理部分中,新提交的作業放在磁碟的後備作業佇列中,長程排程選擇某些作業送入記憶體並建立。
  • 何時長程排程?根據系統併發度決定當老程序結束或CPU空閒超過閾值時,啟動長程排程。
  • 到底哪個作業?根據 先來先服務,優先順序,預計時間,組合CPU密集型和I/O密集型、組合不同I/O需求的作業等。
  • 注意:在分時系統中,不需要長程排程。OS總是立即接受使用者的互動請求並建立程序,直至系統飽和。

三、中程排程

  • 何時長程排程?與長程排程類似,系統併發度決定中程排程的時機
  • 需要考慮換入程序和換出程序的記憶體空間長度。

四、短程排程

  • 何時長程排程?當前執行程序的時間片用完、阻塞、被搶佔時,啟動短程排程。
  • 排程頻繁(毫秒級) = 》 執行速度必須很快。

4.1短程排程準則

  • 面向使用者的效能指標:對每個程序計算的指標
    • 週轉時間從作業提交到完成的時間間隔,包括:服務時間(執行態CPU執行)+等待時間(包括後備態等待進入記憶體、阻塞態等待資源、就緒態等待CPU)。適合批處理作業。
    • 響應時間:從提交請求到開始響應。適合分時(互動)程序。
    • 最後期限:程序完成的截止期限。適合實時程序。
    • 歸一化週轉時間(帶權週轉時間):週轉時間/服務時間。≥1
  • 面向系統的效能指標:
    • 吞吐量:單位時間內完成的程序個數。
    • 處理器利用率:CPU忙的時間比例,=工作時間/總執行時間當用戶系統和實時系統不看重該指標。

4.2排程方式
- 非搶佔式:當前程序一直執行,直至其終止或阻塞時,才再次分配CPU。
- 搶佔式:當其時間片結束或有更高階程序就緒時,將正執行程序轉為就緒,再次分配CPU。
4.3選擇排程策略
本文的排程演算法有:先來先服務(FCFS)、輪轉(RR)、最短程序優先(SPN)、最短剩餘時間優先(SRT)、最高響應比優先(HRRN)、多級反饋。

  • 先來先服務(FCFS)


    排程最先進入後備佇列/就緒佇列的作業/程序,直至執行完或阻塞時,在重新排程。(非搶佔式)
    這裡寫圖片描述

  • 輪轉(RR)
    輪轉RR:各程序按提交順序排成就緒佇列,然後按次佔用處理機,執行某一時間片。時間片完則排入就緒佇列尾。(搶佔式)(不利於I/O密集型程序)

    • RR的平均週轉時間可能較高,但是響應時間更短。

    • 時間片的長度:關鍵引數

      • 時間片q太大 =》 相當於FIFS,相應慢。
      • 時間片q太小 =》 上下文切換頻繁,開銷大。
      • 時間片應略大於一次典型的互動所需要的時間。

    這裡寫圖片描述

  • 最短程序優先(SPN)

最短程序優先SPN:排程CPU執行時間預期最短的程序;直至執行完或阻塞時,重新排程。有利於短程序,不利於長程序及緊迫任務。(非搶佔式)
通常,程序是“CPU執行和I/O”不斷交替的過程,SPN的困難在於:如何預測下一CPU用時長度。(常用:指數平均法)

這裡寫圖片描述

  • 最短剩餘時間(SRT)
    新程序到達時,若新程序的預計執行時間比當前程序的剩餘執行時間更短,則搶佔當前程序。(搶佔式)
    這裡寫圖片描述

  • 最高響應比優先
    綜合了FCFS和SPN演算法。(非搶佔式)

    • 當前程序完成或阻塞時發生排程。每次排程前,計算所有就緒程序的響應比,高者優先。
    • 實際上,響應比就是一個程序在某一時刻的“歸一化週轉時間”(即帶權週轉時間)。
      這裡寫圖片描述

這裡寫圖片描述

  • 反饋
    • 基於時間片的搶佔+動態優先順序排程。(搶佔式)
    • 同一佇列內程序按FCFS排程,但末級佇列按輪轉法排程。
    • 當上級佇列均無程序就緒時,才排程本級佇列內程序;
    • 實用,能較好地滿足互動型程序、短程序、長程序的要求

這裡寫圖片描述
這裡寫圖片描述

  • 優先權排程
  • 排程優先順序高的程序。就緒佇列中程序按優先順序 遞減排列,每次排程高階佇列的隊首程序。
    • 可搶佔:新到達的高階程序立即搶佔當前程序。
    • 靜態優先權:建立程序時確定優先順序,保持不變。
    • 問題:低優先順序程序可能飢餓Starvation。
  • 動態優先權:建立程序時賦予程序一個優先權初 值,但隨著程序的等待時間延長,其優先順序會升高 (稱為老化Aging );隨著CPU執行時間的延長,其 優先順序會降低