计算机操作系统(慕课版)第四章课后题答案

news2025/1/11 7:04:55

一、简答题
1.什么是临界资源?什么是临界区?
临界资源:以互斥形式访问的资源;临界区:访问临界资源的代码。

2.同步机制应遵循的准则有哪些?
空闲让进;忙则等待;有限等待;让权等待。

3.为什么各进程对临界资源的访问必须互斥?
临界资源指的是每次只允许一个进程进行访问的软硬件资源,所以各进程对临界资源进行互斥访问。

4.如何保证各进程互斥地访问临界资源?
1)空闲让进 当临界资源处于空闲状态,允许一个请求进入临界区的进程立即进入临界区,从 而有效的利用资源;
2)忙则等待 已经有进程进入临界区时,意味着相应的临界资源正在被访问,所以其他准备进 入临界区的进程必须等待,来保证多进程互斥;
3)有限等待 对要求访问临界资源的进程,应该保证该进程能在有效的时间内进入临界区,防止死等;
4)让权等待 当进程不能进入临界区,应该立即释放处理机,防止进程忙等待。

5.何谓“忙等”?它有什么缺点?
忙等:指的是进程要访问的临界资源被其他进程占用,此进程没有自旋锁便处于自旋状态即忙等状态。
缺点:占用CPU资源、降低CPU效率。

6.试述采用Peterson算法实现临界区互斥的原理。
皮特森算法是双标志加一把锁。首先说自已要(flag i = true),但是先谦让把钥匙给别人(key = j),若是别人也想要(flag j = true),别人也谦让key = i,自己便可以访问临界资源。

7.哪些硬件方法可以解决进程互斥问题?描述它们的用法。
1)关中断:访问临界区时关闭中断。
2)TS(Test-and-Set):TS指令为每个临界区加一个布尔变量,每次进入临界区都必须使用TS指令测试变量。
3)swap指令:使用swap指令为每个进程设置一个局部变量key,使用swap指令交换key的值与临界资源锁的值,判断是否有进程正在访问。

8.如果用于进程同步的信号量的P、V操作不用原语实现,则会产生什么后果?举例说明。
会导致信号量混乱或陷入死锁。如使用记录型信号量进行P操作被中断,s-value已经小于零,但是没有阻塞队列。

9.AND信号量机制的基本思想是什么?它能解决什么问题?
AND信号量机制的基本思想:在PV操作时,把所有进程请求的资源都分配给进程,要么分配够,要么一个也不分配。
解决了一个进程需要多个互斥资源才能执行的问题。

10.利用信号量机制实现进程互斥时,针对互斥信号量的wait()和signal()操作为什么要成对出现?
若只有P,没有V就会造z成进程死锁,若只有V,没有P会造成信号量失效。

11.什么是管程?它有哪些特征?
管程是代表共享数据结构,以及由对该共享数据结构实施操作的过程组成的资源管理程序,是操作系统的一个资源管理模块。特征如下:
1)抽象了临界资源。
2)对临界资源的访问只能调用管程进行。
3)只允许一个进程进入管程。

12.试简述管程中条件变量的含义与作用?
含义:管程为何种阻塞的原因都设置了条件变量,进程若因此原因而阻塞,会把这个进程挂在此条件变量的队列上,若是阻塞条件发生变换,则启动一个进程。
作用:为了解决管程中的进程不能被阻塞,而其他进程不能访问管程的问题。

二、计算题
13.若信号量的初值为2,当前值为-1,则表示有多少个等待进程?请分析。
1个等待进程;当前值为-1时,表示有一个进程正在临界区运行,而另一个进程因等待而阻塞在信号量队列中,需要被当前已在临界区运行的进程在退出时唤醒。

注:信号量的应用:
设mutex为互斥信号量,其初值为1,取值为(-1,0,1)。当mutex=1时,表示两个进程皆未进入需要互斥访问的临界区;当mutex=0时,表示有一个进程进入临界区运行,另一个必须等待,挂入阻塞队列;当mutex=-1时,表示有一个进程正在临界区运行,而另一个进程因等待而阻塞在信号量队列中,需要被当前已在临界区运行的进程在退出时唤醒。

14.有m个进程共享同一临界资源,若使用信号量机制实现对某个临界资源的互斥访问,请求出信号量的变化范围。
1到-(m-1) 即1到1-m;

分析:为实现互斥访问,初始值需要设置为1.如果某时刻信号量为-x,则证明等待队列中有x个进程在等待。此题中,有m个进程,那么最多就有m-1个进程等待。对应信号量的值就是-(m-1)=1-m。

15.若有4个进程共享同一程序段,而且每次最多允许3个进程进入该程序段,则信号量值的变化范围是什么?
信号量值的变化范围(3,2,1,0,-1)

结合14、15分析归纳:
设有m个进程共享一个互斥段,对于如下两种情况使用信号量,信号量的值应该怎样变化。
(1)如果每次只允许一个进程进入互斥段:
信号量的初值是1,变化量范围是:1,0,-1,-2,1-n
(2)如果每次最多允许n个进程(n<m)同时进入互斥段:
信号量的初值是n,变化量范围是:n,n-1,n-2…n-m

三、综合应用题
16.3个进程P1、P2、P3互斥地使用一个包含N(N>0)个单元的缓冲区。P1每次用produce()生成一个正整数,并用put()将其送入缓冲区的某一空单元中;P2每次用getodd()从缓冲区中取出一个奇数,并用countodd()统计奇数的个数;P3每次用geteven()从该缓冲区中取出一个偶数,并用counteven()统计偶数的个数。请用信号量机制实现这3个进程的同步与互斥活动,并说明所定义的信号量的含义。要求用伪代码描述。
https://blog.csdn.net/dalao_whs/article/details/108954713

17.某银行提供了一个服务窗口和10个供顾客等待时使用的座位。顾客到达银行时,若有空座位,则到取号机上领取一个号,等待叫号。取号机每次仅允许一位顾客使用。当营业员空闲时,通过叫号选取一位顾客,并为其服务。顾客和营业员的活动过程描述如下。

	cobegin{
		process顾客i{
		 从取号机上获取一个号码;
		 等待叫号;
		 获取服务;
		}
		process营业员{
		 while(TRUE){
		  叫号;
        为顾客服务;
       }
      }	
   }coend

请添加必要的信号量和P、V操作或wait()、signal()操作,实现上述过程中的互斥与同步。要求写出完整的过程,说明信号量的含义并赋初值。

	int i,j = 0 //i表示当前取号号码,j表示叫号号码
	n = 10 //空位数
	mutex_i ,mutex_j = 1 //互斥信号量
		顾客{
			p(mutex_i)
			p(n)
			i++
			//取号,待叫号,待获得服务
			v(mutex_i)
		}
		营业员{
			if(j<i)
			{
			p(mutex_j)
			v(n)
			// 叫号,为j号服务
			j++
			v(mutex_j)
			}
		}

18.如图4-3所示,有1个计算进程和1个打印进程,它们共享一个缓冲区,计算进程不断计算出一个整型结果,并将它放入单缓冲区中;打印进程则负责从缓冲区中取出每个结果并进行打印。请用信号量机制来实现它们的同步关系。
在这里插入图片描述

可从临界资源的角度来思考,先找临界资源,并为每种临界资源设置信号量,在访问临界资源之前加wait操作来申请资源,访问完临界资源后加signal操作以释放临界资源。本题中有两类临界资源:第一类是计算进程争用的空闲缓冲区,初始状态下有一个空闲缓冲可供使用,故可为它设置初值为l的信号量empty;第二类是打印进程争用的已放入缓冲中的打印结果,初始状态下缓冲中无结果可供打印,故可为它设置初值为0的信号量full。当然个人感觉PV操作更简单。

19.有3个进程P1、P2、P3协作解决文件打印问题。P1将文件记录从磁盘读入内存的缓冲区1,每执行一次读一个记录;P2将缓冲区1中的内容复制到缓冲区2中,每执行一次复制一个记录;P3将缓冲区2中的内容打印出来,每执行一次打印一个记录。缓冲区的大小与记录大小一样。请用信号量来保证文件的正确打印。

semaphore mutex_1 = 1,mutex_2= 1,ok_1= 0,ok_2=0,ok_3= 1;
	P1{
		p(ok_3)
		p(mutex_1)v(mutex_1)
		v(ok_1)
	}
	P2{
		p(ok_1)
		p(mutex_1)
		p(mutex_2)v(mutex_1)
		v(mutex_2)
		v(ok_2)
	}
	P3{
		P(ok_2)
		p(mutex_2)v(mutex_2)
		v(ok_3)
	}

20.桌上有一个能盛得下5个水果的空盘子。爸爸不停的向盘中放苹果和橘子,儿子不停地从盘中取出橘子享用,女儿不停地从盘中取出苹果享用。规定3人不能同时向(从)盘子中放(取)水果。使用信号量机制来实现爸爸、儿子和女儿这3个“循环进程”之间的同步。

semaphore mutex_1 = 1,mutex_2= 1,ok_1= 0,ok_2=0,ok_3= 1;
	P1{
		p(ok_3)
		p(mutex_1)v(mutex_1)
		v(ok_1)
	}
	P2{
		p(ok_1)
		p(mutex_1)
		p(mutex_2)v(mutex_1)
		v(mutex_2)
		v(ok_2)
	}
	P3{
		P(ok_2)
		p(mutex_2)v(mutex_2)
		v(ok_3)
	}

21.试用记录型信号量写出一个不会死锁的哲学家进餐问题的算法。

semaphore n = 4
semaphore choptick[5] = {1,1,1,1,1}
while(1)
{
p(n)
p(choptick[i])
p(choptick[i+1]%5)
eat…
v(n)
v(choptick[i])
v(choptick[i+1]%5)
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/558621.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows本地快速搭建SFTP服务共享文件【外网访问】

文章目录 1. 搭建SFTP服务器1.1 下载 freesshd服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内网连接测试成功 3 使用cpolar内网穿透3.1 创建SFTP隧道3.2 查看在线隧道列表 4. 使用SFTP客户端&#xff0…

数据结构与算法-单调栈1

先介绍一下单调栈是什么 一种特别设计的栈结构&#xff0c;为了解决如下的问题&#xff1a; 给定一个可能含有重复值的数组arr&#xff0c;i位置的数一定存在如下两个信息 1&#xff09;arr[i]的左侧离i最近并且小于(或者大于)arr[i]的数在哪&#xff1f; 2&#xff09;arr[…

买法拍房注意事项

1、查清法拍房房屋属性。 竞拍前需查清楚法拍房的使用年限、能否办理房产证、土地性质等。 若土地为划拨属性&#xff0c;房屋可能需补缴土地出让金&#xff0c;该费用最好提前咨询当地不动产登记中心了解。 2、产权是否涉及二次过户。 二次过户指的是房屋已经过2次交易&…

苦卷一个月,P9大佬给我的Alibaba面试手册,终于成功踹开字节大门

怎么说呢&#xff0c;今年真的是寒气逼人啊&#xff01;在这个大环境下&#xff0c;裁员已经不算是特别的事情&#xff0c;粗暴裁员也许是未来一种趋势…在职的卷的起飞&#xff0c;离职的找不到好工作。 做点能做的&#xff1a;跑跑步骑骑车多锻炼&#xff1b;当当上面正版书…

分布式全局唯一id实现-2 springCloud-MyBatis-Plus集成百度分布式全局id(uid-generator)

前言&#xff1a;MyBatis-Plus 集成百度的uid-generator &#xff0c;实现业务实体在insert 实体时&#xff0c;可以自动获取全局id&#xff0c;完成数据保存&#xff1b; 1 uid-generator 全局id 生成的方式了解&#xff1a; Snowflake算法描述&#xff1a;指定机器 & 同…

如何避免孩子独自在家偷偷使用电脑?

电脑为我们的生活带来了极大的便利&#xff0c;但是对于孩子来说&#xff0c;过早的接触网络很容易影响其健康的成长。家长在家的话&#xff0c;还可以监督孩子&#xff0c;但如果家长出门了&#xff0c;该如何避免孩子偷偷使用电脑呢&#xff1f;其实方法很简单&#xff0c;只…

网络进阶学习:交换机二层

交换机二层 交换机的概念和作用交换机的划分交换机第二层的内容⭐第一部分&#xff1a;MAC地址⭐第二部分&#xff1a;逻辑链路控制子层⭐第三部分&#xff1a;介质访问控制子层⭐第四部分&#xff1a;交换机转发表⭐第五部分&#xff1a;VLAN⭐第六部分&#xff1a;STP 交换机…

Hudi系列25: Flink SQL使用checkpoint恢复job异常

文章目录 一. 通过Flink SQL将MySQL数据写入Hudi二. 模拟Flink任务异常2.1 手工停止job2.2 指定checkpoint来恢复数据2.3 整个yarn-session上的任务恢复 三. 模拟源端异常3.1 手工关闭源端 MySQL 服务3.2 FLink任务查看 FAQ:1. checkpoint未写入数据2. checkpoint 失败3. 手工取…

自然语言处理技术简介

长期以来&#xff0c;研究人员进行自然语言处理研究主要依赖各种机器学习模型&#xff0c;以及手工设计的特征&#xff0c;但这样做带来的隐患是由于语言信息被稀疏表征表示&#xff0c;会出现维度诅咒之类的问题。而随着近年来词嵌入&#xff08;低维、分布式表征&#xff09;…

港联证券|A股船舶板块景气反转即将到来

在经历了去年的爆发后&#xff0c;2023年的中国造船业仍然处在订单交付两旺的高度景气周期之中。 5月22日&#xff0c;中国船舶集团有限公司旗下沪东中华造船&#xff08;集团&#xff09;有限公司宣布交付全球最大级别24116TEU超大型集装箱船系列3号船“地中海吉玛”号。据报道…

3D 对象转换器应该如何将 OBJ 转换为 FBX ?

Aspose.3D 是一个功能丰富的游戏软件和计算机辅助设计&#xff08;CAD&#xff09;的API&#xff0c;可以在不依赖任何3D建模和渲染软件的情况下操作文档。API支持Discreet3DS, WavefrontOBJ, FBX (ASCII, Binary), STL (ASCII, Binary), Universal3D, Collada, glTF, GLB, PLY…

SpringMVC框架理解

JavaEE体系结构包括四层&#xff0c;从上到下分别是应用层、Web层、业务层、持久层。Struts和SpringMVC是Web层的框架&#xff0c;Spring是业务层的框架&#xff0c;Hibernate和MyBatis是持久层的框架。 为什么要使用SpringMVC&#xff1f; 很多应用程序的问题在于处理业务数据…

一对一项目指导,在线购物网站webform+SQLServer技术架构

我是Tom老师&#xff0c;10开发经验&#xff0c; 我先后在携程网、陆金所&#xff0c;两家互联网和金融行业领头公司 担任高级开发工程师&#xff0c; 技术深厚&#xff0c;开发经验丰富&#xff0c;认真负责。 我现在专门做一对一编程辅导。 希望我的专业辅导&#xff0c;…

02数字图像基础

文章目录 2数字图像基础2.4图像取样和量化2.4.4图像内插 2.5像素间的一些基本关系2.5.1相邻像素2.5.2邻接性、连通性、区域和边界2.5.3距离度量 2.6 数字图像处理2.6.1阵列和矩阵操作2.6.2线性操作和非线性操作2.6.3算术操作2.6.5空间操作2.6.6向量与矩阵操作2.6.7图像变换2.6.…

架构演变之路

一)单机架构: 一)定义:应用服务和数据库服务器共用一台服务器&#xff0c;所有的服务被部署到一台服务器上面 蓝色的就是我们写的JAVA代码用户服务负责用户的登录和注册&#xff0c;商品服务用于商品的购买和交易&#xff0c;交易模块用于用户的下单和购买&#xff0c;在数据库…

周赛 Round#3 题解

又不能放图片&#xff0c;又不能写学校&#xff0c;你让我怎么办啊&#xff01;&#xff01; 系列文章目录 1.周赛 Round#1 2.周赛 Round#2 前言 这是周赛第三轮。//涉及隐私原因&#xff0c;博文里不放题目&#xff0c;要看的去http://0241:101:610:801.22222 划分字符串贪…

树状数组(一)

文章目录 前言一、树状数组简介二、树状数组的原理与相应模块三、实战演练3.1 区域和检索 - 数组可修改3.1.1 题目链接3.1.2 题目描述3.1.3 题目代码3.1.4 解题思路 3.2 数字流的秩3.2.1 题目链接3.2.2 题目描述3.2.3 题目代码3.2.4 解题思路 总结 前言 给定一段数字&#xff…

多元回归预测 | Matlab麻雀算法(SSA)优化BP神经网络回归预测,SSA-BP回归预测,多变量输入单输出模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元回归预测 | 麻雀算法(SSA)优化BP神经网络回归预测,SSA-BP回归预测,多变量输入单输出模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码 %-------------…

Windows10家庭版安装WSL

记录Windows10家庭版安装linux子系统WSL 查看自己的windows版本是否支持安装wsl2&#xff0c;cmd里输入ver查看。 系统版本&#xff1a;Windows 10 1903及以上版本。 系统内部版本&#xff1a; 18362及以上。 启用适用于Linux的windows子系统 右键命令提示符&#xff0c;以管…

小航编程题库2022年NOC决赛图形化(小低组)(含题库教师账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;_程序猿下山的博客-CSDN博客 单选题3.0分 删除编辑 答案:C 第1题对小猫编程&#xff0c;程序运行后&#xff0c;看到的小猫最终方向是多少&#xff1f; A、120B…