信号量地PV操作(例题)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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进程:

●使用运输工具出库

相关文档
最新文档