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

[2][34][多选]关于读者写者问题,下列叙述中哪些是错误的

[2]1年前 (2025-01-21)
reader()
{
    while (TRUE) {
        P(mutex);
        rc = rc + 1;
        if (rc == 1) P(w);
        V(mutex); ①
        读操作;
        P(mutex); ②
        rc = rc - 1;
        if (rc == 0) V(w);
        V(mutex);
        其他操作;
    }
}

writer()
{
    while (TRUE) {
        P(w);
        写操作;
        V(w);
    }
}


信号量w的初值是0

信号量mutex的初值是1

计数器rc的初值是0

语句P(mutex的位置可以放到语句rc = rc + 1后面

语句①②可以取消


答案


信号量w的初值是0

语句P(mutex的位置可以放到语句rc = rc + 1后面

语句①②可以取消


解析


1. 信号量w是为了互斥访问写操作,初始值应为1。因为写操作是互斥的,同一时间只能有一个写操作进行,当有写操作时,需要将w信号量减1,使其变为0,阻止其他写操作进入,当写操作完成后,将w信号量加1,允许其他写操作进行。

2. P (mutex 是为了互斥访问rc这一临界资源,不能随意更改执行顺序。rc用于记录正在进行读操作的读者数量,通过mutex信号量来保证对rc的操作是原子性的,即不会被其他进程或线程打断。

3. 语句①②的存在使得多个reader可以同时访问,不能取消。这部分代码实现了读写互斥和多读互斥的功能。当第一个读者进入时,通过P (w操作来阻止写操作,当最后一个读者离开时,通过V (w操作来允许写操作,保证了读写之间的正确同步。故本题答案选择ADE选项。

【涉及考点】

第4章 并发与同步


转载请注明出处。

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

相关文章

[2][6][单选]在多道程序设计系统中,下列能并行工作的是

CPU与外部设备内存和外存用户与应用程序CPU和内存答案CPU与外部设备解析所谓多道程序设计指的是允...

[2][10][单选]在采用非抢占式调度的操作系统中,不能引起新进程调度的事件是

正在运行的进程用完时间片正在运行的进程出错正在运行的进程等待I/O事件新创建的进程进入就绪队列答案新...

[2][12][单选]对于信号量S,执行一次P(S)操作后,S的值

变为1不变减1减指定数值答案减1解析PV操作由P操作原语和V操作原语组成原语是不可中断的过程对信号量...

[2][21][单选]下列哪一种方法不能用于提高文件目录检索效率

限制子目录个数引入当前目录采用相对路径文件名将目录项分解答案限制子目录个数解析引入当前目录可以减少路...

[2][25][单选]下列各项时间中,哪一项不会影响磁盘读写性能

寻道时间旋转延时传输时间调度时间答案调度时间解析磁盘访问时间分为寻道时间、旋转延时和传输时间。寻道时...

[2][30][单选]死锁定理的描述是

当且仅当当前状态的资源分配图是可完全化简的当且仅当当前状态的状态转换图是不可完全化简的当且仅当当前状...