📜  门| GATE IT 2006 |第57章

📅  最后修改于: 2021-07-02 14:24:56             🧑  作者: Mango

监视器的等待和信号操作如下使用信号灯实现。在下面的,

  • x是一个条件变量,
  • 互斥锁是初始化为1的信号量
  • x_sem是初始化为0的信号量,
  • x_count是等待信号量x_sem的进程数,最初为0,其次是初始化为0的信号量,
  • next_count是等待下一个信号量的进程数,最初为0。

    在监视器外部可见的每个过程的主体都替换为以下内容:

    P(mutex);
    body of procedure
    if (next_count > 0)
        V(next);
    else
        V(mutex);
    

    每次出现x.wait都将替换为以下内容:

    x_count = x_count + 1;
    if (next_count > 0)
        V(next)
    else
        V(mutex);
    ------------------------------------------------------------ E1;
    x_count = x_count - 1;
    

    每次出现x.signal都将替换为以下内容:

    if (x_count > 0)
    {
        next_count = next_count + 1;
        ------------------- E2;
        P(next),
        next_count = next_count - 1;
    }
    

    为了正确实现监视器,分别使用语句E1和E2,
    (A) P(x_sem),V(下一个)
    (B) V(下一个),P(x_sem)
    (C) P(下一个),V(x_sem)
    (D) P(x_sem),V(x_sem)答案: (B)
    解释:
    这个问题的测验
    如果您在以上帖子中发现任何错误,请在下面发表评论