当前位置:网站首页>进程同步与互斥问题纠错

进程同步与互斥问题纠错

2022-08-09 07:59:00 快乐学习吧

1.生产者- 消费者问题m个消费者 n 个生产者
empty [-n,k]
生产者进程都执行,k到0 ,继续执行,互斥冲突,堵塞到-n
full [-m,k]
同生产者,假若缓冲区都满,消费者进程执行,同上
当k>=m+n
mutex[-(n+m-1),1]
生产者和消费者进程同时进行,k不会受限,最小值即生产者与消费者进程同时等待堵塞
当k<m+n
mutex[-(k-1),1]
生产者和消费者进程同时进行,但是受k限制,生产者消费者进程并不会都执行
为什么和m+n比较
因为两个进程中empty+full=k
2.1. 假定某小学有 600 人,只有一个阅览室可供 100 个人同时阅读。读者进入和
离开阅览室时都必须在阅览室入口处的一个登记表上登记,阅览室有 100 个
座位,规定每次只允许一个人登记或注销登记。
要求:(1)用 P、V 操作描述读者进程间关系的算法.
(2)指出算法中所用信号量的名称、作用、初值及变化范围

semaphore mutex=1,seat=100;
parbigin
process readeri(i=1,2,3...)
	begin
	读者来到阅览室
	P(seat)
		P(mutex)
			在登记表上登记
		V(mutex)
		在阅览室阅览材料
		P(mutex)
			在登记表上注销
		V(mutex)
	V(seat)
	该读者离开

seat[-500,100]
mutex[-99,1]

  1. 三个饮料厂 P1、P2、P3 都要生产橙汁,他们各自已购得三种必需原料(水、
    糖、浓缩汁)中的两种,待购得第三种原料后即可配制出售。有一供应商能
    够不断供应这些原料,但每次只能拿出一种原料放入容器出售,当容器中有
    原料时需要该原料的饮料厂可取走,容器空时,供应商又可放入一种原料,
    假定:P1 已有糖和水,P2 已有水和浓缩汁,P3 已有糖和浓缩汁,试用 PV 操
    作写出供应商和三个饮料厂之间的同步互斥关系。
semaphore s=1,so=0,ss=0,sw=0;
enum{
    sugar,water,orange}container;
cobegin
process Provider{
    
while(true){
    
P(s)
	将原料装入容器内;
if(cantainer==suger)V(so);
else if(cantainer==water)V(ss);
else V(sw);
}}

process P2{
    
while (true){
    
	P(ss);
	从容器中取糖;
	V(s);
	生产橙汁;}}
process P1{
    
while (true){
    
	P(so);
	从容器中取浓缩汁;
	V(s);
	生产橙汁;}}

process P3{
    
while (true){
    
	P(sw);
	从容器中取水;
	V(s);
	生产橙汁;}}
  1. 有一座东西方向的独木桥,针对以下三种情况,用 P,V 操作分别实现行人的 同步互斥关系: (1)每次只允许一个人过桥; (2)当独木桥上有行人时,同方向的行人可以同时过桥,相反方向的人必须 等待。 (3)独木桥上有自东向西的行人时,同方向的行人可以同时过桥,从西向东 的方向,只允许一个人单独过桥。
(2)
设信号量: mutex=1 //东西方向互斥
		MD=1//东向西使用计数变量互斥
		MX=1//西向东使用计数变量互斥
设整形变量 CD=0//东向西以上桥人数
		CX=0//西向东已上桥人数
process traveler j(){
    
//从东向西
//上桥
P(MD);
	CD++;
	if(CD==1)P(mutex);这时起桥上东向西有人,西向东到这个地方会互斥堵塞
V(MD);
过桥
//下桥
P(MD);
	CD--if(CD==0V(mutex);
V(MD);
}


(3)
此问题与读者写者问题相同
int read=0;//计数器
semaphore ws=1 ,mutex=1;
cobegin
process EtoW(){
    
P(mutex);
read++;
if(read==1)P(ws); //这个时候,西向东会冲突
V(mutex);
过桥;
P(mutex);
read--;
if(read==0)V(ws);
V(mutex);}
coend;

process WtoE()
{
    
P(ws);
过桥
V(ws);
}
原网站

版权声明
本文为[快乐学习吧]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_47354208/article/details/115385722