操作系统---(22)信号量机制解决同步互斥问题

信号量的基本原理

  1. 两个或多个进程通过简单的信号进行合作。
  2. 任何复杂的合作需求都可以通过适当的信号结构得到满足。

信号量机制实现要素

  1. 信号量(Semaphore类型,内含一个阻塞队列)
  2. p操作原语(wait)
  3. v操作原语(signal)

记录型信号量

一个记录型信号量包含两个分量:信号俩的值,信号量的等待队列指针

type semaphore = record
	value:integer;
	*L:Queue;
end.

使用该类型声明一个信号量s ,var s: semaphore;或者semaphore s;则s.value的不同取值表示临界资源的使用情况;s.L对应因临界区不能进入而阻塞的进程组成的阻塞队列

在这里插入图片描述

信号量机制解决互斥问题

  1. 一种CR设一 个信号量
  2. 信号量的初值设置为系统初始状态CR的可用量
  3. P操作用于临界区前,相当于进入CS之前申请CR
  4. V操作用于临界区后,相当于出临界区后释放CR
  5. P、V操作必须成对匹配

信号量的值:
semaphore mutex;这样声明信号量mutex用于互斥问题

mutex.value:
1. 目前CR有mutex.value个可用
2. 目前CR没有可用的
3. 目前有|mutex.value|个进程因等待该CR而阻塞

信号量机制解决同步问题

  1. 种同步信号设一个信号量
  2. 信号量的初值设置为系统初始状态下信号的有无
  3. P操作用于临界区前,相当于检查同步信号
  4. V操作用于临界区后,相当于发出同步信号
  5. P、V操作丕成对匹配

信号量的值:
semaphore s;这样声明信号量s用于同步问题
s.value:
1. 目前有s.value个s对应的同步信号
2. 目前没有s对应的同步信号
3. 目前有ls.valuel个进程因等s对应的同步信号而阻塞

互斥,同步解决方法之异同分析

  1. 信号量的设置
  2. 信号量的初值
  3. p操作的含义
  4. v操作的含义
  5. p,v操作是否匹配

记录型信号量机制解决问题的步骤:
1. 分析问题中的进程、资源;
2. 分析进程间关系;
3. 分别设置互斥、同步信号量;
4. 写出并发进程体,找出相关CS;
5. 分别加PV操作并分析结果。

例1:卡车计数问题
如果不使用pv操作的话,两个进程将无法等到想要的结果
在这里插入图片描述
使用pv操作后,两个进程将得到正确的结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值