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

操作系统概念第七章部分作业题答案题目一:考虑下图所示的交通死锁的情况:(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分配资源

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • dataset数据集有哪些_数据集类型

    dataset数据集有哪些_数据集类型datasets数据集​ 分享一些学习到的知识​ sklearn的数据集库datasets提供很多不同的数据集,主要包含以下几大类:玩具数据集真实世界中的数据集样本生成器样本图片svmlight或libsvm格式的数据从openml.org下载的数据从外部加载的数据用的比较多的就是1和3,这里进行主要介绍,其他的会进行简单介绍,但是不建议使用。玩具数据集​ scikit-learn内置有一些小型标准数据集,不需要从某个外部网站下载任何文件,用

  • 数据库同步有哪些方式?【怎么保障目标和源数据一致性】「建议收藏」

    数据库同步有哪些方式?【怎么保障目标和源数据一致性】「建议收藏」数据库同步有3大难题:1是如何保障目标和源数据一致性;2是异构数据库如何做数据类型转换,导致数据同步失败的原因常常是因为数据类型不一样;3是在数据越实时越有价值的背景下,同步过程中能否做到实时同步。

    2022年10月16日
  • Java JDK8下载 (jdk-8u251-windows-x64和jdk-8u271-linux-x64.tar)

    Java JDK8下载 (jdk-8u251-windows-x64和jdk-8u271-linux-x64.tar)jdk-8u251-windows-x64和jdk-8u271-linux-x64.tar链接:https://pan.baidu.com/s/1gci6aSIFhEhjY8F48qH39Q提取码:l289复制这段内容后打开百度网盘手机App,操作更方便哦JDK国国内官网下载地址:https://www.oracle.com/cn/java/technologies/javase-downloads.htmlJDK8国内官网下载地址:https://www.oracle.com/cn/j

  • 关于心跳ajax请求pending状态(被挂起),stalled时间过长的问题。涉及tcp连接异常。[通俗易懂]

    关于心跳ajax请求pending状态(被挂起),stalled时间过长的问题。涉及tcp连接异常。[通俗易懂]环境:景安快云服务器(听说很垃圾,但是公司买的,我也刚来),CentOS6.8x86_64,Apache,MySQL5.1,PHP5.3.问题:现公司有一个php系统,需要重复向后台发送ajax

  • vue toast提示_vue弹出页面

    vue toast提示_vue弹出页面创建一个message.vue组件<template><divclass=”wrap”v-if=”showWrap”:class=”showContent?’fadein’:’fadeout'”><i:class=”iconState?’success’:’wrong'”></i>…

  • 刷完 900 多道算法题的首次总结:LeetCode 应该怎么刷?「建议收藏」

    刷完 900 多道算法题的首次总结:LeetCode 应该怎么刷?「建议收藏」LeetCode算法题应该怎么刷?算法题学习路线?怎么组队刷题?有没有算法刷题群?你是怎么入门LeetCode的?刷完1000道算法题是什么体验?大家都是怎么刷题的?新手小白开始刷算法题应该怎么刷,注意什么?刷LeetCode总是觉得太难怎么办?刷算法题有没有书籍推荐?该按照什么顺序刷算法题?LeetCode怎么看别人的题解?有哪些好的算法题博主推荐?

发表回复

您的电子邮箱地址不会被公开。

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