操作系统概念第七章部分作业题答案

操作系统概念第七章部分作业题答案题目一:考虑下图所示的交通死锁的情况:(1)请说明这个实例中死锁的4个必要条件(2)请设计一条简单的规则来避免产生死锁解答:(1):死锁的四个必要条件是:①互斥:至少一个资源非共享,即一次只能有一个进程使用②占有并等待:一个进程至少占有一个资源,并等待另一个资源,而该资源被其他进程所占有③非抢占:资源非抢占,只有当前进程完成任务才能被释放④循环等待:有一组等待进城P0…P…

大家好,又见面了,我是你们的朋友全栈君。

题目一:

考虑下图所示的交通死锁的情况:
在这里插入图片描述
(1)请说明这个实例中死锁的 4 个必要条件
(2)请设计一条简单的规则来避免产生死锁
解答:
(1):
死锁的四个必要条件是:
①互斥:至少一个资源非共享,即一次只能有一个进程使用
②占有并等待:一个进程至少占有一个资源,并等待另一个资源,而该资源被其他进程所占有
③非抢占:资源非抢占,只有当前进程完成任务才能被释放
④循环等待:有一组等待进城P0…Pn,P0等待的资源被P1所占有…Pn所等待的资源被P0所占有
依次对应图中的:
①每个路口只能在一个时间点通过一辆车
②一辆车在一个时间点通过一个路口的时候,其他车不允许同时通过
③只有当一辆车完全通过一个路口的时候,下一辆车才能使用这个路口
④左上路口的车在等待左下路口的车通过;左下路口的车在等待右下路口的车通过;右下路口的车在等待右上路口的车通过;右上路口的车在等待左上路口的车通过
(2):
在四个路口均设立红绿信号灯,要求在前30秒仅允许横向车辆通过,后30秒仅允许纵向车辆通过,然后以此顺序进行轮转

题目二:

考虑如下系统:该系统包含 3 个进程,共享同一类型的资源 4 个,每一个进程最多需要 2 个该类型的资源,试说明为什么该系统不会发生死锁
解答:
不会. 4份资源, 3个进程, 每个进程只要2份资源, 那么无论怎样, 总有一个进程可以得到2份资源, 这样就不需要等待别的进程释放资源而能顺利地执行, 然后就会释放这2份资源, 接下来后面2个进程就更可以顺利执行了.
这类问题的计算方法是: a份资源, b个进程, 每个进程最多要c份资源.
我们能够处理的极限情况是,有一个进程被分配了c份资源,而其余的被分配了c-1份资源(类似于抽屉原理),这样总能有一个进程结束,释放资源。
如果不是上面这种情况,那么就有可能有一个进程被分配了c份资源,有一个被分配了c-2份资源,其余的被分配了c-1份资源,这时看起来不会发生死锁,但是不要忘了,资源的分配是随机的,所以,更多的情况会是所有的进程都被分配了c-1份资源,此时所有进程就陷入了某种顺序的循环等待,造成死锁。
由此我们可以得到公式a需要≥c+(b-1)*(c-1)=c+bc-c-b+1=b(c-1)+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)请问该系统中存在死锁吗?并请给出解释。;
解答:
(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),是否应该给该进程立即分配资源?
解答:
0 0 0 0
0 7 5 0
1 0 0 2
0 0 2 0
0 6 4 2
(1):
Need=Max-Allocation,即:
在这里插入图片描述

(2):
我们可以测试一下,能不能计算出一个安全序列。从P0开始,
对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,给不起,跳过
对P1,可以给,然后收回,此时Available={3,14,11,8}
对P4,可以给,然后收回,此时Avialable={3,14,12,12}
最终,我们可以得到一个安全序列{P0,P2,P3,P1,P4}
尽管可以有一个安全序列,系统是安全的,但不能立即给进程P1分配资源

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159068.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 完整全面的Java资源库—–转载[通俗易懂]

    完整全面的Java资源库—–转载[通俗易懂]构建这里搜集了用来构建应用程序的工具。ApacheMaven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于ApacheAnt。后者采用了一种过程化的方式进行配置,所以维护起来相当困难。Gradle:Gradle采用增量构建。Gradle通过Groovy编程而不是传统的XML声明进行配置。Gradle可以很好地配合Maven…

    2022年7月8日
    31
  • vr体验心得_在我们新的VR学习体验中逃脱女巫的小屋

    vr体验心得_在我们新的VR学习体验中逃脱女巫的小屋vr体验心得OurbrandnewprojectforUnityLearnisanimmersiveVRescaperoom.ExplorethepotentialofVRinUnityandcreateyourownexperienceinasimpleprototypeenvironment.Letusintroduceyou…

    2022年10月1日
    3
  • Mac 热键大全

    屏幕捕捉快捷键动作……………………….保存到…………-快捷键全屏捕捉……………………桌面(.PDF文件)…..

    2021年12月24日
    48
  • C++STL容器总结[通俗易懂]

    持续更新中!!!各大容器的特点:1.可以用下标访问的容器有(既可以插入也可以赋值):vector、deque、map;特别要注意一下,vector和deque如果没有预先指定大小,是不能用下标法插入元素的…

    2022年4月4日
    40
  • 让你彻底理解浅拷贝和深拷贝的区别是什么_怎么让文件无法拷贝

    让你彻底理解浅拷贝和深拷贝的区别是什么_怎么让文件无法拷贝在写js的时候经常会遇到复制对象,在复制对象的过程中往往会出现新对象改变原对象等等的一些问题,今天特意梳理一下,希望能帮助到遇到这些问题的开发人员。什么是浅拷贝,深拷贝以及和他们之间的区别赋值浅拷贝深拷贝在开始梳理之前先说一下值类型和引用类型:值类型(基本类型):字符串(string)、数值(number)、布尔值(boolean)、undefined、null;引用类型:对象(Object)、数组(Array)、函数(Function);1、什么是浅拷贝,深拷贝以及和他们之间的区别

    2022年10月1日
    2
  • jdk阅读xml文件

    jdk阅读xml文件

    2022年1月3日
    160

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号