📜  门| GATE CS 1999 |第68章

📅  最后修改于: 2021-06-29 02:03:20             🧑  作者: Mango

[5分问题]

一种。某个处理器提供“测试并设置”指令,其用法如下:

TEST register, flag

该指令原子地复制标志以注册,并将标志设置为1。使用该指令,给出用于在关键区域实现进入和退出代码的伪代码。

b。考虑使用大小为1的缓冲区解决生产者-消费者问题的以下解决方案。假定count的初始值为0。还要假设对count的测试和对count的赋值是原子操作。

Producer:      
   Repeat 
       Produce an item;
       if count = 1 then sleep;
       place item in buffer.
       count = 1;
       Wakeup(Consumer);
  Forever 

Consumer:
  Repeat
      if count = 0 then sleep;
      Remove item from buffer;
      count = 0;
      Wakeup(Producer);
      Consume item;
  Forever;

说明在此解决方案中,两个进程可能同时处于休眠状态。回答:
解释:
这个问题的测验
如果您在以上帖子中发现任何错误,请在下面发表评论