信号量的PV操作(例题)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
???信号量的PV操作是如何定义的?试说明信号量的PV操作的物理意义。
参考答案:P(S):将信号量S减1,若结果大于或等于0,则该进程继续执行;若结果小于0,则该进程被阻塞,并将其插入到该信号量的等待队列中,然后转去调度另一进程。
V(S):将信号量S加1,若结果大于0,则该进程继续执行;若结果小于或等于0,则从该信号量的等待队列中移出一个进程,使其从阻塞状态变为就绪状态,并插入到就绪队列中,然后返回当前进程继续执行。
PV操作的物理含义:信号量S值的大小表示某类资源的数量。当S>0时,其值表示当前可供分配的资源数目;当S<0时,其绝对值表示S信号量的等待队列中的进程数目。每执行一次P操作,S值减1,表示请求分配一个资源,若S≥0,表示可以为进程分配资源,即允许进程进入其临界区;若S<0,表示已没有资源可供分配,申请资源的进程被阻塞,并插入S的等待队列中,S的绝对值表示等待队列中进程的数目,此时CPU将重新进行调度。每执行一次V操作,S值加1,表示释放一个资源,若S>0,表示等待队列为空;若S≤0,则表示等待队列中有因申请不到相应资源而被阻塞的进程,于是唤醒其中一个进程,并将其插入就绪队列。无论以上哪种情况,执行V操作的进程都可继续运行。
1、设公共汽车上,司机和售票员的活动分别是:
司机的活动:启动车辆;
正常行车;
到站停车;
售票员的活动:
关车门;
售票;
开车门;
在汽车不断地到站、停车、行驶过程中,这两个活动有什么同步关系?用P、V操作实现它们的同步。
设两个信号量S和C,初值为S=0;C=0;
司机:L1:正常行车售票员:L2:售票
到站停车P(S)
V(S)开车门
P(C)关车门
启动开车V(C)
GO TO L1 GO TO L2
2、请用PV操作实现他们之间的同步关系:
(1)桌上一个盘子,只能放一只水果。爸爸放苹果,妈妈放桔子,儿子只吃桔子,女儿只吃苹果。
(2)桌上一个盘子,只能放一只水果。爸爸放苹果,妈妈放桔子,儿子吃桔子、苹果。
参考答案:
第一步:确定进程
4个进程Father(爸爸)、Mother(妈妈)、Son(儿子)、Daughter(女儿)
Father进程:
将苹果放入盘中
Mother进程:
●将桔子放入盘中
Son进程:
●从盘中取出桔子
●吃桔子
Daughter进程:
●从盘中取出苹果
●吃苹果
第二步:确定进程的同步、互斥关系
●同步:Father当盘中无水果时,才可以将苹果放入盘中
●同步:Mother当盘中无水果时,才可以将桔子放入盘中
●同步:Son当盘中有桔子时,才可以从盘中取出桔子
●同步:Daughter当盘中有苹果时,才可以从盘中取出苹果第三步:设置信号量
●盘中无水果,Sp,初值1
●盘中有桔子,So,初值0
●盘中有苹果,Sa,初值0
第四步:用伪代码描述
begin
Sp,So,Sa:semaphore;
Sp :=1;
So :=0;
Sa :=0;
cobegin
Father ( );
Mother ( );
Son ( );
Daughter ( );
coend;
end;
process Father ( )
begin
L1: P(Sp);
将苹果放入盘中;
V(Sa);
goto L1;
end;
process Mother ( )
begin
L2: P(Sp);
将桔子放入盘中;
V(So);
goto L2;
end;
process Son ( )
begin
L3: P(So);
从盘中取出桔子;
V(Sp)
吃桔子;
goto L3;
end;
process Daughter ( )
begin
L4: P(Sa);
从盘中取出苹果;
V(Sp)
吃苹果;
goto L4;
end;
(2)
第一步:确定进程
3个进程Father(爸爸)、Mother(妈妈)、Son(儿子)
Father进程:
●将苹果放入盘中
Mother进程:
●将桔子放入盘中
Son进程:
●从盘中取出水果(桔子或苹果)
●吃水果(桔子或苹果)
第二步:确定进程的同步、互斥关系
●同步:Father当盘中无水果时,才可以将苹果放入盘中
●同步:Mother当盘中无水果时,才可以将桔子放入盘中
●同步:Son当盘中有水果(桔子或苹果)时,才可以从盘中取出水果
第三步:设置信号量
●盘中无水果,empty,初值1
●盘中有水果(桔子或苹果),full,初值0
第四步:用伪代码描述
begin
empty, full:semaphore;
empty:=1;
full :=0;
cobegin
Father ( );
Mother ( );
Son ( );
coend;
end;
process Father ( )
begin
L1: P(empty);
将苹果放入盘中;
V(full);
goto L1;
end;
process Mother ( )
begin
L2: P(empty);
将桔子放入盘中;
V(full);
goto L2;
end;
process Son ( )
begin
L3: P(full);
从盘中取出水果;
V(empty);
吃水果;
goto L3;
end;
3.某工厂有一个可以存放设备的仓库,总共可以存放10台设备。生产的每一台设备都必
须入库,销售部门可从仓库提出设备供应客户。设备的入库和出库都必须借助运输工具。
现只有一台运输工具,每次只能运输一台设备。请设计一个能协调工作的自动调度管理系统。
参考答案:
第一步:确定进程
可以为入库(Pin)和出库(Pout)各设置一个进程
Pin进程:
●生产了一台设备
●使用运输工具入库
Pout进程:
●使用运输工具出库