信号量的pv操作汇总.docVIP

  • 25
  • 0
  • 约1.33万字
  • 约 18页
  • 2019-09-16 发布于浙江
  • 举报
???信号量的PV操作是如何定义的?试说明信号量的PV操作的物理意义。 参考答案:P(S):将信号量S减1,若结果大于或等于0,则该进程继续执行;若结果小于0,则该进程被阻塞,并将其插入到该信号量的等待队列中,然后转去调度另一进程。 V(S):将信号量S加1,若结果大于0,则该进程继续执行;若结果小于或等于0,则从该信号量的等待队列中移出一个进程,使其从阻塞状态变为就绪状态,并插入到就绪队列中,然后返回当前进程继续执行。 PV操作的物理含义:信号量S值的大小表示某类资源的数量。当S0时,其值表示当前可供分配的资源数目;当S0时,其绝对值表示S信号量的等待队列中的进程数目。每执行一次P操作,S值减1,表示请求分配一个资源,若S≥0,表示可以为进程分配资源,即允许进程进入其临界区;若S0,表示已没有资源可供分配,申请资源的进程被阻塞,并插入S的等待队列中,S的绝对值表示等待队列中进程的数目,此时CPU将重新进行调度。每执行一次V操作,S值加1,表示释放一个资源,若S0,表示等待队列为空;若S≤0,则表示等待队列中有因申请不到相应资源而被阻塞的进程,于是唤醒其中一个进程,并将其插入就绪队列。无论以上哪种情况,执行V操作的进程都可继续运行。 设公共汽车上,司机和售票员的活动分别是: 司机的活动:启动车辆; 正常行车; 到站停车; 售票员的活动: 关车门; 售票; 开车门; 在汽车不断地到站、停车、行驶过程中,这两个活动有什么同步关系?用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) 吃苹果; g

文档评论(0)

1亿VIP精品文档

相关文档