1. 程式人生 > >現代作業系統學習筆記-排程

現代作業系統學習筆記-排程

0.排程演算法的目標

所有系統

  • 公平-給每個程序公平的CPU份額
  • 策略強制執行-看到所宣佈的策略執行
  • 平衡-保持系統的所有部分都忙碌

批處理系統

  • 吞吐量-每小時最大作業數
  • 週轉時間-從提交到終止間的最小時間
  • CPU利用率-保持CPU始終忙碌

互動式系統

  • 響應時間-快速響應請求
  • 均衡性-滿足使用者的期望

實時系統

  • 滿足截止時間-避免丟失資料
  • 可預測性-在多媒體系統中避免品質降低

一.批處理系統中的排程

1.先來先服務

先到來的服務,系統先對其進行服務 FIFO

2.短作業優先

評估當前作業中,執行時間最短的作業優先服務

  • 能夠提前掌握作業的執行時間
  • 只有所有作業是同時執行時排程才是最優的

3.最短剩餘時間優先

當一個作業到達時,評估當前系統中作業的剩餘時間和該作業所需時間,選擇剩餘時間最小的進行排程

  • 能夠提前掌握作業的執行時間

二.互動式系統中的排程

1.輪轉排程

每個程序被分配一個時間片,如果時間片內沒做完則強制切換,提前做完提前切換

  • 程序切換(上下文切換)需要cpu時間
  • 時間片太短,頻繁切換影響效率;時間片太長,可能使短互動請求響應時間變長
  • 時間片長度相同

2.優先順序排程

每個程序擁有不同的優先順序,優先排程優先順序高的程序,同優先順序的程序採用輪轉排程。

  • 時間片長度相同

3.多級佇列

排程系統擁有不同優先順序的佇列,每個佇列的時間片長度不同,程序依情況加入不同的佇列中,排程中的程序可能由於時間片用完導致轉移到較低級別佇列

  • 目的是最大可能的減少切換,同時又不影響高優先順序的響應時間

注:伯克利XDS940分4個優先順序 中斷、I/O,短時間片,長時間片

4.最短程序優先

從當前可用程序中找出最短的一個程序進行排程
評估演算法為 T0=aT0+(1a)T1
a:權值
T0:當前估計時間
T1:測量其下一次執行時間

  • 這種通過當前測量值和先前估計值進行加權平均而得到下一次估計值的技術稱作老化
  • 權值(a)越高老化的越慢,反之越快

5.保證排程

保證n個程序/使用者獲得CPU處理能力的1n,選擇k最低的程序進行排程,直到其值小於最近接該程序的競爭者
比率計算 k=T0T1
T0 :實際獲得時間,程序自建立以來該程序實際獲得時間
T1 :應得時間,程序自建立以來過去的時間除以n

  • 在執行中動態的保證

6.彩票排程

每個程序擁有f份彩票,所有程序總彩票為m,則每個程序的被排程機率為fm

  • 在一些其他方法不易解決的問題中,此方法有易理解的優勢
  • 例如:視訊伺服器的若干程序為客戶提供服務,每個程序的幀數率為10、20、25幀,則給每個程序10 20 25份彩票,最終CPU劃分將以10:20:25進行劃分

7.公平分享排程

在程序排程前先判斷程序的所有者是誰,以保證使用者之間的排程公平

三.實時系統中的排程

可排程:滿足mi=1CiPi1
miPiCi

  • 硬實時:必須滿足絕對截止時間
  • 軟實時:偶爾可以容忍
  • 根據事件是否以規則時間間隔發生,將事件分為週期性和非週期性

四.策略與機制

為了使使用者程序參與有關排程決策,可以將排程機制與排程策略分離,也就是將排程演算法以某種形式引數化,而引數可以由使用者程序填寫

五.執行緒排程

執行緒排程的分類:分為使用者級執行緒核心級執行緒

1.使用者級執行緒

  • 排程系統(核心)決定哪個程序獲得時間片
  • 程序中的執行緒排程程式決定具體執行緒執行
  • 同一時間片只會有該程序的執行緒執行
  • 不必修改記憶體映像,不清除快取記憶體內容
  • 可使用自定製的執行緒排程
  • 某執行緒的I/O阻塞時,整個程序可能被掛起
  • 缺乏一個時鐘對執行緒中斷(例如某個執行緒相對執行過長)

2.核心級執行緒

  • 核心直接選擇一個執行緒執行
  • 切換不同的執行緒時,需要完整的上下文切換
  • 執行緒阻塞在I/O上不需要掛起整個程序