首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【操作系统不挂科】<经典同步问题(11)>PV原语简答题(带答案与解析)

【操作系统不挂科】<经典同步问题(11)>PV原语简答题(带答案与解析)

作者头像
YY的秘密代码小屋
发布2024-11-21 12:54:03
发布2024-11-21 12:54:03
2920
举报
文章被收录于专栏:C++系列C++系列

前言 大家好吖,欢迎来到 YY 滴操作系统不挂科 系列 ,热烈欢迎! 本章主要内容面向接触过C++的老铁 本博客主要内容,收纳了一部门基本的操作系统题目,供yy应对期中考试复习。大家可以参考

  • 本章为选择题题库,试卷与大题库可以看下面传送门其他博客

1.对于生产者-消费者问题,若缓冲区中缓冲区单元只有一个,生产者和消费者各只有一人。用P、V原语实现生产者和消费者的同步操作

  • 正确答案:
代码语言:javascript
复制
Semaphore  Vs1=0;
Semaphore  Vs2=0;
Main(){
  Cobegin{
     producer     //生产者进程
     while(true){
        送产品到缓冲区;
        V(Vs1);     //允许取产品
        P(Vs2);     //阻止送产品
     }
     consumer     //消费者进程
     while(true){
        P(Vs1);     //阻止取产品
        从缓冲区取产品;
        V(Vs2);     //允许送产品
     }
  }
  coend
}

2.对于生产者-消费者问题,若缓冲区中缓冲区的单元有n个,生产者和消费者各只有一个。用P、V原语实现生产者和消费者同步操作

  • 正确答案:
代码语言:javascript
复制
semaphore empty=n;     //初始时空的缓冲区单元个数
semaphore full=0;      //初始时满的缓冲区个数
semaphore mutex=1;     //控制对临界区访问的互斥信号量
main(){
   cobegin{
      procducer       //生产者进程
      while(true){
          P(empty);    //递减一个空缓冲区单元
          P(mutex);    //互斥访问缓冲区
          送一个产品到缓冲区;
          V(mutex);    //允许访问缓冲区
          V(full);     //递增一个满缓冲区单元
      }
      consumer
      while(ture){        //消费者进程
          P(full);     //递减一个满缓冲区
          P(mutex);    //互斥访问临界区
          从缓冲区取一个产品;
          V(mutex);    //允许访问缓冲区
          V(empty);    //递增一个空缓冲区单元
      }
   }
   coend
}

3.有n+1个进程,即A1,…,An和B,如图所示。A1,…,An通过同一缓冲区各自不断地向B发送消息,B不断地获取消息,则开始时缓冲区为空,使用P、V操作正确实现之。

  • 正确答案:
代码语言:javascript
复制
semaphore Sa=1;
semaphore Sb=0;
main(){
   cobegin{
      进程Ai(i=1,…,n)
        while(true){
          P(Sa);       //互斥A发消息
          向缓冲区发送消息;    
          V(Sb);       //允许B取消息
      }
      进程B
      while(true){
          P(Sb);       //互斥B取消息
          从缓冲区取消息;
          V(Sa);       //允许A发消息
      }
   }
   coend
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.对于生产者-消费者问题,若缓冲区中缓冲区单元只有一个,生产者和消费者各只有一人。用P、V原语实现生产者和消费者的同步操作
  • 2.对于生产者-消费者问题,若缓冲区中缓冲区的单元有n个,生产者和消费者各只有一个。用P、V原语实现生产者和消费者同步操作
  • 3.有n+1个进程,即A1,…,An和B,如图所示。A1,…,An通过同一缓冲区各自不断地向B发送消息,B不断地获取消息,则开始时缓冲区为空,使用P、V操作正确实现之。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档