【操作系统基础】信号量的基本理解

文章目录

  • 1. 信号量
  • 2. 信号量的实现
  • 3. 二值信号量
  • 4. 一般信号量
  • 信号量的总结

1. 信号量

在这里插入图片描述
对于互斥锁,它解决的时并发进程竞争关系的问题,也就是为了解决临界区问题而设计出来的一种为了保持同步的工具;
而信号量比互斥锁更加强大,可以解决很多并发进程同步的问题;

一个信号量S是一个整数,除了初始化以外,信号量仅仅只能有两个操作:P和V操作;
PV操作就是测试和增加的意思;


2. 信号量的实现

在这里插入图片描述
P操作主要是检测信号量S是否大于0,假如大于0,那么久使得信号量减1,假如小于等于0,那么就忙式等待,做空循环;

V操作主检测信号量,给信号量做加1操作;

从实现的角度也知道,为什么P操作叫做测试;
而V操作叫做增加;


举一个例子:四个进程ABCD都要同时访问信号灯资源;
我们假设初始化信号量为1,那么接下来信号量只能由PV两个操作来决定它的变化;
在下面并发进程ABCD的执行过程中,我们发现一个问题:
信号量初始值,和经过捣鼓后最终的值式一样的;


还有一个要注意的问题:P(S),V(S)里面的S表示传参的意思,不要误会是检测S的为真假哈。
在这里插入图片描述


3. 二值信号量

在这里插入图片描述


4. 一般信号量

在这里插入图片描述


我们先关注这段代码的执行顺序(可以自己捣鼓一下):

从图书的标注编号的执行顺序中,我们发现一个问题:

信号量的初始值,无论在并发进程如何执行的情况下,都会在最终回到和初值一样,所以说,一个信号量的设计对错,是可以通过最终值和初始值是否一样进行判断,一样表示设计正确;

还有信号量的初始值,我们可以抽象出来代表可用资源的个数,同时表示进入可用资源的进程,同时访问临界区资源的进程有多少个;

我们还发现:PV操作必须成对出现,这样才可以保证信号量的初始值,和最终的值是一样的;

PV 操作也是原子操作;


信号量的总结

在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部