Deadlocks P0 P1 Example System has 2 tape drives.

Slides:



Advertisements
Similar presentations
Unit 4 Finding your way Integrated skills New words and phrases: past prep. 在另一边,到另一侧 treasure n. 宝藏 turning n. 转弯处 traffic n. 交通,来往车辆 traffic lights.
Advertisements

allow v. wrong adj. What’s wrong? midnight n. look through guess v. deal n. big deal work out 允许;准许 有毛病;错误的 哪儿不舒服? 午夜;子夜 快速查看;浏览 猜测;估计 协议;交易 重要的事.
期末复习题讲解 舒荣宏. 单项选择 31 duty:( 道德或法律上的 ) 责任、义务: 你得去,那是你的责任。 It’s your duty to go. do one’s duty 尽职尽责 a sense of duty 责任感 on duty 值班 ; off duty 不上班 An old.
8 Click.
-CHINESE TIME (中文时间): Free Response idea: 你周末做了什么?
:sisu Password:
完形填空技巧 CET4.
English Riddles and Brainteaser. What do you call a deer 鹿 with no eyes? No-eyed deer (No idea.)
广德二中2006届高考 英语专题复习 单项填空 答题指导.
第6章 死結(Deadlock).
自然運動 伽利略在運動學上的成就,奠定了牛頓動力學的基礎。伽利略成功的描述地球上物體的拋物運動,其主要基於兩個基本概念:
Chapter 6 同步 (Synchronization)
Operating System Process Management - 4 Monday, August 11, 2008.
Unit 4 I used to be afraid of the dark.
Ⅱ、从方框里选择合适的单词填空,使句子完整通顺。 [ size beef special large yet ]
指導教授:許子衡 教授 報告學生:翁偉傑 Qiangyuan Yu , Geert Heijenk
! 温故知新 上下文无关文法 最左推导 最右推导 自上而下 自下而上 句柄 归约 移进-归约冲突 移进-归约分析 递归下降预测分析
操作系统 (并发进程) 徐锋 南京大学计算机科学与技术系 2018年9月18日3时52分.
馬太福音 Matthew 11: 那時,耶穌說:「父啊,天地的主,我感謝你!因為你將這些事向聰明通達人就藏起來,向嬰孩就顯出來。26 父啊,是的,因為你的美意本是如此。27 一切所有的,都是我父交付我的; 25 At that time Jesus said, “I praise you,
初二英语写作课 课件 福建省闽清县第一中 王国豪
Applied Operating System Concepts
和春技術學院資訊管理系 九十三學年度第一學期 系統程式 第三章 死結(Deadlock)
Dì 十四kè 我家的 hòu biān 有一個很piàoliàng 的公園/ 我家的 hòu biān 有一个很piàoliàng 的公园
HLA - Time Management 陳昱豪.
创建型设计模式.
论题1-3 - 常用的证明方法及其逻辑正确性
计算机操作系统 第二章 进程管理 高校教师、高级项目经理 任铄 QQ:
但是如果你把它发给最少两个朋友。。。你将会有3年的好运气!!!
LCCC 2018 Spring Festival April 28, 2018.
承先啟後,繼往開來 Rise Up and Move Forward
第十五课:在医院看病.
Review Final Chinese 2-Chapter 6~10-1
Chapter 5 Recursion.
高中英文第一冊 第六單元 重補修用.
L14哪里来?哪里去? Where to come? Where to go? 名字:________ Name:
Remember the five simple rules to be happy 快樂的五個簡單常規
Operation System(OS).
Guide to a successful PowerPoint design – simple is best
The story about the tiny frogs….
中国科学技术大学计算机系 陈香兰 Fall 2013 第三讲 线程 中国科学技术大学计算机系 陈香兰 Fall 2013.
Common Qs Regarding Earnings
关联词 Writing.
True friendship is like sound health;
安全状态的例子 例:假定系统有三个进程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时刻系统时安全的。这时存在一个安全序列
Philosophy of Life.
高考应试作文写作训练 5. 正反观点对比.
Remember the five simple rules to be happy 快樂的五個簡單常規
Remember the five simple rules to be happy 快樂的五個簡單常規
Distance Vector vs Link State
李元金 计算机与信息工程学院 第 10讲 处理机调度与死锁(4) 李元金 计算机与信息工程学院 1/
Chapter 10 Mobile IP TCP/IP Protocol Suite
Remember the five simple rules to be happy 快樂的五個簡單常規
CHAPTER 6 Concurrency:deadlock And Starvation
严肃游戏设计—— Lab-Adventure
為什麼要考國中教育會考 學生:了解自己的學力水準,並為下一學習階段作準備。
资源分配与调度 第5章 资源分配与调度.
8Click.
Distance Vector vs Link State Routing Protocols
怎樣把同一評估 給與在不同班級的學生 How to administer the Same assessment to students from Different classes and groups.
Operating System Software School of SCU
8 Click.
Race Conditions and Semaphore
肉肉学语 周末特别版 By Hero.
句子成分的省略(3).
以分为镜知对错 以卷为鉴晓得失 —邯郸市一模得与失
Train Track and Children
中正大學,資工系,作業系統實驗室 陽春副教授 羅習五
陳情表之外     with 三仁 三樂 歐陽宜璋製於 /10/23.
When using opening and closing presentation slides, use the masterbrand logo at the correct size and in the right position. This slide meets both needs.
How do you make a banana milk shake?
Presentation transcript:

Deadlocks P0 P1 Example System has 2 tape drives. P1 and P2 each hold one tape drive and each needs another one. semaphores A and B, initialized to 1 P0 P1 wait (A); wait(B) wait (B); wait(A)

Bridge Crossing Example Honk! Each segment of road can be viewed as a resource Car must own the segment under them Must acquire segment that they are moving into For bridge: must acquire both halves Traffic only in one direction at a time Problem occurs when two cars in opposite directions on bridge: each acquires one segment and needs next If a deadlock occurs, it can be resolved if one car backs up (preempt resources and rollback) Several cars may have to be backed up Starvation is possible East-going traffic really fast  no one goes west

Train Example (Wormhole-Routed Network) Circular dependency (Deadlock!) Each train wants to turn right Blocked by other trains Similar problem to multiprocessor networks Fix? Imagine grid extends in all four directions Force ordering of channels (tracks) Protocol: Always go east-west first, then north-south Called “dimension ordering” (X then Y) Disallowed By Rule

Five chopsticks/Five lawyers (really cheap restaurant) Free-for all: Lawyer will grab any one they can Need two chopsticks to eat What if all grab at same time? Deadlock! How to fix deadlock? Make one of them give up a chopstick (Hah!) Eventually everyone will get chance to eat How to prevent deadlock? Never let lawyer take last chopstick if no hungry lawyer has two chopsticks afterwards

死锁不仅与系统拥有的资源数量有关,而且与资源分配策略,进程对资源的使用要求以及并发进程的推进顺序有关。 死锁产生的四个必要条件: (1)互斥条件(Mutual exclusion):进程互斥使用资源。 (2)部分分配条件(Hold and wait):申请新资源时不释放已占有资源。 (3)不剥夺条件(No preemption):一个进程不能抢夺其他进程占有的资源。 (4)环路条件(Circular wait):存在一组进程循环等待资源。

示例 Honk! Disallowed By Rule

如何避免死锁 死锁的预防 (Deadlock Prevention) 死锁的避免 (Deadlock Avoidance) 死锁的检测与恢复 (Deadlock Detection) 允许进入死锁状态 检测死锁 恢复策略

系统资源分配模型 V,节点集合,分为两类: 资源申请边:request edge – directed edge P1  Rj P = {P1, P2, …, Pn}, the set consisting of all the processes in the system. R = {R1, R2, …, Rm}, the set consisting of all resource types in the system. Each resource type Ri has Wi instances 资源申请边:request edge – directed edge P1  Rj 资源分配边:assignment edge – directed edge Rj  Pi

资源分配图 Process Resource Type with 4 instances Pi requests instance of Rj Pi is holding an instance of Rj Pi Rj Pi Rj

Resource Allocation Graph Examples Recall: request edge – directed edge T1  Rj assignment edge – directed edge Rj  Ti P1 P2 P3 R1 R2 R3 R4 Simple Resource Allocation Graph P1 P2 P3 R1 R2 R3 R4 Allocation Graph P1 P2 p3 R2 R1 P4 Allocation Graph

不安全的状态图

当且仅当该状态的进程-资源分配图是不可完全简化的。该充分条件称为死锁定理。 死锁判断: 如果图没有环,那么不会有死锁 如果图有环 如果每一种资源类型只有一个实例,那么死锁发生 如果一种资源类型有多个实例,可能死锁 系统为死锁状态的充分条件: 当且仅当该状态的进程-资源分配图是不可完全简化的。该充分条件称为死锁定理。

资源分配图化简: 1)找一个非孤立点进程结点且只有分配边,去掉分配边,将其变为孤立结点。 2)再把相应的资源分配给一个等待该资源的进程,即将某进程的申请边变为分配边。 如果进程-资源分配图中有环路,且涉及的资源类中有多个资源,则环路的存在只是产生死锁的必要条件而不是充分条件。 如果能在进程-资源分配图中消去此进程的所有请求边和分配边,成为孤立结点。经一系列简化,使所有进程成为孤立结点,则该图是可完全简化的;否则则称该图是不可完全简化的。

操作系统如何对待死锁 Allow system to enter deadlock and then recover Requires deadlock detection algorithm Some technique for forcibly preempting resources and/or terminating tasks Ensure that system will never enter a deadlock Need to monitor all lock acquisitions Selectively deny those that might lead to deadlock Ignore the problem and pretend that deadlocks never occur in the system Used by most operating systems, including UNIX

死锁发生后的处理: 1)立即结束所有进程的执行,并重新启动操作系统。方法简单,但以前工作全部作废,损失可能很大。 2)撤销陷于死锁的所有进程,解除死锁继续运行。 3)逐个撤销陷于死锁的进程,回收其资源,直至死锁解除。 4)剥夺陷于死锁的进程占用的资源,但并不撤销它, 直至死锁解除。 5)根据系统保存的checkpoint,让所有进程回退,直到足以解除死锁。 6)当检测到死锁时,如果存在某些未卷入死锁的进程,而这些进程随着建立一些新的抑制进程能执行到结束,则它们可能释放足够的资源来解除死锁。

死锁的预防(Prevention) 破坏第一个条件:使资源可同时访问而不是互斥使用,这是个简单的办法,磁盘可用这种办法管理,但有许多资源往往是不能同时访问,所以这种做法许多场合行不通。 破坏第三个条件:采用剥夺式调度方法可破坏第三个条件,但只适用于对主存资源和处理器资源的分配,当进程在申请资源未获准许的情况下,如果主动释放资源(一种剥夺式),然后才去等待,以后再一起向系统提出申请,也能防止死锁。 破坏第二个条件或第四个条件:种种死锁防止办法施加于资源的限制条件太严格,会造成资源利用率和吞吐率低。两种比较实用的死锁防止方法,它们能破坏第二个条件或第四个条件: 执行前一次申请全部资源 没有占有资源时才能分配资源

预防措施 (1)静态分配:一个进程必须在执行前就申请它所要的全部资源,并且直到它所要的资源都得到满足后才开始执行。 (2)层次分配策略:资源被分成多个层次,当进程得到某一层的一个资源后,它只能再申请较高层次的资源。当进程要释放某层的一个资源时,必须先释放占有的较高层次的资源。当进程得到某一层的一个资源后,它想申请该层的另一个资源时,必须先释放该层中的已占资源。 (3)层次分配策略的变种按序分配策略:把系统的所有资源排一个顺序,例如,系统若共有n个进程,共有m个资源,用ri表示第i个资源,于是这m个资源是:r1,r2……,rm。规定如果进程不得在占用资源ri(1≤i≤m)后再申请rj(j<i)。不难证明,按这种策略分配资源时系统不会发生死锁。

示例 Honk! Disallowed By Rule

死锁的避免 (Avoidance) 每次进行资源分配时,通过判断系统状态来决定这次分配后,是否仍存在不安全状态,否则不予分配。 每个进程声明其所需每种资源的最大数目 动态检查当前资源分配状态 资源分配状态取决于当前可用资源,已分配资源,以及进程声明所需最大资源数

Safe State安全状态 如果系统能按某个顺序为每个进程分配资源(不超过其最大值)并能避免死锁,那么系统状态就是安全的。 如果存在一个安全序列,那么系统处于安全态, 如果一个系统处于安全状态  就没有死锁 如果一个系统不是处于安全状态  就有可能死锁 避免:确保系统永远不会进入死锁状态

当前状态是安全状态 if: 如果每个哲学家需要 k支筷子? : 桌上剩余筷子多于一支 桌上剩余一支筷子但随后会有人释放筷子 …

银行家算法:银行家拥有一笔周转资金,客户要求分期贷款,如果客户能够得到各期贷款,就一定能够归还贷款,否则就一定不能归还贷款,银行家应谨慎的贷款,防止出现坏帐。 采用单种资源银行家算法避免死锁:操作系统(银行家)、操作系统管理的资源(周转资金)、进程(要求贷款的客户)。

(1)对每个请求进行检查,是否会导致不安全状态。若是,则不满足该请求;否则便满足。 (2)检查状态是否安全的方法是看他是否有足够的资源满足一个距最大需求最近的客户,如此反复下去。如果所有投资最终都被收回,则该状态是安全的,最初的请求可以批准。 (3)4个客户每个都有一个贷款额度: (4)一个状态被称为是安全的:条件是存在一个状态序列能够使所有的客户均得到其所有的贷款。 (5)图示状态是安全的,以使Marvin运行结束,释放所有的4个单位资金。这样下去便可满足Suzanne或Barbara的请求。 (6)如果所有客户忽然都申请,希望得到最大贷款额,而银行家无法满足其中任何一个要求,则发生死锁。

多种资源的银行家算法: 总的资源E、已分配资源P、剩余资源A。 3. 重复以上两步,直到所有进程都标记为结束,则状态是安全的,否则将发生死锁。

银行家算法的基本思想: 1. 系统中的所有进程进入进程集合, 2. 在安全状态下系统收到进程的资源请求后,先把资源试探性分配给它。 3. 系统用剩下的可用资源和进程集合中其他进程还要的资源数作比较,在进程集合中找到剩余资源能满足最大需求量的进程,从而,保证这个进程运行完毕并归还全部资源。 4. 把这个进程从集合中去掉, 系统的剩余资源更多了,反复执行上述步骤。 5. 最后,检查进程集合,若为空表明本次申请可行,系统处于安全状态,可实施本次分配;否则,有进程执行不完,系统处于不安全状态,本次资源分配暂不实施,让申请进程等待。

银行家算法中的数据结构 资源向量 Resource 可利用资源向量Available 最大需求矩阵Claim 是一个含有m个元素,其中的每一个元素代表一类可利用的资源数目,其初值是系统中所配置的该类全部可用资源数目。如果Available[j]=k, 表示系统中现有Rj类资源k个。 最大需求矩阵Claim 是一个含有nm的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Claim(i,j)=k, 表示进程i需要Rj类资源的最大数目为k。

分配矩阵Allocated 是一个含有nm的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果Allocation(i,j)=k, 表示进程i当前已分得Rj类资源k个。 需求矩阵Request 是一个含有nm的矩阵,用以表示每一个进程尚需的各类资源数。如果Need(i,j)=k, 表示进程i还需要Rj类资源k个,方能完成其任务。 Request(i,j)= Claim(i,j)-Allocated(i,j)

银行家算法的程序: type state= record /*全局数据结构*/ resource,available:array[0…m-1]of integer; claim,allocated:array[0…n-1,0…m-1]of integer; end /*资源分配算法*/

if alloc[i,. ]+request[. ]>claim[i,. ] then <error> / else if request[*]>available[*] then <suspend process> else /*模拟分配*/ <define newstate by: allocated[i,*]:=allocated[i,*]+request[*] available[*]:=available[*]-request[*]> end; if safe(newstate) then <carry out allocation> <restore original state> <suspend process> end

function safe(state:s):boolean; /*banker’s algorithm*/ var currentavail:array{0…m-1} of integer; rest:set of process; begin currentavail:=available; rest:={all process}; possible:=true; while possible do find a Pk in rest such that claim[k,*]-alloc[k,*]≤currentavail; if found then currentavail:=currentavail+allocation[k,*]; rest:=rest-[Pk]; else possible:=false; end end; safe:=(rest=null) end.

银行家算法的简短说明: 1. 申请量超过最大需求量时出错,否则转2; 2. 申请量超过目前系统拥有的可分配量时,挂起进程等待,否则转3; 3. 系统对Pi进程请求资源作试探性分配、执行: allocated[i,*]:=allocated[i,*]+request[*] available[*]:=available[*]-request[*] 4. 执行安全性测试算法,如果安全状态则承认试分配,否则抛弃试分配,进程Pi等待。

示例 假定系统中有五个进程{P0、P1、P2、P3、P4}和 三种类型的资源{A,B,C},每一种资源的数量 分别为10、5、7,在T0时刻的资源分配情况如图 请找出该表中T0时刻以后存在的安全序列(至少2种) 资源情况 Max A B C Allocation A B C Need A B C Available A B C 进程 P0 P1 P2 P3 P4 7 5 3 0 1 0 7 4 3 3 3 2 3 2 2 2 0 0 1 2 2 9 0 2 3 0 2 6 0 0 2 2 2 2 1 1 0 1 1 4 3 3 0 0 2 4 3 1

假定系统有进程集合(Po,Pl,P2,P3,P4),资源集合为(A,B,C),资源数量分别为(10,8,7)。假定某时刻系统的状态如表所示。   Allocation MAX Available A B C PO 2 7 3 1 P1 P2 9 P3 P4 4

死锁的检测和解除 允许死锁发生,操作系统不断监视系统进展情况,判断死锁是否发生。 一旦死锁发生则采取专门的措施,解除死锁并以最小的代价恢复操作系统运行。 检测时机:当进程等待时检测死锁(系统开销大);定时检测;系统资源利用率下降时检测死锁。 死锁检测算法: (1)每个进程和资源指定唯一编号; (2)设置一张资源分配表; (3)记录各进程与其占用资源之间的关系; (4)设置一张进程等待表; (5)记录各进程与要申请资源之间的关系。

资源分配图 和 等待图 Resource-Allocation Graph Corresponding wait-for graph

一个OS有20个进程,竞争使用65个同类资源,申请方式是逐个进行的,一旦某个进程获得它所需要的全部资源,则立即归还所有资源。每个进程最多使用三个资源。若仅考虑这类资源,该系统有无可能产生死锁,为什么? 在某系统中,三个进程共享四台同类型的设备资源,这些资源一次只能一台地为进程服务和释放,每个进程最多需要二台设备资源,试问在系统中是否会产生死锁? 某系统中有n个进程和m台打印机,系统约定:打印机只能一台一台地申请、一台一台地释放,每个进程需要同时使用的打印机台数不超过m。如果n个进程同时使用打印机的总数小于m+n,试讨论,该系统可能发生死锁吗?并简述理由。 仅涉及一个进程的死锁有可能存在吗?为什么?