原子获取并设置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
这个问题的测验