操作系统 第七章作业

【题目一】

考虑下图所示的交通死锁的情况:
在这里插入图片描述

(1)请说明这个实例中死锁的 4 个必要条件
(2)请设计一条简单的规则来避免产生死锁

答 : \color{red}{答:}

(1)

      ①互斥,每个十字路口都处于非共享状态,每一个十字路口一次都只能允许一辆车通行

      ②占有并等待,每一个十字路口都有车辆,此时其他车辆不允许通行,但是车辆要是想要前进,必须等下一次十字路口空闲

      ③非抢占,十字路口不能被抢占,智能在当前车辆走后,下一车辆才能进入

      ④循环等待,还没有进入十字路口的车辆一直在等待十字路口空闲,但是每个十字路口又被车辆占有,要想前进只能等下一个十字路口空闲

(2) 设置红绿灯。

      在每个路口都设置一个红绿灯。绿灯亮起,允许所有纵向车辆通行,红灯亮起,允许所有横向车辆通行。

【题目二】

考虑如下系统:该系统包含 3 个进程,共享同一类型的资源 4 个,每一个进程最多需要 2 个该类型的资源,试说明为什么该系统不会发生死锁。

答 : \color{red}{答:}

      不会发生死锁。一共有4份资源,3个进程,每个进程最多需要2个资源。所以无论如何总有一个进程可以得到两份资源。得到之后,就可以顺利执行,然后再释放资源,接下来的2个进程就可以顺利执行。所以不会发生死锁。

      假设,我们有a份资源,b个进程,每个进程最多需要c份资源。

      我们假设最差的情况,每个进程平均分配资源。每个进程分配c-1份资源,此时所占有的资源数也就是b*(c-1).但是若此时还会有一份多余资源,就不会发生死锁。所以总的资源数a>=b*(c-1)+1时,就不会造成死锁

【题目三】

现有单实例资源系统:进程 P1 占有资源 R2,请求资源 R1;进程 P2 占有资源 R1,请求资源 R3 R4 R5;进程 P3 占有资源 R4,请求资源 R5;进程 P4 占有资源 R5,请求资源 R2;进程 P5 占有资源 R3,请求资源 R1;

(1)请画出对应的资源分配图和资源等待图;

(2)请问该系统中存在死锁吗?并请给出解释。

答 : \color{red}{答:}

(1)

在这里插入图片描述
在这里插入图片描述

(2)存在死锁

      因为每个资源只有单例,所以只要在资源分配图中存在环就会发生死锁。可以发现P1-R1-P2-R4-P3-R5-P4-R2-P1以及P2-R3-P5-R1-P2都构成了环,所以进程P1,P2,P3,P4循环等待构成了死锁,进程P2、P5也构成了死锁。

【题目四】

考虑系统的情况如下图所示,请依据银行家算法回答如下问题:

在这里插入图片描述

(1)请给出 Need 矩阵。
(2)该系统目前是否是安全的?
(3)如果 P1 请求资源 (0, 4, 2, 0),是否应该给该进程立即分配资源?
答:
(1)
在这里插入图片描述

(2) 我们可以试着计算一个安全序列

      对于P0,可以给,然后收回,此时Available={1,5,3,2}

      对于P1,给不起,跳过

      对于P2,可以给,然后收回,此时Available={2,8,8,6}

      对于P3,可以给,然后收回,此时Available={2,14,11,8}

      对于P4,可以给,然后收回,此时Available={2,14,12,12}

      对于P1,可以给,然后收回,此时Available={3,14,12,12}

最终,可以得到一个安全序列{P0,P2,P3,P4,P1},所以当前系统是安全的

(3) 如果 P1 请求资源 (0, 4, 2, 0),那么此时的Allocation矩阵贺Need矩阵,分别如下
在这里插入图片描述

此时我们试着求安全序列

      对于P0,可以给,然后收回,此时Available={2,1,1,2}

      对于P1,给不起,跳过

      对于P2,可以给,然后收回,此时Available={3,4,6,6}

      对于P3,可以给,然后收回,此时Available={3,10,9,8}

      对于P4,可以给,然后收回,此时Available={3,10,10,12}

      对于P1,可以给,然后收回,此时Available={3,14,12,12}

      最终,可以得到一个安全序列{P0,P2,P3,P4,P1},所以当前系统是安全的,但是还是不能立即给P1分配资源

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值