软件评测师备考——PV信号量
程序员文章站
2024-02-16 08:26:52
...
基本概念
信号量
大于等于0:代表可供并发使用的资源实体数。
小于0:其绝对值标识正在等待使用的进程的数量。
PV操作
P操作: 作用是将信号量减1。当信号量变成负数时,则停止调用P操作的进程,直到另一个进程对同一信号量执行V操作。
V操作: 作用是将信号量加1。当信号量小于等于0时,从相应的队列中选择一个进程唤醒它。
互斥/同步
互斥: 一组并发的进程中一个或多个程序段,因共享某一个公有资源而导致他们必须以一个不允许交叉执行的单位执行,所以互斥信号量的取值只能是1或0。简而言之,互斥是要保证临界资源在某一时刻只能被一个进程访问。
同步: 异步环境下的一组并发进程因直接制约而互相发送消息,进程互相合作和等待,使得各个进程按一定的速度执行的过程。简而言之,进程之间是异步执行的,同步是说使各个进程按一定的制约顺序和速度执行。
例题详解
某企业的生产流水线上有2名工人P1 和P2,1名检验员P3。P1将初步加工的半成品放入半成品箱B1,P2从半成品箱B1取出继续加工,加工好的产品放入成品箱B2,P3从成品箱B2取出产品检验。假设B1可存放n件半成品,B2可存放m件产品,并设置6个信号量S1、S2、S3、S4、S5和S6,且S3和S6的初值都为0,采用PV操作实现P1、P2和P3的同步模型如下图所示,则信号量S1和S5(1 ),S2和S4的初值分别为(2 )。 1、A、分别为同步信号量和互斥信号量,初值分别为0和1 B、都是同步信号量,其初值分别为0和0 C、都是互斥信号量,其初值分别为1和1 D、都是互斥信号量,其初值分别为0和1 2、 A、n,0 B、m,0 C、m,n D、n,m |
信号量分析
* S1 互斥信号量,指的是B1这个容器,同一时间只能被同一个人占用,初始值为1
* S5 互斥信号量,指的是B2这个容器,同一时间只能被同一个人占用,初始值为1
* S2 出现在B1中半成品加工,与从B1取出半成品操作后,因此S2表示的是B1的容量,初始值为n
* 同理 S4表示的是B2中的容量,初始值为m
* S3 同步信号量(P1和P2互相合作,等待,相互制约),表示箱子B1中产品个数,初始值为0
* S6 同步信号量,表示箱子B2中产品个数,初始值为0
详细解析
P1初步加工,占用半成品箱S1,即P(S1),此时S1从1变成0,其他人要使用的话需要等待。
P1将半成品放到B1中,B1容量被占用了一个P(S2)。
之后,释放S1,即V(S1),此时S1从0变成1,可以被其他人使用。
V(S3)表示箱子中产品个数加1。
P2从B1执行取出半成品操作,P(S3)表示箱子B1中产品个数减1。P(S1)表示占用半成品箱子S1,
即P2正在使用箱子B1,其他人如果想使用需要等待。
P2从B1取出半成品后,释放S1,V(S1)表示箱子B1未被占用,可以被其他人使用。
V(S2)表示B1容量被释放了一个,即容量增加1个。
后续成品在B2箱中的操作同前边操作原理一模一样。
只要把B1换成B2,P1换成P2,P2换成P3,S1换成S5,S2换成S4,S3换成S6即可。
推荐阅读