📜  门| GATE-CS-2006 |第 61 题

📅  最后修改于: 2021-09-25 06:30:05             🧑  作者: Mango

原子获取并设置 x, y 指令无条件地将内存位置 x 设置为 1 并获取 xny 的旧值,而不允许对内存位置 x 进行任何干预访问。考虑以下 P 和 V 函数在二进制信号量 S 上的实现。

void P (binary_semaphore *s)
{
    unsigned y;
    unsigned *x = &(s->value);
    do
    {
        fetch-and-set x, y;
    }
    while (y);
}
void V (binary_semaphore *s)
{
    S->value = 0;
} 

以下哪一项是正确的?
(A)如果在 P 中禁用了上下文切换,则该实现可能不起作用
(B)可以使用一对正常的加载/存储来代替使用 fetch-and –set
(C) V的执行有误
(D)代码没有实现二进制信号量答案:(一)
说明:见https://www.geeksforgeeks.org/operating-systems-set-15/的问题3
这个问题的测验