[5分问题]
一种。某个处理器提供“测试并设置”指令,其用法如下:
TEST register, flag
该指令原子地复制标志以注册,并将标志设置为1。使用该指令,给出用于在关键区域实现进入和退出代码的伪代码。
b。考虑使用大小为1的缓冲区解决生产者-消费者问题的以下解决方案。假定count的初始值为0。还要假设对count的测试和对count的赋值是原子操作。
Producer:
Repeat
Produce an item;
if count = 1 then sleep;
place item in buffer.
count = 1;
Wakeup(Consumer);
Forever
Consumer:
Repeat
if count = 0 then sleep;
Remove item from buffer;
count = 0;
Wakeup(Producer);
Consume item;
Forever;
说明在此解决方案中,两个进程可能同时处于休眠状态。回答:
解释:
这个问题的测验
如果您在以上帖子中发现任何错误,请在下面发表评论