资源图与死锁定理的灵活运用
资源图与死锁定理的灵活运用
@(OS)
强调一下,死锁预防需要限制资源的请求顺序。
死锁避免需要限制资源的分配顺序。
越早下手处理死锁问题,对机器的性能影响越大。因此,Unix这种追求快的系统,这两种都不采用,而是用的死锁检测和解除。
资源分配图
通常分析描述死锁,可以用资源分配图。关于资源分配图,要仅仅抓住两点:
- 请求边
- 分配边
关键在找:空闲资源。如果空闲资源可以满足某个进程,这个进程就可以解脱了,把它摘除资源分配图,再看剩下的资源分配图,,策略相同。
特别要注意,不要手动限制进程请求资源的顺序,再考虑解脱。这是无意识间用了死锁预防的策略,不是我们说的死锁解除。也就是说,死锁预防根本不会出现死锁,那么检测死锁时还采用限制请求的顺序,就是两个知识点混淆的表现。
死锁定理
再看死锁定理:在资源分配图中,把分配的资源与进程连好,再看进程请求边。按照分配边分配好以后,剩余的资源就是空闲资源。此时再来分析进程Pi的请求边,如果空闲资源都能满足Pi的请求,也就意味着Pi可以从这个纠缠的图中得到解脱。删除Pi的所有相关的资源:已分配的+请求的。
再递归处理剩下的资源分配图。
举个例子:
某资源分配图。我们先用红色的标记分配边。那么剩余的黑色就是空闲资源。
就是说资源已经分配了一波,现在进程又来请求。比如看P1,请求R1,R2,两种资源空闲的都足够满足P1的需求,因此,可以把P1解放。
得到:
再考虑P2,空闲资源也可以满足。于是:
表示这是可以全部解放的,或者用专业一些的名刺激:可完全简化的。如果资源分配图不是可完全简化的,则就满足死锁产生的条件了。
解除死锁的方法有:
- 资源剥夺
- 撤销进程
- 进程回退
这种可正面解决的问题是比较简单的,稍微复杂些的是,反向使用,比如已经知道产生了死锁,问至少几个进程。
看一道习题。
(2016.25)系统中有三个不同的临界资源R1,R2,R3,被4个进程p1,p2,p3,p4共享。各进程对资源的需求为:p1申请R1和R2和R3,p3申请R2和R3,p3申请R1和R3,p4申请R2。若系统出现死锁,则处于死锁状态的进程数至少是:C
A. 1 B. 2 C. 3 D. 4
分析:这一道题目很有意思。先画资源分配图。
现在问题将很棘手,怎么分析?
一定要想到从请求边和分配边入手。
这里没有进行分配,于是我们假设分配。
就是说把三种资源都分配出去,看最多可以让几个活,那么就可以知道最少有多少死进程了。
20161220 update:
更正之前的一点错误,上面这个分法,系统并没有死锁。因为P1解放以后R1,R2资源释放,P2,P3,都可以陆续释放,P4就更不用说了。所以这个分法不满足题干中,系统已经出现死锁的要求。
我们观察这种资源申请,可以看到的是不能让P1,P2,P3得到两个资源,否则,一定可以解脱其中之一,那么死锁就被打破了。
正确的满足已经出现死锁,且最多有多少进程可以活的分配图是:
而三个资源P1,P2,P3一人得到一个,则不会有一个进程活着:
这便是比较新颖的资源分配图的使用法。
总之,这个问题里,P1,P2,P3三个进程的申请具有对称性,所以总共需要思考的分配方案就是:
- 给其中一个两个资源全部满足它,推出:非死锁状态;
- P1,P2,P3一人一个资源 –死锁,无进程可活;
- P1,P2,P3只有两个得到资源,第三个资源给P4 –死锁状态,进程P4活着。
资源图与死锁定理的灵活运用相关推荐
- 死锁定理与资源分配图化简法
一 .了解进程资源图 二 .化简资源分配图 方法步骤 第一步:先看系统还剩下多少资源没分配,再看有哪些进程是不阻塞("不阻塞"即:系统有足够的空闲资源分配给它)的 第二步:把不阻塞 ...
- [操作系统] 试化简图2中的资源分配图,并利用死锁定理给出相应的结论。
问题描述: 化简图2中的资源分配图,并利用死锁定理给出相应的结论. 答案: 化简后的资源分配图如下: 结论:化简后的资源分配图,存在一个环路,且每类资源只有一个.P1向r4申请一个资源,但r4的资源被 ...
- 进程资源图,化简,阻塞(非阻塞),死锁
如果一个图可完全简化,则不会产生死锁:如果一个图不可完全简化(即:图中还有"边"存在),则会产生死锁.这就是"死锁定理". 有边就是死锁 例题一 在如下所示的进 ...
- 进程资源图理解与化简
一 了解进程资源图 二 化简资源分配图 方法步骤 第一步:先看系统还剩下多少资源没分配,再看有哪些进程是不阻塞("不阻塞"即:系统有足够的空闲资源分配给它)的 第二步:把不阻塞的进 ...
- 【中级软考—软件设计师】2操作系统2.5进程资源图【**】:2.5.1进程资源图
考察: 主要考察节点的情况,是否会产生死锁 了解图示中的一些含义 知道在资源分配当中如何体现死锁这样的一个描述 进程资源图 进程资源图是表示资源调度的一种方式 进程资源图是某一时刻它的静态状况 进程资 ...
- 关于利用死锁定理关于化简资源分配图(RAG)算法中“两不点”备忘
书读百遍其义自见: 假设某个资源分配图中存在一个进程Pi,此刻Pi是非封锁进程(既不阻塞,又不独立),对非封锁进程Pi的化简即删除资源分配图中与Pi连结的所有有向边,使Pi变成孤立结点,重复上述过程直 ...
- 死锁产生原因-竞争资源引起进程死锁
当系统中供多个进程共享的资源如打印机.公用队列的等,其数目不足以满足诸进程的需要时,会引起诸进程对资源的竞争而产生死锁.
- oracle数据库进程不释放,Oracle数据库案例整理-Oracle系统运行时故障-无法释放已经结束的进程资源导致进程死锁...
1.1 现象描述 查询数据库执行SQL语句的进程状态,发现执行SQL语句进程死锁,系统显示如下信息: SQL> select address,sql_text,piece,SECON ...
- 绘制森林资源图的工具介绍
有人说:一个人从1岁活到80岁很平凡,但如果从80岁倒着活,那么一半以上的人都可能不凡. 生活没有捷径,我们踩过的坑都成为了生活的经验,这些经验越早知道,你要走的弯路就会越少. 森林资源越来越多地被视 ...
最新文章
- 【调试基础】Part 3 Window操作系统
- tensorflow 入门实例(二)
- 大批量执行webservice出现“无法连接远程服务器”解决方案
- 逻辑代数01律的理解_零基础学习计算机原理:布尔逻辑和逻辑门
- http模拟登陆及发请求
- Promise 的 9 个提示
- LVS详解(三)——LVS算法简介
- 查找算法——插值查找
- 方面和服务,差别大吗?
- YS13-3荧光管时钟设计
- cad修改快捷键_CAD入门学习技巧:CAD软件中的CAD快捷键的分类
- js new Date() 当前时间/指定时间转换为时间戳
- 【SaltStack官方版】—— EventsReactor系统—BEACONS
- 超强悍抓包工具和万能视频下载工具
- 从零破解一款轻量级滑动验证码
- 基础算法(三) --- 轮询
- wt32-eth01 arduino
- 什么是CRUD( What is CRUD)?
- 什么是无线产品?无线产品需要做哪些认证测试?
- 仿淘宝Android实现底部导航栏图标溢出效果-clipChildren属性
热门文章
- DOM和Events
- python 移除列表中的值 list index out of range_重拾Python(二)之列表
- python linkedlist,LinkedList在python中的实现
- tinyint数据类型php筛选时怎么判断_PHP从入门到精通(三)PHP语言基础
- mysql的简单实用_MySQL的简单实用 手把手教学
- python 计算时间、日期差值类
- 华中师范大学邮箱matlab,正版软件管理与服务平台(华中师范大学)
- Java中null和浮点数相乘_jvm规范之浮点数 - 你知道吗,有个数字它和自身不相等...
- Ubuntu18.04系统中python3.7安装MultiNEAT库
- Android通知频道,通知点