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

📅  最后修改于: 2021-07-02 15:50:58             🧑  作者: Mango

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

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)可以使用一对正常的加载/存储,而不是使用“获取并设置”
(三)执行V是错误的
(D)代码未实现二进制信号量答案: (A)
说明:请参阅https://www.geeksforgeeks.org/operating-systems-set-15/的问题3
这个问题的测验