操作系统学习笔记 第三章:处理机调度与死锁(王道考研)
本文章基于網課: 2019 王道考研 操作系統
考試復習推薦資料:操作系統復習總結 - 百度文庫 (baidu.com)
需要相關電子書的可以關注我的公眾號
BaretH后臺回復操作系統
第一章:操作系統概述
第二章:進程管理
后續章節陸續推出…
三、處理機調度與死鎖
- 3.1 處理機調度
- 3.1.1 什么是調度
- 3.1.2 高級、中級、低級調度
- 3.1.3 進程調度的時機、切換、過程
- 3.2 調度算法的性能指標
- 3.3 調度算法
- 3.3.1 先來先服務算法
- 3.3.2 短作業優先算法
- 3.3.3 高響應比優先算法
- 3.3.4 時間片輪轉算法
- 3.3.5 優先級調度算法
- 3.3.6 多級反饋隊列調度算法
- 總結
- 3.4 死鎖
- 3.4.1 什么是死鎖
- 3.4.2 死鎖、饑餓、死循環區別
- 3.4.3 死鎖產生的必要條件
- 3.4.4 什么時候發生死鎖
- 3.4.5 死鎖處理策略
- --- 預訪死鎖
- --- 避免死鎖
- --- 死鎖檢測和解除
3.1 處理機調度
3.1.1 什么是調度
3.1.2 高級、中級、低級調度
1?? 高級調度
2?? 中級調度
3?? 低級調度
三層調度的聯系、對比:
3.1.3 進程調度的時機、切換、過程
1?? 進程調度的時機:
2?? 進程的切換與過程
3?? 進程調度的方式
所謂進程調度方式,是指當某個進程正在處理機上執行時,若有某個更為重要或緊迫的進程需要處理,即有優先權更高的進程進入就緒隊列,此時應如何分配處理機。通常有以下兩種進程調度方式:
3.2 調度算法的性能指標
不同的調度算法具有不同的特性,在選擇調度算法時,必須考慮算法的特性。為了比較處理機調度算法的性能,人們提出了很多評價準則,下面介紹其中主要的幾種:
CPU利用率
系統吞吐量
周轉時間
等待時間
響應時間
3.3 調度算法
操作系統中存在多種調度算法,有的調度算法適用于作業調度,有的調度算法適用于進程調度,有的調度算法兩者都適用。下面介紹幾種常用的調度算法:
3.3.1 先來先服務算法
示例:
3.3.2 短作業優先算法
非搶占式短作業優先算法示例:
搶占式短作業優先算法示例:
注意:
3.3.3 高響應比優先算法
FCFS算法是在每次調度的時候選擇一個等待時間最長的作業(進程)為其服務。但是沒有考慮到作業的運行時間,因此導致了對短作業不友好的問題;SJF算法是選擇一個執行時間最短的作業為其服務。但是又完全不考慮各個作業的等待時間,因此導致了對長作業不友好的問題,甚至還會造成饑餓問題。
能不能設計一個算法,即考慮到各個作業的等待時間,也能兼顧運行時間呢?這就引入了高響應比優先算法
示例:
3.3.4 時間片輪轉算法
示例:
3.3.5 優先級調度算法
示例:
補充:
3.3.6 多級反饋隊列調度算法
FCFS算法的優點是公平;SJF算法的優點是能盡快處理完短作業,平均等待/周轉時間等參數很優秀;時間片輪轉調度算法可以讓各個進程得到及時的響應;優先級調度算法可以靈活地調整各種進程被服務的機會。
能否對其他算法做個折中杈衡?得到一個綜合表現優秀平衡的算法呢——多級反饋隊列調度算法
示例:
總結
3.4 死鎖
3.4.1 什么是死鎖
死鎖指在并發環境下,多個進程在運行過程中因爭奪資源而造成的一種互相等待對方手里的資源,導致各進程都阻塞,都無法向前推進的現象;發生死鎖后若無外力干涉,這些進程都無法向前推進。
死鎖和阻塞的區別:阻塞是由于資源不足引起的排隊等待現,死鎖的進程處于阻塞狀態,但僅依靠自己,無法繼續運行。
3.4.2 死鎖、饑餓、死循環區別
3.4.3 死鎖產生的必要條件
3.4.4 什么時候發生死鎖
3.4.5 死鎖處理策略
- 預防死鎖:破壞死鎖產生的四個必要條件中的一個或幾個
- 避免死鎖:用某種方法防止系統進入不安全狀態,從而避免死鎖(銀行家算法)
- 死鎖的檢測和解除:允許死鎖的發生,不過操作系統會負責檢測岀死鎖的發生,然后采取某種措施解除死鎖
— 預訪死鎖
**預防死鎖 **即破壞死鎖產生的四個必要條件中的一個或幾個
— 避免死鎖
避免死鎖 即用某種方法防止系統進入不安全狀態,從而避免死鎖,通常采用
銀行家算法
1?? 什么是安全序列
假定某系統有n個進程并發執行,對于某個時刻T0,劃分系統安全和不安全的標準如下:
系統能夠按照某種進程順序<P1,P2,…,Pn>執行,當輪到每個進程Pi執行時,都能滿足該進程對資源的最大需求,則該系統處于安全狀態,否則為不安全狀態,其中<P1,P2,…,Pn>稱為安全序列
2?? 安全序列、不安全狀態、死鎖的聯系
-
所謂
安全序列,就是指如果系統按照這種序列分配資源,則每個進程都能順利完成。只要能找出一個安全序列,系統就是安全狀態。當然,安全序列可能有多個 -
如果分配了資源之后,系統中找不出任何一個安全序列,系統就進入了
不安全狀態。這就意味著之后可能所有進程都無法順利的執行下去。當然,如果有進程提前歸還了一些資源,那系統也有可能重新回到安全狀態,不過我們在分配資源之前總是要考慮到最壞的情況 -
系統處于
安全狀態,則一定不會發生死鎖;如果系統進入不安全狀態,就可能發生死鎖(處于不安全狀態未必就是發生了死鎖,但發生死鎖時一定是在不安全狀態)因此可以在資源分配之前預先判斷這次分配是否會導致系統進入不安全狀態,以此決定是否答應資源分配請求。這也是“銀行家算法”的核心思想
3?? 銀行家算法
— 死鎖檢測和解除
1?? 死鎖的檢測
2?? 死鎖的解除
總結
以上是生活随笔為你收集整理的操作系统学习笔记 第三章:处理机调度与死锁(王道考研)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 操作系统学习笔记 第二章:进程管理(王道
- 下一篇: 操作系统学习笔记 第四章:存储器管理(王