03. 操作系統之處理機調度與死鎖

1. 高級、中級和低級調度

高級調度
  • 說明: 高級調度又稱作業調度或長程調度。將外存上處於後備隊列的作業調入內存,並創建進程、分配資源
  • 接納作業數:
    (1) 取決於內存的多道程序度,即允許多少個作業同時在內存中運行,允許多少個進程併發
    (2) 如果接納作業數太少,資源利用率低;如果接納作業太多,服務質量下降
  • 接納哪些作業: 取決於作業調度算法
低級調度
  • 說明: 低級調度又稱進程調度或短程調度,決定就緒隊列中的拿個進程獲得處理機
  • 低級調度的非搶佔方式和搶佔方式兩種:
    (1) 非搶佔方式: 一旦處理機分配給某進程,便讓該進程一直執行,直到該進程完成或阻塞時再分配給其他進程,其優點是: 簡單,系統開銷小; 缺點:不適合時間要求嚴格的實時系統
    (2) 搶佔方式: 允許調度優先級高的進程,暫停正在執行的進程,將處理機分配給其它進程,優點: 保證了系統的實時性 ;缺點: 增加了進程調度的次數,增加了系統開銷
中級調度
  • 說明: 中級調度又稱中程調度。在內存資源緊張的情況下,爲了提高內存利用率和系統吞吐量是那些暫時不能運行的進程不再佔用內存資源,而將它們調至外存上去等待,此時的狀態稱爲就緒駐外存狀態或掛起轉態

2. 調度隊列模型

僅有進程調度的調度隊列模型
  • 說明: 在分時系統中,通常僅舍友進程調度,用戶輸入命令和數據,都直接進入內存,系統可以把就緒進程組成一列隊列
  • 過程: 交互用戶提交作業直接進入就緒隊列,隊首的作業進入CPU執行,如果時間片用完還未執行完,則重新進入隊尾,如果產生錯誤故障,進入阻塞隊列,等待故障解除進入就緒隊列隊尾
具有高級和低級調度的調度隊列
  • 說明: 在批處理系統中,不僅需要進程調度,而且徐需要作業調度,該模型與上一模型主要區別在於:

  • 特點: 與前一模型的區別在於
    (1) 就緒隊列的形式: 在批處理系統中常用優先權隊列。進程進入就緒隊列時,按優先權高低插入相應位置位置
    (2) 設置多個阻塞隊列: 根據事件阻塞原因不同設置多個隊列提高效率

  • 過程: 批量作業先進入後備隊列就緒,經作業調度進入就緒隊列,再經進程調度進入CPU,如果時間片用完還未執行完,則重新進入隊尾,如果產生錯誤故障,根據故障類型進入不同阻塞隊列,等待故障解除進入就緒隊列隊尾

同時具有三級調度的調度隊列
  • 過程: 批量作業先進入後備隊列就緒,經作業調度進入就緒隊列,再經進程調度進入CPU,如果時間片用完還未執行完,則重新進入隊尾,如果產生錯誤故障,根據故障類型進入不同阻塞隊列,阻塞隊列進程掛起進入阻塞掛起隊列,等待故障解除進入就進入就緒掛起隊列,如果就緒度列進程非常多,內存緊張則且有緊急任務,掛起就緒隊列靠近隊尾的進程,把它掛入就緒掛起隊列(位於外存)

3. 調度算法的若干準則

面向用戶的準則
  • 響應時間快
    (1) 響應時間是指從用戶通過鍵盤提交一個請求開始,知道系統中首次產生響應爲止的時間
    (2) 響應時間包括: 鍵盤輸入請求信息傳送到處理機時間,處理機對請求的處理時間和響應信息送回到終端的時間
    (3) 常用於評價分時系統

  • 截止時間保證
    (1) 截止時間是指某任務必須開始執行的最遲時間或必須完成的最遲時間
    (2) 實時系統中的重要指標

  • 優先權準則

面向系統的準則
  • 系統吞吐量高
    (1) 吞吐量指單位時間內系統所完成的作業數
    (2) 作業調度的方式和算法對吞吐量的大小影響較大

  • 處理機的利用率高

  • 各類資源的平衡利用
    (1) 使內存、外存和I/O設備的利用率高

4. 調度算法

先來先服務調度算法(FCFS)
  • 按照作業進入系統的先後次序進行調度,先進入系統者先調度
  • 是一種簡單的算法,既適用於作業調度,也可以用於進程調度
  • FCFS算法有利於長作業,而不利於短作業
短作業優先調度算法SJF
  • 要求運行時間長短進行調度,即啓動要求運行時間最短的作業
  • 可以用於作業調度和進程調度
  • 對於作業調度:從後備隊列中選擇一個或若干個估計運行時間短的作業,它們調入內存運行;對於進程調度: 從就緒隊列中選出一估計運行時間最短的進程,將處理機分配給它
  • SJF算法的缺點:
    (1) 對長作業極不公平,總是先調用短作業而導致長作業長期不被調度
    (2) 該算法完全沒有考慮作業的緊迫程度,因而不能保證緊迫性作業會被及時處理
    (3) 由於作業的長短只是根據用戶所提供的估計執行時間而定,導致不能做到真正的短作業優先調度
高優先權調度算法
非搶佔式優先權算法
  • 系統一旦把處理機分配給就緒隊列中優先權最高的進程後,該進程會一直執行下去; 或因發生某件事使得該進程放棄處理機時,系統方可再將處理機重新分配給另一件最高權的進程

  • 主要用於批處理系統中,也可以用於某些對實時性要求不嚴的實時系統

搶佔式優先權算法
  • 系統同樣把處理機分配給最高權的進程,使之執行。執行期間,只要又出現了另一個其優先權更高的進程,進程調度程序就立即停止當前進程,重新將處理機分配給新到的優先權最高的進程
  • 搶佔式優先權算法,更好地滿足緊迫作業的要求,故而常用於比較嚴格的實時系統中,以及對性能要求較高的批處理和分時系統
靜態優先權
  • 優先權在創建進程時確定的,且在整個運行過程中保持不變
動態優先權
  • 優先權在創建進程時所賦予的優先權,是可以隨進程的推進或隨其等待時間的增加而改變的,以便獲得更好的調度性能
  • 優先權 = (等待時間 + 要求服務時間)/要求服務時間,越大優先級越高
  • 該算法是FCFS和SJF的結合,克服了兩種算法的缺點
  • 由於每個時間片後都要計算進程的響應比(優先權),所以運行速度較慢

5. 處理機調度與死鎖

產生死鎖的原因
競爭資源引起進程死鎖
  • 可剝奪和非可剝奪性資源
    (1) 可剝奪性資源是指進程在獲得這類資源後,該資源可以再被其他進程或系統剝奪,如處理機、內存等
    (2) 不可剝奪性資源是指當系統把這類資源分配給其他進程後,再不能強行收回,只能在進程完成後自行釋放,如打印機

  • 競爭非剝奪性資源
    (1) 系統中非剝奪性資源由於數量有限而不能滿足進程需要,進程在運行中因爭奪這些資源而陷入僵局

競爭臨時性資源
  • 競爭臨時性資源
    (1) 臨時性資源區別於永久性資源,指由一個進程產生,被另一進程使用後再也無可用資源,也稱消耗性資源
產生死鎖的4個必要條件
  • 互斥條件: 進程對所分配的資源進行排它性的使用,臨界資源

  • 請求和保持條件: 進程在請求資源的同時,自己保持着一些資源

  • 不剝奪條件: 進程已獲得的資源在未使用之前不能被剝奪

  • 環路等待條件: 在發生死鎖時,必然存在一個進程–資源的環形路

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