ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

进程同步与互斥习题

2021-12-22 10:02:36  阅读:212  来源: 互联网

标签:理发师 题目 进程同步 信号量 互斥 mutex 习题 售票员


文章目录

进程同步与互斥习题

进程同步与互斥概念

互斥: 源于资源共享。对于硬件和软件临界资源,多个进程必须互斥的对它进行访问。即任一时刻只能有一个进程对其访问。

同步:源于进程间的合作。为了实现进程同步,在系统中设置专门的同步系统来协调诸进程间的运行

取值范围

用某信号量来实现n个进程的互斥时,信号量的取值范围:1-n到1

设有N个进程共享一个程序段,而每次最多允许M个进程进入该程序段(N>M),则所采用的信号量的取值范围为m-n到m

n如果系统中有n个进程,则就绪队列中进程的个数最多有n-1

进程同步与互斥问题

题目一:汽车行驶

题目:

在一个只允许单向行驶的十字路口,分别有 若干由东向西,由南向北的车辆在等待通过十字路口。为了安全,每次只允许一辆车通过(东->西或南->北)。当有车辆通过时其它车辆等待,当无车辆在十字路口行驶时则允许一辆车进入(东->西或南->北)。请用P、V操作实现能安全行驶的自动管理系统。(西电2001)

分析:

一个资源:十字路口

两个进程:由东向西、由南向北

为资源设置一个互斥信号量s ,初值为1

semaphore s=1;
east_to_west:begin
				P(s);
				通过十字路口
				V(s);
			 end;
south_to_north:begin
				P(s);
				通过十字路口
				V(s);
			   end;

题目二:取材料问题

题目:

有一个材料保管员,负责管理纸和笔。另有A、B两组学生,A组学生每人有纸,B组学生每人都有笔,任何一个学生只要能得到另一种材料就可以写信。有一个可以放一张纸或一支笔的小盒,当小盒中为空时,保管员可以任意放入一张纸或一支笔。当小盒中有材料时,允许一个学生从中取出自己所需的材料,当学生取走材料后,允许保管员再存放一件材料。请用P、V操作描述该算法。

分析:

image-20211222085746298

设置互斥信号 mutex,初值为1

设置同步信号paper,pen, 初值为0

semaphore mutex=1;//互斥信号量,表示对小盒操作的互斥访问
semaphore paper=0,pen=0;//同步信号量

保管员:begin
		P(mutex);
		放入材料;
		if(材料==笔)
			V(pen);
		if(材料==纸)
			V(paper);
		end;
A组:begin
		P(pen);
		取走笔;
		V(s);
	end;
B组:begin
		P(paper);
		取走纸;
		V(s);
	end;

题目三:小桥过人问题

题目:

一座小桥(最多能承重两个人),横跨东西两岸,东侧桥段和西侧桥段任意时刻只允许一人通过,桥中间一处宽敞,允许两人通过或者休息。请用P、V操作描述东西两岸过桥的算法。

分析:

image-20211222090828724
信号量初值含义
EW2允许从东到西的人数
WE2允许从西到东的人数
east1是否允许在东段桥上
west1是否允许在西段桥上
eastTowest:begin
                P(EW);
                P(WE);
                P(east);
                从东岸经东段桥,走到桥中央;
                V(east);
                通过桥中央或者休息;
                P(west);
                经西段桥,从桥中央到西岸;
                V(west);
                V(WE);
                V(EW);
             end;
westToeast:begin
               P(EW);
               P(WE);
               P(west);
               从西岸经西段桥,走到桥中央;
               V(west);
               通过桥中央或者休息;
               P(east);
               经东段桥,从桥中央到东岸;
               V(east);
               V(WE);
               V(EW);
            end;

题目四:阅览室登记问题

题目:

有一阅览室,共有100个座位。读者进入时必须先在一张登记表上登记,该表为每一座位列一表目,包括座号和读者姓名。读者离开时要消掉登记内容。试用P/v操作描述读者进程的同步结构。

semaphore mutex=1;//互斥信号量
semaphore full=100;//资源信号量
int[n]table;
reader:begin
		P(full);
		P(mutex);
		register(table);
		v(mutex);
		read;
		P(mutex);
		delete_name(table);
		V(mutex);
		V(full);
	   end;

题目五:流水线问题

题目:

某流水线有4个并发工序P1、P2、P3、P4,他们执行情况如下:

P1先执行;P1结束后,P2,P3同时开始执行,P2,P3都结束后,P1才能继续下一次执行,同时P4开始执行。试用PV操作实现他们之间的同步。

分析:

SA12,SB12,SA13,SB13,SB24,SB34:Semophore

SA12:=SA13:=1;

SB12:=SB13:=SB24:=SB34:=0;

image-20211222092644709

标签:理发师,题目,进程同步,信号量,互斥,mutex,习题,售票员
来源: https://blog.csdn.net/weixin_47692652/article/details/122078799

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有