简介:因C语言结交编程,随后转到计算机专业,有幸拿过一些国奖、省奖...已保研。目前正在学习C++/Linux/Python
学习经验:扎实基础 + 多做笔记 + 多敲代码 + 多思索 + 学好英文!
6.4 读者写者问题
1、在读者写者问题中,能同时执行读写的是()。CA.读者和写者B.不同写者C.不同读者D.都不能
2、在读者优先的读者写者问题中,读者可以步入读的前提是()。A、BA.没有读者和写者在读写B.有读者在读C.有写者在写D.有写者在等
3、在读者代码rc--;If (rc==0)V(W)中V(W)可能唤起其它读者。×
解释:执行到这一步 说明早已是最后一个读者了
4、读者优先的读者写者问题中,一个写者先来,但有可能比后来的读者后运行。√
5、只有没有读者在读,写者就可以步入写。×
解释:如果有另个一个写者在写,这个写者也还是不能步入写。
6.5 哲学家用餐问题
1、哲学家用餐问题的解决方案如下:
semephore *chopstick[5];
semaphore *seat;
哲学家 i:
……
P(seat);
P(chopStick[i]);
P(chopStick[(i + 1) % 5]);
吃饭
V(chopStick[i]);
V(chopStick[(i + 1) % 5]);
V(seat);
复制代码
解释:
其中,信号量seat的终值为()。CA.0B.1C.4D.5
2、在哲学家用餐问题中,有以下代码:
P(m);
test(i);
V(m);
复制代码
在test[i]中的临界资源包括()。BA.state[i]B.state[(i+1)%5]C.ph[i]D.其它
3、当信号量的值等于2时,表示()。B、CA.该信号量上有2个进程等待B.有2个信号量可用C.该讯号量是同步信号量D.该讯号量是二值信号量
4、如果给5个哲学家6根牙签,则不会有死锁发生。√
5、互斥信号量的P和V操作通常在不同进程中。×
6.6 管程
1、引入条件变量后的管程内部,不存在()。CA.条件队列B.紧急队列C.入口队列D.条件变量
2、进程P调用wait操作唤起进程Q后,P等待直至Q离开管程才准许的管程是()。AA.Hoare管程B.MESA管程C.Hansen管程D.系统管程
解释:
3、每个管程中只能有一个条件变量。×
4、在Hoare管程中,当一个管程内的进程P调用x.wait()时,如果紧急队列非空,则会唤起第一个入口队列中的等待进程,P步入x的条件队列。×
解释:
5、Linux和Windows系统中都有信号量同步机制。√