手把手教你---进程资源分配


一 了解进程资源图


Markdown编辑器用的还不是太熟,表格中插入图片这事还没学会,纠结着在Word中总结了下,然后截个图放在下面供大家参考:


二 化简资源分配图


方法步骤

  • 第一步:先看系统还剩下多少资源没分配,再看有哪些进程是不阻塞(“不阻塞”即:系统有足够的空闲资源分配给它)的
  • 第二步:把不阻塞的进程的所有边都去掉,形成一个孤立的点,再把系统分配给这个进程的资源回收回来
  • 第三步:看剩下的进程有哪些是不阻塞的,然后又把它们逐个变成孤立的点。
  • 第四步:最后,所有的资源和进程都变成孤立的点。这样的图就叫做“可完全简化”。

如果一个图可完全简化,则不会产生死锁;如果一个图不可完全简化(即:图中还有“边”存在),则会产生死锁。这就是“死锁定理”。

实例

  • 第一步:先看R1资源,它有三个箭头是向外的,因此它一共给进程分配了3个资源,此时,R1没有空闲的资源剩余。
  • 第二步:再看R2资源,它有一个箭头是向外的,因此它一共给进程分配了1个资源,此时,R2还剩余一个空闲的资源没分配。
  • 第三步:看完资源,再来看进程,先看进程P2,它只申请一个R1资源,但此时R1资源已经用光了,所以,进程P2进入阻塞状态,因此,进程P2暂时不能化成孤立的点。
  • 第四步:再看进程P1,它只申请一个R2资源,此时,系统还剩余一个R2资源没分配,因此,可以满足P1的申请。这样,进程P1便得到了它的全部所需资源,所以它不会进入阻塞状态,可以一直运行,等它运行完后,我们再把它的所有的资源释放。相当于:可以把P1的所有的边去掉,变成一个孤立的点,如下图所示:
  • 第五步:进程P1运行完后,释放其所占有的资源(2个R1资源和1个R2资源),系统回收这些资源后,空闲的资源便变成2个R1资源和1个R2资源,由于进程P2一直在申请一个R1资源,所以此时,系统能满足它的申请。这样,进程P2便得到了它的全部所需资源,所以它不会进入阻塞状态,可以一直运行,等它运行完后,我们再把它的所有的资源释放。相当于:可以把P2的所有的边都去掉,化成一个孤立的点,变成下图:

由于这个资源分配图可完全简化,因此,不会产生死锁。 而如果资源分配图中的点,最终不能够化成孤立的点,则进程资源图不能够完全简化,从而会发生死锁。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏瓜大三哥

HLS Lesson9-c/c++ testbench书写

目的: l验证C函数的正确性 l提高效率 1.main()函数返回0则表明结果是正确的,如果是非0则表明结果是不正确的。 2.输入激励(stimulus) 输入...

24910
来自专栏电光石火

mysqldump: Got error: 2003: Can't connect to MySQL server on '127.0.0.1' (10060)

今天在用批处理进行MySQL自动备份的过程中遇到一个问题,错误提示:mysqldump: Got error: 2003: Can't connect to m...

2695
来自专栏惨绿少年

route命令实例练习

第1章 命令配置 虚拟服务器 网卡配置信息 虚拟网卡名称 虚拟网卡模式 服务器01 eth1 10.0.0.1...

2040
来自专栏一枝花算不算浪漫

[常见问题]在Linux下执行Redis命令不起作用.

3228
来自专栏丑胖侠

Linux与windows之间文件传输

Linux系统之间传输文件有很多种方法,此篇博客介绍其中的两种。也是在开发过程中经常用到的。 一般情况下,个人经常用到rz或sz命令来上传下载文件。 rz sz...

2979
来自专栏WindCoder

Git命令小记

[git] warning: LF will be replaced by CRLF | fatal: CRLF would be replaced by LF

681
来自专栏Java学习123

TCP和Http的区别! 我都搞懂了,你就别迷糊了!

3276
来自专栏后端技术探索

初识nginx基础篇-日志管理和切割

Nginx日志主要分为两种,访问日志和错误日志。两种日志可以在http和server模块中配置,nginx有一个非常灵活的日志记录模式。每个级别的...

762
来自专栏Python、Flask、Django

我博客图片存在哪里的?

1354
来自专栏IT可乐

Maven详解(六)------ 生命周期

1、什么是 生命周期?   Maven 强大的原因是有一个十分完善的生命周期,生命周期可以理解为项目构建步骤的集合,它定义了各个构建环节的执行顺序,有了这个顺序...

1998

扫码关注云+社区