1. 程式人生 > 其它 >作業系統學習筆記(3)

作業系統學習筆記(3)



1、處理器排程

  排程原因:

  • 在多道程式系統中,程序的數量往往多於處理機的個數,程序爭用處理機的情況就在所難免。處理機排程是對處理機進行分配,就是從就緒佇列中,按照一定的演算法(公平、髙效)選擇一個程序並將處理機分配給它執行,以實現程序併發地執行。相當於快到假期了,你列舉了很多你想完成計劃,但是沒有辦法同時完成所有的事情,你需要列一個時間表,把各種事情進行規劃,執行的過程中也可能會有突發情況,你再根據突發情況進行解決。

  排程流程圖:


  處理器排程的實質:

  • 在多道程式系統中,排程實質是一種資源分配,一個作業從獲得處理機執行到作業執行完畢,可能會經歷多級處理機排程。

  處理器排程原則:

  • 合理性:既要保證系統實現特殊功能要求,同時要對各個任務合理地分配到處理器份額;
  • 有效性:處理器、記憶體和I/O裝置得到合理有效的分配,使系統資源得到充分的利用


2、處理器排程層次:高階排程、中級排程、低階排程。

  • 高階排程(作業排程):按照某種規則,從後背佇列中選擇合適的作業將其調入記憶體,併為其建立程序,傳送頻率最低;
  • 中級排程(記憶體排程):按照某種規則,從掛起佇列中農選擇合適的程序將其資料調回記憶體;
  • 低階排程(程序排程):按照某種規則,從就緒佇列中選擇一個程序為其分配處理機,傳送頻率最高。


3、作業和程序

  • 作業是使用者向計算機提交的任務實體,而程序則是完成任務的執行實體,是系統分配資源的基本單位;
  • 一個作業可由多個程序組成,且必須至少由一個程序組成,反之不成立;
  • Linux等分時系統中,並不強調作業概念。


4、處理器排程的演算法

  排程演算法的理想目標

  • 單位時間內執行儘可能多的作業;
  • 使處理器儘可能保持忙碌;
  • 響應時間和週轉時間能夠儘可能短;
  • 是各種I/O裝置得以充分利用;
  • 對所有的作業都是公平合理的。

  排程演算法的設計理念

  • 排程演算法應與系統設計目標保持一致;
  • 主義系統資源均衡使用;
  • 保持提交作業在截止時間內完成;
  • 設法縮短作業平均週轉時間。

  大多數作業系統都採用比較簡單的排程演算法。


  排程演算法決策因素:

  • 作業到達時間
  • 預先為作業確定的優先順序
  • 作業所需的CPU時間
  • 儲存要求
  • 其他的資源要求

  效能衡量指標

  • 作業平均週轉時間

假定有那個作業,其中作業i進入系統時間為Si,它被選中執行得到結果的時間為Ei,其週轉時間為:

Ti= Ei- Si

則這批作業平均週轉時間為:

T = Σ(Ti/ n)

  • 平均帶權週轉時間

ri為作業i的實際執行時間:

W = Σ(Ti/ (ri× n))

T:衡量不同調度演算法對同一個作業流的效能

W:同一排程演算法對不同作業流的效能衡量


  典型演算法

  • 先來先服務演算法FCFS
  • 最短作業優先演算法SJF
  • 最短剩餘時間優先演算法SRTF
  • 最高響應比優先演算法HRN

  響應比 = 作業週轉時間 / 作業處理時間 = (作業處理時間 + 作業等待時間) / 作業處理時間 = 1 + (作業等待時間 / 作業處理時間)



5、低階排程方式演算法

  流程:

  • 記住程序的狀態;
  • 決定程序什麼時候獲得處理器;
  • 決定程序佔用處理器多長時間;
  • 把處理器分配給程序;
  • 收回處理器。

  低階排程方式

  • 可剝奪式(可搶佔式Preemptive):
    • 比正在執行的程序優先順序更高的程序就緒時,可強行剝奪正在執行程序的CPU,提供給具有更高優先順序的程序使用,或是當執行程序時間片用完後被剝奪;
  • 不可剝奪式(不可搶佔式Non-preemptive):
    • 某一程序被排程執行後,除非由於自身的原因不能執行,否則一直執行下去。

  低階排程方式演算法

  • 先來先服務演算法
    • 按照程序進入就緒佇列的先後次序分配分配處理器;
    • 程序一旦佔有處理器一直執行,直到結束或阻塞;
    • 演算法容易實現;
    • 演算法效率不高,不利於I/O頻繁的程序。
  • 時間片輪轉排程演算法
    • 就緒佇列中的每個程序輪流地執行一個時間片;
    • 時間片結束時,強迫當前程序讓出處理器,等候下一輪排程;
    • 演算法可防止很少使用外圍裝置的程序過長佔用處理器,使要使用外圍裝置的程序有機會去啟動外圍裝置。
    • 時間片選取方案:
      • 輪轉法排程是一種剝奪式排程,程序切換開銷較大,開銷與時間片的大小有關;
      • 時間片取值太大,多數程序不能在一個時間片內執行完畢,切換頻繁,開銷增大;
      • 時間片取值太大,隨就緒佇列裡程序數目增加,輪轉一次的總時間增大,對每個程序的響應速度放慢了;
      • 時間片大小的確定要從程序個數、切換開銷、系統效率和響應時間等方面綜合考慮。
  • 優先權排程
  • 多級反饋佇列排程
  • 保證排程演算法
    • 對每個任務做出明確的效能保證,然後去實現它;
    • 在一個有n個程序執行的系統中,保證每個程序獲得CPU處理能的1/n
    • 跟蹤各個程序自建立以來已經使用了多少CPU時間,根據各個程序應獲得的CPU時間,計算實際獲得的CPU時間和應獲得的CPU時間之比,優先排程比率最低的程序。
  • 彩票排程演算法
    • 為每個程序發放一定數量的彩票,排程程式隨機選擇一張彩票,持有該彩票的程序獲得系統資源;
    • 如果某些程序需要更多的機會,可被給與更多彩票,增加其中中獎的機會;
    • 演算法反應迅速,合作程序還可交換彩票。