当前位置:首页 > 四级网络工程师 > [1] > 正文内容

[1][34][多选]在有 N 个缓冲区的生产者 - 消费者问题中,下列叙述中哪些是错误的

[1]9个月前 (01-18)
producer()
{
    int item;
    while (TRUE) {
        item = produce_item();
        P(empty);
        P(mutex);
        insert_item(item);
        V(mutex);
        V(full);
    }
}

consumer()
{
    int item;
    while (TRUE) {
        P(full);
        P(mutex);
        item = remove_item();
        V(mutex);
        V(empty);
        consume_item(item);
    }
}

信号量 empty 的初始值为 N

信号量 full 的初始值为 0

信号量 mutex 的初始值为 0

P(full)和 P(mutex)两条语句可以颠倒顺序

V(full)和 V(mutex)两条语句可以颠倒顺序


答案


信号量 mutex 的初始值为 0

P(full)和 P(mutex)两条语句可以颠倒顺序


解析


empty 信号量是表示的是空缓冲区数目,这里为 N,所以其初始值为 N;full 信号量是表示的是满缓冲区数目,这里为 0,即其初始值为 0;mutex 信号量是用于实现互斥访问,初始值为 1。P(full和 P(mutex两条语句若颠倒顺序,可能导致死锁;V(full和 V(mutex两条语句若颠倒顺序,可能导致错误。故本题答案选 CD。涉及考点为第 4 章 并发与同步。


转载请注明出处。

本文链接:http://pythonopen.com/?id=1754

相关文章

[1][29][单选]下列关于死锁与安全状态的叙述中,哪一个是正确的

死锁状态一定是不安全状态从安全状态有可能进入死锁状态不安全状态就是死锁状态死锁状态有可能是安全状态答...

[1][30][单选]假设系统由相同类型的 7 个资源被 3 个进程共享,若要使系统不会死锁,每个进程最多可以申请的资源个数是

1234答案3解析7 个资源全部分给 3 个进程,每个进程可以获取 2 个资源,此外还剩一个资源,因...

[1][40][多选]当检测到系统发生死锁之后,解除死锁的方法是

剥夺某些进程所占用的资源修改注册表撤销某些进程进入安全模式重新启动系统function addChe...