📜  门|门 IT 2006 |第 57 题

📅  最后修改于: 2021-09-27 05:55:38             🧑  作者: Mango

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

  • x 是条件变量,
  • mutex 是一个初始化为 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(next), P(x_sem)
    (C) P(next), V(x_sem)
    (D) P(x_sem), V(x_sem)答案:(乙)
    解释:
    这个问题的测验
    如果您发现上面的帖子有任何错误,请在下面评论