1. 程式人生 > >計算機作業系統第三章 處理機排程和死鎖

計算機作業系統第三章 處理機排程和死鎖

處理機排程的層次

2.低階排程:程序排程或短程排程,決定就緒佇列中哪個程序獲得處理機。最基本的排程,多批道處理,分時和實時OS都有

3.中級排程:記憶體排程,提高記憶體利用率和系統吞吐量。儲存器管理中的對換功能。

1.高階排程

決定後備佇列中調入主存的作業多少作業:取決於多道程式度接納哪些作業:取決於排程演算法。主要用於多批道處理程式。

2.中級排程

記憶體排程,提高記憶體利用率和系統吞吐量

快閃記憶體中把暫時不執行的換出外存

決定那些程序被允許參與競爭CPU

處於掛起狀態

引入原因

1.換出 :使用者作業由輸入裝置向系統外存輸入時作業所處的狀態

  • 記憶體空間緊張
  • 就緒佇列程序太多
  • 等待I/O可能要一段時間
  • 便於緊縮

2.換入:

  • 記憶體中有足夠的空間
  • 外存中程序的優先順序高於記憶體中程序

3.低階排程

  1. 就緒佇列中分配處理機
  2. 程序排程

方式

1.搶佔式

原則:

優先權

短作業優先

時間片

2.非搶佔式

簡單、系統開銷小、無法處理緊急情況

作業狀態

  • 提交狀態 使用者作業由輸入裝置向系統外存輸入時作業所處的狀態
  • 後備狀態
  • 執行狀態
  • 完成狀態

只有低階排程是必須的

排程佇列模型和排程準則

排程佇列模型

一級

二級

三級

選擇排程方式和排程演算法的若干準則

1.面向系統的準則

系統吞吐量

CPU利用率

各類資源的平衡利用

2.面向使用者的準則

週轉時間短

等待時間和執行時間之和

帶權週轉時間:和實際時間的比值

  • 相應時間快
  • 截止時間的保證
  • 穩定性

演算法的效能準則

  • 易於實現
  • 執行開銷比

排程演算法

1.先來先服務和短作業(程序)優先排程演算法

短作業優先是當前時刻的短時間

多個作業同時到達時,短作業優先排程演算法的平均週轉時間最小

2.最短剩餘時間優先排程演算法

即當一個新程序進入就緒佇列時,若其需要的執行時間比當前執行程序的剩餘時間短,

則它將搶佔CPU

3.高優先權優先排程演算法

  • 搶佔式
  • 非搶佔式
  • 優先權

靜態優先權

動態優先權

4.最高相應比優先排程演算法

響應比: 等待時間+要求服務時間/ 要求服務時間

5.基於時間片的輪轉排程演算法

最開始的在隊首,執行完時間片到隊尾

時間片過大 太大退化為先來先服務,會讓隊尾的程序等待過久

時間片過小 程序切換過於頻繁,系統的開銷過大

多級反饋佇列排程演算法

設定多個佇列

優先順序越高,執行時間越短

在第一個佇列執行完以後再執行第二個佇列

執行過的程序放到最後一個佇列的末尾

處理機排程演算法的目標:

1.處理及排程演算法的共同目標:

資源利用率

公平性

平衡性

策略強制執行

2.批處理系統的目標

平均週轉時間

系統吞吐量高

處理機利用率高。

3.分時系統的目標

響應時間快

均衡性

4.實時系統的目標

截止時間的保證

可預測性。

實時排程

1.實現實時排程的基本條件

  • 提供必要的資訊
  • 系統處理能力強
  • 採用搶佔式排程機制
  • 具有快速切換機制

2.實時排程演算法的分類

2.1非搶佔式排程演算法

非搶佔式輪狀排程演算法

非搶佔式優先排程演算法

2.2搶佔式排程演算法

基於時鐘中斷的搶佔式優先權排程演算法 等系統的時鐘中斷才會搶佔

立即搶佔的優先權排程演算法 :當前任務未處於臨界區,便能立即剝奪當前任務執行。

3.常用的幾種實時排程演算法

最早截止時間優先

最低鬆弛度優先

鬆弛度 :必須完成時間-本身執行需要時間-當前時間

鬆弛度小的優先。

搶佔式的

產生死鎖的原因和必要條件

產生死鎖的原因

  • 競爭資源
  1. 可剝奪資源與不可剝奪
  2. 永久性和臨時性
  3. 不可剝奪、永久性和臨時性資源可造成死鎖
  • 程序推進順序不當

死鎖 ; 多個程序因競爭系統資源而造成的一種僵局,如果沒有外力作用,這些程序永遠不能向前推進

產生死鎖的必要條件

  • 互斥條件
  • 請求和保持條件
  • 不可剝奪條件
  • 環路等待條件

處理死鎖的基本方法

1.預防死鎖

預防死鎖的方法

1.互斥?

是裝置本身固有的屬性

不可修改

2.請求和保持條件

靜態資源分配法

一次分配所用的全部資源

資源利用率低,程序延遲

3.摒棄“不可剝奪”

已有該資源的程序要求釋放資源

只可用於狀態可以儲存和恢復的資源

4.摒棄“環路等待”

  • 有序資源分配 :程序申請一個資源的時候,必須釋放其佔有序號大於該資源的其他資源
  • 資源利用率提高(還是存在浪費)
  • 限制了使用者程式設計
  • 限制了裝置的增加

2.避免死鎖

系統安全狀態 :只要系統始終都處於安全狀態便可避免死鎖的發生

利用銀行家演算法避免死鎖

1. 通過對資源分配進行分析

2. 如果有任何一個程序的資源需求滿足現有資源儲備量,則可分配,並釋放佔用的資源 重複1

3.如果所有程序可全部被釋放,則處於安全狀態

檢測死鎖和解除

3.死鎖的檢測

1.資源分配圖

用圓圈代表程序

方框表示一類資源

方框中一個點代表一類資源的一個例項

從程序到資源表示程序請求一個該類資源

從資源指向程序表示有一個資源分配給該程序

2.檢測

不可完全簡化即死鎖

完全簡化即形成孤立結點

可以獲取到想要的資源則移除請求邊和分配邊

死鎖的解除

  • 資源剝奪法
  • 撤銷程序法

4.不考慮此問題