资源图与死锁定理的灵活运用

@(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活着。

资源图与死锁定理的灵活运用相关推荐

  1. 死锁定理与资源分配图化简法

    一 .了解进程资源图 二 .化简资源分配图 方法步骤 第一步:先看系统还剩下多少资源没分配,再看有哪些进程是不阻塞("不阻塞"即:系统有足够的空闲资源分配给它)的 第二步:把不阻塞 ...

  2. [操作系统] 试化简图2中的资源分配图,并利用死锁定理给出相应的结论。

    问题描述: 化简图2中的资源分配图,并利用死锁定理给出相应的结论. 答案: 化简后的资源分配图如下: 结论:化简后的资源分配图,存在一个环路,且每类资源只有一个.P1向r4申请一个资源,但r4的资源被 ...

  3. 进程资源图,化简,阻塞(非阻塞),死锁

    如果一个图可完全简化,则不会产生死锁:如果一个图不可完全简化(即:图中还有"边"存在),则会产生死锁.这就是"死锁定理". 有边就是死锁 例题一 在如下所示的进 ...

  4. 进程资源图理解与化简

    一 了解进程资源图 二 化简资源分配图 方法步骤 第一步:先看系统还剩下多少资源没分配,再看有哪些进程是不阻塞("不阻塞"即:系统有足够的空闲资源分配给它)的 第二步:把不阻塞的进 ...

  5. 【中级软考—软件设计师】2操作系统2.5进程资源图【**】:2.5.1进程资源图

    考察: 主要考察节点的情况,是否会产生死锁 了解图示中的一些含义 知道在资源分配当中如何体现死锁这样的一个描述 进程资源图 进程资源图是表示资源调度的一种方式 进程资源图是某一时刻它的静态状况 进程资 ...

  6. 关于利用死锁定理关于化简资源分配图(RAG)算法中“两不点”备忘

    书读百遍其义自见: 假设某个资源分配图中存在一个进程Pi,此刻Pi是非封锁进程(既不阻塞,又不独立),对非封锁进程Pi的化简即删除资源分配图中与Pi连结的所有有向边,使Pi变成孤立结点,重复上述过程直 ...

  7. 死锁产生原因-竞争资源引起进程死锁

    当系统中供多个进程共享的资源如打印机.公用队列的等,其数目不足以满足诸进程的需要时,会引起诸进程对资源的竞争而产生死锁.

  8. oracle数据库进程不释放,Oracle数据库案例整理-Oracle系统运行时故障-无法释放已经结束的进程资源导致进程死锁...

    1.1       现象描述 查询数据库执行SQL语句的进程状态,发现执行SQL语句进程死锁,系统显示如下信息: SQL> select address,sql_text,piece,SECON ...

  9. 绘制森林资源图的工具介绍

    有人说:一个人从1岁活到80岁很平凡,但如果从80岁倒着活,那么一半以上的人都可能不凡. 生活没有捷径,我们踩过的坑都成为了生活的经验,这些经验越早知道,你要走的弯路就会越少. 森林资源越来越多地被视 ...

最新文章

  1. 【调试基础】Part 3 Window操作系统
  2. tensorflow 入门实例(二)
  3. 大批量执行webservice出现“无法连接远程服务器”解决方案
  4. 逻辑代数01律的理解_零基础学习计算机原理:布尔逻辑和逻辑门
  5. http模拟登陆及发请求
  6. Promise 的 9 个提示
  7. LVS详解(三)——LVS算法简介
  8. 查找算法——插值查找
  9. 方面和服务,差别大吗?
  10. YS13-3荧光管时钟设计
  11. cad修改快捷键_CAD入门学习技巧:CAD软件中的CAD快捷键的分类
  12. js new Date() 当前时间/指定时间转换为时间戳
  13. 【SaltStack官方版】—— EventsReactor系统—BEACONS
  14. 超强悍抓包工具和万能视频下载工具
  15. 从零破解一款轻量级滑动验证码
  16. 基础算法(三) --- 轮询
  17. wt32-eth01 arduino
  18. 什么是CRUD( What is CRUD)?
  19. 什么是无线产品?无线产品需要做哪些认证测试?
  20. 仿淘宝Android实现底部导航栏图标溢出效果-clipChildren属性

热门文章

  1. DOM和Events
  2. python 移除列表中的值 list index out of range_重拾Python(二)之列表
  3. python linkedlist,LinkedList在python中的实现
  4. tinyint数据类型php筛选时怎么判断_PHP从入门到精通(三)PHP语言基础
  5. mysql的简单实用_MySQL的简单实用 手把手教学
  6. python 计算时间、日期差值类
  7. 华中师范大学邮箱matlab,正版软件管理与服务平台(华中师范大学)
  8. Java中null和浮点数相乘_jvm规范之浮点数 - 你知道吗,有个数字它和自身不相等...
  9. Ubuntu18.04系统中python3.7安装MultiNEAT库
  10. Android通知频道,通知点