現代操作系統學習筆記-調度

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上不需要掛起整個進程
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章