和春技術學院資訊管理系 九十三學年度第一學期 系統程式 第三章 死結(Deadlock)

Slides:



Advertisements
Similar presentations
渡黑水溝 郁永河. 2 戎克船:是明末清初時期往返兩岸的主要交通工具 ∗ 1. 關於台灣的開發歷史,我們到底了解多少呢?不妨試著說出 就我們所知有關台灣開發史的故事、小說、電影、音樂與大 家分享。 ∗ 2. 什麼是黑水溝?黑水溝為什麼會成為大陸移民渡海來臺時最 大的威脅? ∗ 3. 有聽過「六死三留一回頭」、「有唐山公,無唐山嬤」這兩.
Advertisements

办公室保健指南. 减少辐射篇 ❤显示器散发出的辐射多数不是来自它的正面,而是侧面和后面。因此,不要 把自己显示器的后面对着同事的后脑或者身体的侧面。 ❤常喝绿茶。茶叶中含有的茶多酚等活性物质,有助吸收放射性物质。 ❤尽量使用液晶显示器。
商业主体的设立 商业主体的设立. 学习重点 1. 公司的设立方式 商个人的设立 个人独资企业 一. 设立依据 《中华人民共和国个人独资企 业法》1999年8月通过, 自2000年1月1日起施 行 二. 设立条件 1. 投资人为一个自然人; 2. 有合法的企业名称; 3. 有投资人申报的出资; 4.
课程目标: 知识:了解湄公河平原的自然环境及当地人们的 生产生活特色。 能力:阅读地图能说出湄公河平原在世界的位置 ;在地形图、气温曲线图和降水量柱状图中获 取有用信息,综合分析湄公河平原环境特点。 情感态度:理解区域特色是自然条件和社会条件 共同作用的结果,树立因地制宜的观念。 课程重点:湄公河平原的自然环境,稻作区人们.
魏 饴. 处级干部培训班讲座 一、卓越干部的德行素质  常修为政之德、常思贪欲之害、常怀律己之心!  孔老夫子有个观点 “ 为政以德,譬如北辰居其所而众星拱之。 ”  司马光《资治通鉴》 “ 才者,德之资也;德者,才之帅也。 ” “ 德 ” 胜 “ 才 ” 谓之 “ 君子 ” , “ 才 ”
一、真愛密碼 二、尋求真愛 三、有自尊的愛. 。如果雙方對愛情產生 質疑、困惑時,則表示 彼此之間的愛情關係仍 有 待加強或釐清,千萬別 急著為自己的人生大事 下決定。 我是一個 16 歲的未婚媽媽,發現自 己懷孕時,已經五個月大了,我知 道自己沒能力照顧孩子,在驚訝之 於,大人們只好坦然接受,幫我找.
大地遊戲王 課程實錄.
企业会计学(三) 人大版本 吕 昌.
小学科学中的化学 武威十九中 刘玉香.
神州五号、六号的发射和回收都取得了成功 ,圆了几代中国人的航天梦,让全中国人为之骄傲和自豪 神州五号、六号的发射和回收都取得了成功 ,圆了几代中国人的航天梦,让全中国人为之骄傲和自豪!但是你们知道我们的科学家是怎样迅速地找到返回舱着陆的位置的吗? 这全依赖于GPS——卫星全球定位系统”。大家一定觉得很神奇吧!学习了今天的内容,你就会明白其中的奥妙。
加強水銀體溫計稽查管制及回收 回收作業須知及緊急應變措施
第4章 分錄及日記簿 4-1 借貸法則 4-2 日記簿的格式及記錄方法 4-3 分錄的意義及記錄方法 4-4 常見分錄題型分析
據點考核與評鑑 報告人:臺南市政府 照顧服務管理中心.
政府採購法規概要 報告人:杜國正 行政院公共工程委員會企劃處.
依据教材 全国高等教育自学考试指定教材 《西方行政学说史》, 竺乾威主编,高等教育出版社。
正 信 讀 書 會 主 持 群 : 姚 永 錩 、 鄭 健 、 陳 淑 珍 佛法的生活應用 2008/07/23.
非法集资典型案例评析 南京师范大学法学院 蔡道通 2016年1月.
专题(二) 交往沟通 掌握技能 命 题 解 读 背 景 材 料 新 题 演 练 考 点 链 接 1.
國中適性輔導宣導 生涯導航 談國中學生適性輔導 石牌國中 輔導室葉嘉惠.
之 魔 析 妖 鬼 解 怪 大 沈家仪小组出品.
松竹梅岁寒三友 步入建交 桃李杏村暖一家 迈进职教 活出精彩.
第十三屆 Step.1 我們的目標 Step.2 我們的角色 Step.4 權利與義務 義務 權利 年繳會費五百元整
作業系統 第六章 同步與死結.
财务管理.
交通事故處置 當事人責任與損害賠償 屏東縣政府警察局交通隊.
第八单元第二课第一课时 严守法律 温州四中 蒋莉青.
高级财务会计.
默写基础知识: 1、家庭是由 关系、 关系或 关系而结合成的亲属生活组织。家里有 ,家中有 。
植物保护 课程整体设计 汇报 申报省级精品资源共享课建设 植物保护课程组.
什么是颈椎病? 颈椎病是指颈椎间盘退行性变,及其继发性椎间关节退行性变所致脊髓、神经、血管损害而表现的相应症状和体征。
采编班的“三朵奇葩”? 精品团会主题.
第九章 长期资产及摊销 2017/3/21.
第6章 死結(Deadlock).
第一单元 中国传统文化主流思想的演变.
第6章 程序设计与算法 计算机应用基础 数学与计算机工程学院.
政府扶持资金通览 技术改造篇.
第九組 組員:林世雲 葉永國 陳宥辰 指導老師:林永崇
荆门市农业水价综合改革 工作情况汇报 湖北省荆门市水务局 二0一六年九月.
第四章 时间序列的分析 本章教学目的:①了解从数量方面研究社会经济现象发展变化过程和发展趋势是统计分析的一种重要方法;②掌握时间数列编制的基本要求;③理解和掌握水平速度两方面指标的计算及运用④理解和掌握长期趋势分析和预测的方法。 本章教学重点:现象发展的水平指标和速度指标。 本章教学难点:现象变动的趋势分析。
口才与思辨并重 专业与职业共扬 -----法学院 “口才训练营” 精品活动介绍.
《傅雷家书》 学 科:语文 年 级:九年级 授课教师:王宁宁.
紧抓PPP项目为招标代理机构 带来的转型发展机遇
Chapter 6 同步 (Synchronization)
最後,是什麼決定一個領導者的成敗 這是一步思考與行動指南
本科生医保资料的提交.
Deadlocks P0 P1 Example System has 2 tape drives.
中国科学技术大学计算机系 陈香兰 2013Fall 第六讲 死锁及其处理 中国科学技术大学计算机系 陈香兰 2013Fall.
Applied Operating System Concepts
第三章 处理机调度与死锁 3.1 处理机调度的层次和调度算法的目标 3.2 作业与作业调度 3.3 进程调度 3.4 实时调度
統計圖表的製作.
作業系統 第六章 同步與死結.
李元金 计算机与信息工程学院 第 3 讲 进程管理(1) 李元金 计算机与信息工程学院 1/
1.ATP的结构: A-P~P~P 高能磷酸键 ADP+ Pi+ 能量 酶 磷酸基团 腺苷.
电子电路课程设计 TEL:025-
《结构力学认知实验》(授课形式)的上课时间改为: 5月5日(周二)晚上18:00~19:30和19:30~21:00,
《结构力学认知实验》(授课形式)的上课时间改为: 5月7日(周四)晚上18:30~20:00和20:00~21:30,
Operation System(OS).
安全状态的例子 例:假定系统有三个进程P1、P2、P3,共有12台磁带机。进程P1总共要求10台磁带机,P2和P3分别要求4台和九台。设在T0时刻,进程P1、P2和P3已经获得5台、2台和2台,还有3台空闲没有分配。 进程 最大需求 已分配 可用 P P2 4 2 P3 9 2 T0时刻系统时安全的。这时存在一个安全序列
畢業資格審查系統 操作步驟說明.
小学5.
李元金 计算机与信息工程学院 第 10讲 处理机调度与死锁(4) 李元金 计算机与信息工程学院 1/
新制退休實務計算說明- 現職人員退休範例說明
CHAPTER 6 Concurrency:deadlock And Starvation
资源分配与调度 第5章 资源分配与调度.
分布式系统 Distributed Systems 第 9 讲 协调和协定 Lecture 9 Coordination and Agreement 王晓阳、张 奇 复旦大学 计算机科学技术学院.
106 學年度新生入學說明會 國立臺灣海洋大學 教務處簡介
學士學位畢業論文說明 逢 學 大 甲 土 理 管 地 2009/10/05.
高雄市97年度國民小學閱讀計畫創新教學-教案達人創新教學方案
報告組別 : 第1組 組員 : 企碩2乙 M 藍元坤 企碩2乙 M 胡湘萍
中正大學,資工系,作業系統實驗室 陽春副教授 羅習五
Presentation transcript:

和春技術學院資訊管理系 九十三學年度第一學期 系統程式 第三章 死結(Deadlock) 教學投影片 課程網頁 講師:毛立仁

第三章 死結(Deadlock) 3-1 死結的定義與發生之條件 3-2 死結的預防(Deadlock Prevention) 3-1 死結的定義與發生之條件 3-2 死結的預防(Deadlock Prevention) 3-3 死結的避免(Deadlock Avoidance) 3-4 死結的偵察(Deadlock Detection) 3-5 死結的復原 (Deadlock Recovery)

3-1 死結的定義與發生之條件 1.在一個資源有限的多程式系統中,因同時有多個處理單元在系統內執行,而處理單元彼此間又競相爭用系統內的資源,造成處理單元彼此間所需求的資源相互被對方所佔,卻又無法釋放,致使所有等特資源的處理單元皆無法繼續執行,這種現象稱這些處理單元處於死結狀態 (Deadlock)。

用簡要的方式定義死結如下: 在多程式系統中,有一群處理單元 (至少2個) 皆在等待某個事件 (Event)的發生,但每個處理單元所等待的事件卻只能由其它的處理單元來產生,造成所有的處理單元都在等待,導致所有的處理單元永遠停滯的現象。

死結發生的四項必要條件 (必須四項均發生才會發生死結,缺少其中一項便不會產生死結): (1)互斥條件(Mutual Exclusion Conditon):至少含有一資源 (Resource) 為非共享的 (Nom- Sharable);即每次僅允許一個處理單元獨佔該資源,直到工作完成才釋出該資源。 (2)持有並等待條件 (Hold and Wait Condition):處理單元把持已分配給它的資源,而又正在等待其它處理單元所佔用的資源。

(3)不可搶用條件 (Nonpreemptive Condition):除非處理單元已完成其工作,並釋放出資源;否則,其已經分配得到的資源無法被其它的處理單元所奪取。 (4)循環等待條件 (Circular Wait Conditon):處理單元各自佔用一些資源,而彼此間又互相在等待對方的資源。例如:有三個處理單元P1 , P2與P3,其中 P1 在等待 P2 所佔有的資源,P2 在等待 P3 所佔有的資源,而 P3 卻在等待 P1 的資源。

3.死結的處理:當系統發生死結後,系統內的某些處理單元將永遠停滯,造成系統效能降低,甚至於整個系統停滯,此時可能需要藉助於系統操作員強制刪除某些處理單元,甚至於必須要關閉系統重新開機。

3-2 死結的預防(Prevention) 1. 在系統內要發生死結必須讓互斥、持有並等待、不可搶用與循環等待四個條件同時發生,所以只要四讓個條件中的任何一個條件不成立,則死結便無從發生。死結預防的就是藉此觀念,只要使四個死結發生條件中的任一條件不成立,使得死結不會發生。

2. 預防死結發生的方式即是否定四個死結發生條件中的任何一個,但無需四個全部否定掉。在此所謂的預防就是對四個死結發生的條件中資源使用的方式加以規範,只要處理單元使用資源時能依循環此規範,則保證不會發生死結。對於每個條件的否定方式分述如下:

(1)使互斥條件不成立:某些資源的本質便是不具有共享性的 (Sharable),故此條件有時是無法除去的。例如:印表機無法被兩個處理單元同時執行列印。

(2)使等待條件不成立:處理單元必須一次取得所有需求的資源才能執行;否則,必須等待並釋出目前所持有的資源。例如:處理單元A在執行時需要光碟機、硬碟機與印表機,它依序已取得光碟機與硬碟機,當它再要求印表機時,系統發現印表機已經配置給正在執行中的處理單元B,此時,處理單元A先前所取得之光碟機與硬碟機必須全部釋出,並使處理單元A進入等待狀態。

(3)使不可搶用條件不成立:若某處理單元所需之資源正被另一個等待中的處理單元所佔用,則此資源允許被搶用。即處於等待中的處理單元其所佔用的資源皆可被搶用。例如:處理單元A在執行時需要光碟機、硬碟機與印表機,它依序取得光碟機與硬碟機,同時,處理單元B已取得印表機,如果處理單元B因為需從外界輸入資料而進入等待狀態。此時,如果處理單元A要求系統給予印表機,則處理單元B原先配置的印表機可被處理單元A所搶用。

(4)否定循環等待條件:將各資源型態依序予以編號,當處理單元要求某一資源時,則其所要求資源之編號必須大於任何一個已分配給該處理單元之資源編號;否則,該處理單元必須釋出所有已分配的資源。這種技術稱為資源順位法 (Resource Ordering)。

如果有某個處理單元其在執行時會使用到光碟機、硬碟機與印表機,則其在要求資源時必須按照光碟機、硬碟機、印表機之順序才能順利取得所需的三種資源。如果是先取得硬碟機,再取得印表機後,最後才要求光碟機,則其之前所取得之硬碟機與印表機皆必須釋放出來,並重新依順取得硬碟機與印表機。

<補充說明>:在一般正常狀態下,處理單元利用系統資源的過程為: (1)處理單元要求(Request)、 (2)系統配置資源(Allocation)、 (3)處理單元使用資源 (Use) 與(4)處理單元釋放資源 (Release)。 (1)要求資源 (Request):處理單元在使用資源前必須對系統發出要求,如果該要求資源已被其它的處理單元所佔用,致使要求無法馬上獲准,則該處理單元必須等待直至該要求獲准。 (2)配置資源 (Allocation):處理單元所要求的資源已獲准,系統將處理單元要求的資源提供予處理單元。 (3)使用資源 (Use):處理單元取得系統配置的資源後,便可對該資源進行操作。 (4)釋放資源 (Release):當處理當元不再需要該資源或處理單元執行完畢時,會將資源歸還予系統。

3-3 死結的避免(avoidance) 由於死結預防的主要觀念是於對資源使用上的限制,導致資源的使用率不佳。死結的避免(avoidance)則是允許死結發生的條件存在,但隨時注意在分配資源時,必須避免死結的發生。一個簡單而有效的模式便是要求每個處理單元於執行前必須先聲明其所需要每種型式資源的最大需求量,並在要使用資源時先向系統提出請求,則系統可定義出避免死結的方法,又可動態地檢查資源配置的狀態,以確保系統不會產生循環等待的狀況。

3-3 死結的避免(avoidance) (1)每個處理單元需事先聲明所需要各種型式資源的最大需求量。 最著名的死結避免方法即是戴斯卓拉 (Dijkstra) 的銀行家演算法 (Banker‘s Algorithm)。其方式如下所述: (1)每個處理單元需事先聲明所需要各種型式資源的最大需求量。 (2)若處理單元所需要之各種型式資源之最大需求量皆小於目前該型式資可使用的總數量,則系統可接受其需求。 (3) 在分配資源給處理單元時,必須先檢查分配後是否使系統處於安全狀態。若可使系統處於安全狀態,則分配資源給該處理單元;否則,令該處理單元進入等待狀態。

死結的避免(avoidance) (Banker‘s Algorithm)

銀行家演算法 (Banker‘s Algorithm)安全狀態 對於上述之安全狀態的判定方式如下: a. Allocation (i):表示第 i 個處理單元目前已分配到的資源數目。 b. Max (i):表示第 i 個處理單元所要求資源的總數量。 c. Need (i):表示第 i 個處理單元尚需要的資源數量;即 Need (i) = Max (i) - Allocation (i)。

d. Available:表示系統中尚未使用的資源數目。即 e. 若對每一個處理單元 Pi,使得 則表示系統內這幾個處理單元是處於安全狀態。

<註>:(e) 之涵義為若是目前系統內尚未使用的資源數量 Available 可以滿足系統內某一個處理單元 Pj 完成工作尚需要的資源數量 Need (j),則一旦 Pj 完成工作後,會釋放出其原先已分配的資源數量 Allocation (j),使得系統內尚未使用的資源數量變為 Allocation (j) + Available。依此類推 若能逐一滿足系統內每一個處理單元 Pi 完成工作尚需要的資源數量 Need (i),則此系統是處於一個安全狀態 (Safe State)。

P 則, Available = 10 - (1+4+3) = 2。 處理單元 P 已配置 最大需求量 (Process) (Allocation) (Max) A 1 4 B 6 C 3 8 則, Available = 10 - (1+4+3) = 2。

(Need = (Max - Allocation)) 處理單元 需 求 量 (Need) (Process) (Need = (Max - Allocation)) A 3 = (4-1) B 2 = (6-4) C 5 = (8-3) 依目前系統的可用資源數量檢查 Available = 10 - (1+4+3) = 2 ,可發現執行順序為 BCA 或 BAC 時,可滿足安全狀態。 而 對每一個處理單元 Pi,使得: 則表示系統內這幾個處理單元是處於安全狀態。

如果此時處理單元 C 要求給予 2 部磁碟機,系統是否會答應其請求呢?答案是不會的。因為如果給予處理單元 C 所要求的 2 部磁碟機,則系統狀況為: 因系統內所有磁碟皆已配置 Available = 10 - (1+4+5) = 0 ,已無任何磁碟機可再供使用,導致處理單元A、B與C皆無法繼續執行。故如果答應處理單元 C 之請求,則將造成系統進入不安全狀態。

<補充說明>:何謂安全狀態 (Safe State) 呢?它是指系統將目前系統所擁有之可用資源,並將資源依循著某一種次序配置給每一個處理單元,可以讓每一個處理單元皆順利執行完成,而不會產生死結。反之,系統目前剩餘之資源無法依循某一次序配置資源給每個處理單元,讓每個處理單元都能順利執行完畢,此種情況則稱之為不安全狀態。 系統只要處於安全狀態必定不會產生死結,只要是系統產生死結時,系統必定處於不安全狀態。但是系統處於不安全狀態時,是否會發生死結呢?答案是不一定。

 範例:若系統中含有 10部磁碟機,3個處理單元共同使用這些磁碟機,其情況如下表所述: 得知,Available = 10-(1 + 1 + 6) = 2 此時,若處理單元 C 發出給予一部磁碟機之請求,系統經檢查不會導致不安全狀態,故配置一部磁碟機給處理單元 C。 之後 Available = 10-(1 + 1 + 7) = 1 Need for A, B , C = 4-1, 6-1, 7-7 = 3, 5 , 0

Available = 10-(1 + 1 + 7) = 1 假設處理單元 C 需執行相當長的時間才能執行完畢,在此時處理單元 B 也發出給予一部磁碟機之請求,系統發現目前僅一部磁碟機可用(因處理單元C仍在執行尚未釋放出佔用的7部磁碟機),系統依目前狀況檢查發現,如答應處理單元 B 之請求,將導致系統進入不安全狀況。試想如果系統答應處理單元 B 之請求並配置一台磁碟機給處理單元B,雖然系統進入了不安全狀態,但也只是暫時性的,一旦處理單元 C 執行完畢,又會回到安全狀態。所以不安全狀態並不意味著死結的發生。

上述之銀行家演算法是針對單一種資源型態之測試方式,但如果系統中有多種資源型態時,則上述之演算法應修改如下:若系統中有 m 種資源,n 個處理單元 (Process) 正在執行,則所需要的資料結構為: a. Available 陣列,長度為 m。Available [j] = k 表資源 j 尚有 k 個可用。 b. Max 矩陣,其大小為 n × m。它用來定義各處理單元對各種資源的最大需求量。Max [i,j] = k,表示處理單元 Pi 要求資源 j 之最大數量為 k。 c. Allocation 矩陣,其大小為 n × m。它用來定義現在每一處理單元所佔用各類型資源的數量。Allocation [i,j] = k,表處理單元 Pi 佔用 k 個資源 j。 d. Need 矩陣,其大小為 n×m。它用來表示出每一處理單元剩餘的需求量。若 Need [i,j] = k,表示處理單元 Pi 還需要 k 個資源 j。 e. Need [i,j] = Max [i,j] - Allocation [i,j] Allocationi 為一向量 (Vector),表示 Pi 佔用各種資源的數量。 Needi 為一向量,表示 Pi 還需要各種資源的數量。 Requesti 為一向量,表示 Pi 現在要求再給予各種資源的數量。

範例:系統內有 A, B, C 與 D四種資源,有P1、P2 與P3 三個處理單元,已知系統內 A, B, C與 D 四種資源(Available)之數量分別為9, 8, 7 與 6。 P1對 A, B, C 與 D四種資源之最大需求量(Max)分別為1, 2, 3, 4 P2對 A, B, C 與 D四種資源之最大需求量(Max)分別為2, 1, 2, 1 P3對 A, B, C 與 D四種資源之最大需求量(Max)分別為4, 3, 2, 1 假設目前系統已配置 A, B, C 與 D 四種資源給 P1、P2 與 P3 之情況為(Allocation): P1已配置 A, B, C 與 D 四種資源的數量分別為 1, 1, 1, 1 P2已配置 A, B, C 與 D 四種資源的數量分別為 1, 0, 1, 0 P3已配置 A, B, C 與 D 四種資源的數量分別為 2, 2, 0, 0 在某個時候,P3 請求系統給予1個 A 資源、2個B資源及1個D資源。

Allocation1 = (1, 1, 1, 1),表示目前P1已配置 A, B, C 與 D四種資源的數量分別為1, 1, 1, 1 Request3 = (1, 2, 0, 1),表示 P3 對系統要求給予A, B, C與 D資源數量各為1, 2, 0, 1

當處理單元 Pi 要求再給予資源時,其處理之方式如下: 1 若 Requesti ≦ Needi , Goto 2,否則發出錯誤訊息; 2 若 Requesti ≦ Available , Goto 3,否則令處理單元 Pi 等待; 3 Available = Available - Requesti Allocationi = Allocationi + Requesti; Needi:= Needi - Requesti; 再利用下述安全演算法 (Safety Algorithm) 檢查是否為安全狀態。若安全,則配置資源給 Pi ;否則 Pi 必須保持舊有的狀態,等待 Requesti 的滿足。 <註>:Requesti ≦ Needi 所表示的意思為 Requesti 向量內的每一個元素皆小於等於 Needi 向量內相對應位置上的元素。如: (1, 2, 3, 4) ≦ (1, 3, 4, 5) 成立。 (1, 2, 3, 4) ≦ (4, 1, 5, 9) 不成立。 同理,對於 Reuuesti 與 Available 之比較亦是相同之觀念。

安全演算法 (Safety Algorithm):假設 Work 陣列長度 m,Finish 陣列長度為 n,其中 m 為系統資源的種類,而 n 為系統內處理單元的數量。 Work 也是一個向量,它是安全演算法運算過程中用來紀錄在目前之狀況下整個系統各種資源可用的數量。例如:有A, B 與 C三種資源,其目前可用的數量分別為1, 2 與 3,則Work = (1, 2, 3)。 Finish 也是一個向量,它是用來紀錄目前系統中所有的處理單元是否完成。例如:有4個處理單元P1、P2、P3 與P4,若目前P1與P4 已完成,而P2與P3未完成,則Finish = (true, false, false, true)。

安全狀態演算法 Safety Algorithm 1. Let Work and Finish be vectors of length m and n, respectively. Initialize: Work = Available Finish [i] = false for i - 1,3, …, n. 2. Find an i such that both: (a) Finish [i] = false (b) Needi  Work If no such i exists, go to step 4. 3. Work = Work + Allocationi Finish[i] = true go to step 2. 4. If Finish [i] == true for all i, then the system is in a safe state.

 安全演算法步驟如下: (1)令 i = 1,2,...,m (m 個資源), Work [i] = Available [i]; 對於所有的 j = 1,2,...,n (n process),Finish[j] = false; (先預設每一處理單元皆未完成) (2)任意尋找一個 i 滿足 (Ⅰ) Finish [i] = false 且 (Ⅱ) Needi ≦ Work (即找尋一個尚未完成的處理單元,且目前系統內的可用資源足以供應其需求),若 i 不存在,則 Goto (4) (3)Work = Work + Allocationi;(即將目前可用資源與處理單元 i 所釋出的資源相加,成為處理單元 i 完成後系統中可使用的數量) Finish [i] = true (將處理單元i 設定為完成) Goto (2) (4)對於所有的 i,若 Finish [i] = true,則此系統處於安全狀態 (即所有的處理單元皆可順利完成);否則,此系統處於不安全狀態。 <註>: Finish[i] = true 表示處理單元 Pi 可以順利完成其工作。所以,當所有的 Finish[i] (i=1,2,...,n) 皆為 true 時,表示所有的工作皆能順利完成。

 範例:假設系統中有4個處理單元 P1、P2、P3 與 P4,3種資源 A,B與 C,其數量分別為 9,6 與 7。其目前各個處理單元之最大需求,配置與需求描述如下:

可求得 Available = (4,4,5),若目前 P2 向系統請求給予 A,B與 C 資源之數量分別為 1,1,1,則系統是否會答應其請求? 先假設系統答應其請求之狀況如下:

則 Available = (3,3,4) 依循安全演算法之步驟演算如下:  Work = Available = (3,3,4) Finish = (false,false,false,false)  選取 P4  Work = (4,3,4),finish = (false,false,false,true)  選取 P2  Work = (7,4,5),finish = (false,true,false,true)  選取 P1  Work = (7,5,5),finish = (true,true,false,true)  選取 P3  Work = (9,6,7),finish = (true,true,true,true) 所有的處理單元 P1、P2、P3 與 P4 皆可順利完成,系統處於安全狀態。 因此系統可以答應 P2 之請求。

 範例:若系統中含有 3 種型態之資源 A,B 與 C,其數量分別為 11,6,8。假設有 5 個處理單元 (Process) 正於此系統中使用這些資源,其狀態如下: Allocation Max A B C 1 2 7 6 3 4 9 5 則 Available [A] = 11 - (3 + 3 + 2) = 3 Available [B] = 6 - (2 + 1) = 3 Available [C] = 8 - (2 + 1 + 1) = 3

發現存在一個執行順序 24531 可以滿足安全狀態。 而每個處理單元尚需之各資源為 Process Need A B C 1 7 4 3 2 6 5 發現存在一個執行順序 24531 可以滿足安全狀態。

3-4 死結的偵察 系統內如果為了防止死結的發生,可採用死結預防的方式,但卻會造成資源使用率降低的缺失﹔如採用死結避免的方式,則處理單元必須事先宣告資源的最大使用量,似乎不太實際,所以有些系統並無採用防止死結發生的措施,而是當死結發生後再行處理。

在系統內若無採取死結預防或死結避免的措施來防止死結的發生時,則必須在死結發生時能予以偵查並恢復,以使系統能正常的運作。但什麼時候應該進行死結偵查呢?系統內是否有死結發生是難以確切得知的,所以死結的偵測一般是定期性的偵測或是當系統效能降至某一警戒值時便啟動死結偵察。

死結偵察之方法通常僅檢測循環等待的條件是否成立,但允許其他三項死結條件的發生。其目的在於尋找出發生問題之處理單元與資源,再藉由死結復原之方式將死結從系統中清除,藉以消除死結。 死結的偵察一般是採用資源分配圖 來觀察是否有循環等待的情況發生,藉以判斷是否有死結形成 (但只適用於各種型態資源的數量都只有一個) 。在資源分配圖形中,方形節點表示處理單元,大圓圈節點表示同一型態之資源,大圓圈內小圓圈的數量表示該型態資源之數量。

茲以下列四個圖例說明處理單元與資源間的關係。

2.死結偵察的方法: (1)偵察的方法是採用圖形化簡 (Graph Reduce) 的方式來檢測。若一個處理單元所要求的資源能夠滿足,則將資源分配給處理單元的箭號去除,再移掉由處理單元至資源的箭號,依此步驟重覆操作,若圖形中所有的處理單元均可化簡,則表示不會產生死結狀態;否則,表示會造成死結。

 範例:下圖每個處理單元均可順利的化簡,故不會產生死結。

<註>:若同一型態資源的數量都只有一個時,則一旦發現有循環等待必表示發生了死結。若同一型態資源的數量有一個以上時,則發現有循環等待未必表示發生了死結;反之,發現了死結必表示有循環等待的情況發生。

(2)另一種方式是將資源分配圖轉換成等待圖再進行檢查等待圖中是否有循環等待的情況發生 (只能用於各種資源數量都為1)。至於如何將資源分配圖轉換成等待圖的方式則描述如下:

 範例: 請將下述之資源分配圖轉換成等待圖。

根據上述 (a)、(b) 兩個規則,可轉換成如下之等待圖

3-5 死結的復原(recovery) 死結復原的做法是取消某一個或多個處理單元的執行,以中止循環等待之情況。但是如果隨意的中止 (或刪除) 處理單元,可能中止 (或刪除) 的並非是形成死結的處理單元,造成資源的浪費 (因處理單元之前所執行的全都無效了),所以,配合死結偵察決定出形成循環等待之處理單元,再對該些處理單元逐一中止,直至循環等待不復存在。

但這也有可能面臨到另一個問題,可能每次形成死結時,所中止的處理單元都是同一個 (被中止的處理單元可能優先次序(Priority) 較低,每次都是被犧牲者),而產生飢餓現象(Starvation) (即無限延遲)。

要具有死結復原的功能,則系統中應具有中止/恢復 (Suspend/Resume) 之功能。當死結發生時可暫時的中止 (Suspend) 一些處理單元,等待系統無死結之顧慮時,再予以恢復 (Resume) (因處理單元被中止後,經過一段時間又會再被執行,所以必須將該處理單的PCB儲存,以便再執行時能接續之前被中斷之處)。這便是檢查點/重新開始 (Checkpoint/Restsart) 特性。

(1)檢查點 (Checkpoing): 在中止 (Suspend) 時,將系統目前之狀態予以儲存,以便從新開始 (Restart) 時使用。 (3)餓死 (Starvation):在選擇犧牲者時,可能某一處理單元總是被選中,使得這個處理單元可能永遠無法完成它的工作稱為餓死。

(4)無限期延遲 (Indefinite Postponement): 系統分配資源或安排處理單元優先順序時,可能因偏重某些處理單元,使得其它的處理單元一直在等待,而無法執行的情況,稱為無限期延遲。此種情形和死結一樣嚴重,但是該處理單元仍有機會完成其工作,而死結則是永遠無機會完成其工作。