作業系統4——處理機排程與死鎖

空曠在遠方發表於2018-12-13

作業系統4——處理機排程與死鎖

——2018.12.11

零、目標

  • 處理機排程的層次和排程演算法的目標
  • 作業排程的三種演算法:先來先服務、短作業優先和高優先權優先
  • 程式排程
  • 死鎖的定義、產生死鎖的必要條件、死鎖的原因
  • 預防死鎖
  • 避免死鎖:安全狀態,銀行家演算法

一、處理機排程的層次

1. 高階排程
  • 作業排程或長程排程
  • 主要任務是按一定的原則對外存上處於後備狀態的作業進行選擇,給選中的作業分配記憶體、輸入/輸入裝置等必要的資源,並建立相應的程式,放入就緒佇列,以使該作業的程式獲得競爭處理機的權利
  • 也稱為接納排程
  • 高階排程的時間尺度通常是分鐘、小時或天
2. 中級排程
  • 引入目的是為了提高記憶體利用率和系統吞吐量,使那些暫時不能執行的程式不再佔用寶貴的記憶體資源,而將他們調至外存上去等待。
  • 主要任務是按照給定的原則和策略,將處於外存對換區中已經具備執行條件的就緒程式調入記憶體,或將處於記憶體就緒狀態和記憶體阻塞狀態的程式交換到外存對換區。
3. 低階排程:
  • 程式排程或短程排程
  • 主要任務是按照某種策略和方法選取一個處於就緒狀態的程式,將處理機分配給它
  • 常見的低階排程有搶佔式和非搶佔式兩種
  • 低階排程的時間尺度通常是毫秒級的,由於低階排程演算法的頻繁使用,要求實現時做到高效

二、排程演算法

1.先來先服務排程演算法
  • 演算法簡單,易於實現
  • 有利於長作業,不利於短作業
  • 有利於CPU繁忙型作業,不利於I/O繁忙型作業,可能導致I/O裝置和CPU利用率低
  • 未考慮作業的緊迫程度

例:設有4道作業,它們的提交時間及執行時間如下表,若按先來先服務排程演算法進行排程,試計算4個作業的平均週轉時間和平均帶權週轉時間。

作業 到達時間 服務時間
A 0 1
B 1 100
C 2 1
D 3 100

解:
週轉時間:指從作業被提交給作業系統開始,到作業完成為止的這段時間間隔

作業 執行時刻 週轉時間
A 0-1 1
B 1-101 100
C 101-102 100
D 102-202 199

平均週轉時間=(1+100+100+199)/4
帶權週轉時間:週轉時間/執行時間
平均帶權週轉時間=(1/1+100/100+100/1+199/100)/4

2.短作業優先排程演算法
  1. 非搶佔式

例:
在這裡插入圖片描述

  1. 搶佔式:最短剩餘時間優先排程演算法
  • 當一個新程式進入就緒佇列時,若其需要的執行時間比當前執行程式的剩餘時間段,則它將搶佔CPU

例:
在這裡插入圖片描述

3.優先權排程演算法
  1. 基本思想:照顧緊迫型作業
  2. 優先權通常用優先數來衡量。在某些系統中,優先數越大優先權越高;而在另一些系統中,優先數越大優先權越小。
  3. 按照排程方式分類:
  • 非搶佔式優先權演算法
  • 搶佔式優先權演算法
  1. 按優先權型別分類
  • 靜態優先權:在建立程式時確定的,確定之後再在整個程式執行期間不再改變。
  • 確定靜態優先權的依據:
    程式型別: 系統、使用者
    程式對資源的需求:執行時間、資源數量
    使用者要求:緊迫程度
    到達時間:先到則優先權高
  • 動態優先權:是指在建立程式時,根據程式的特點及相關情況確定一個優先權,在程式執行過程中再根據情況變化調整優先權
  • 調整動態優先權的原則:
    佔CPU時間越長,優先權越低
    等待時間越長,優先權越
4.最高響應比優先排程演算法
  • 最高響應比優先排程演算法是對短作業優先排程演算法和先來先服務演算法色一種綜合
  • 在每次排程作業時,先計算後備作業佇列中每個作業的響應比,然後挑選響應比最高投入執行
  • 響應比定義如下:=+ 響應比 = \dfrac{等待時間 +要求服務時間}{要求服務時間}

例:在這裡插入圖片描述

5.時間片輪轉排程演算法
  1. 基本思想:
  • 按先來先服務原則排隊
  • 時間片及時鐘中斷

例:
在這裡插入圖片描述
時間片為1:
在這裡插入圖片描述
時間片為4:
在這裡插入圖片描述

三、死鎖

1.死鎖的概念
  1. 指多個程式因競爭共享資源而造成的一種僵局,若無外力作用,這些程式都將永遠不能再向前推進
  2. 一組程式中,每個程式都無線等待被改組程式中另一程式所佔有的資源,因而永遠無法得到的資源,這種現象稱為程式死鎖,這一組程式就稱為死鎖程式
2.產生死鎖的原因
  1. 競爭資源
  2. 推進順序不當
3.產生死鎖的必要條件
  1. 互斥條件
  • 程式對所分配到的資源進行排他性的使用
  1. 請求和保持條件
  • 程式已至少保持了一個資源,但又提出了新的資源請求,而該資源又已被其他程式佔有
  1. 不可搶佔條件
  • 程式已獲得的資源在未使用完之前不能被搶佔,只能在程式使用完時自己釋放
  1. 迴圈等待條件
  • 在發生死鎖是,必然存在一個程式—資源迴圈等待的環形鏈
4. 處理死鎖的方法
  1. 預防死鎖:設定某些限制條件,破壞4個條件
  2. 避免死鎖:資源動態分配,防止進入不安全狀態
  3. 檢測死鎖:設定檢查機構,定時檢查系統是否出現死鎖
  4. 接觸死鎖:已出現死鎖

相關文章