在生产者消费者问题中,消费者调用wait(mutex)(mutex是互斥信号量)阻塞的条件是()。
A.有生产者进入在往缓冲区存放产品
B.有消费者进入在从缓冲区读产品
C.缓冲区空
D.缓冲区满
第1题:
阅读以下说明和Java代码,将应填入(n)处的字句写在对应栏内。
【说明】
下面的Java程序演示了程序竞争资源(Mutex的实例对象)而引起程序死锁的一种例子。
【Java程序】
import java.applet.*;
import java.awt.*;
//此处声明一个互斥类
class Mutex { }
class A extends (1)
{
private Mutex first,second;
public A(Mutex f,Mutex s)
{
first = f;
second = s;
}
public void run()
{
//锁定first变量
(2) (first)
{
try
{ //本线程挂起,等待重新调度
Thread.sleep(1); //注意此处(1)不是小题序号
}
catch(InterruptedException e){}
System. out. println("threadA got first mutex");
(2) (second) //锁定second变量
{ //do something
System. out. println("threadA got second mutex");
} //释放second变量
} //释放first变量
}
}
class B extends (1)
{
private Mutex first,second;
public B(Mutex f,Mutex s)
{
(3) ;
second = s;
}
public void run()
{
(2) (second) //锁定second变量
{
//do something
try
{
Thread.sleep(((int)(3*Math.random()))*1000);
//本线程挂起,等待重新调度
}
catch(InterruptedException e){}
System.out.println("threadB got second mutex");
(2) (first) //锁定first变量
{
//do something
System.out.println("threadB got first mutex");
} //释放first变量
} //释放second变量
}
}
public class DeadlockExample
{
public static void main(String arg[])
{
Mutex mutexX = new Mutex();
Mutex mutexY = new Mutex();
AthreadA = new A(mutexX,mutexY);
B threadB = new B (4);
threadA.(5);
threadB.start();
}
}
第2题:
在Pthread线程包关于条件变量的使用中,pthread_mutex_init()表示的是
A.创建一个互斥量
B.等待一个互斥量
C.等待一个互斥量
D.释放一个互斥量
第3题:
此题为判断题(对,错)。
第4题:
A.0、1、n
B.1、n、0
C.n、1、0
D.1、0、n
第5题:
用P、V操作管理临界区时,把信号量mutex的初值设定为1。当有k(k>1)个进程在mutex的等待队列中时,信号量的值为
A.k
B.k 1
C.1 k
D.k
第6题:
在Pthread线程包关于条件变量的使用中,pthread_mutex_init( )表示的是()。
第7题:
设两个进程共用一个临界段的互斥信号量mutex,当mutex=-1时表示:()。
第8题:
多个并发进程使用一个互斥信号量mutex时,如果mutex=0,则表示()
第9题:
有9个生产者,6个消费者,共享容量为8的缓冲区。在这个生产者-消费者问题中,互斥使用缓冲区的信号量mutex的初值应该为()。
第10题:
1
6
8
9
第11题:
没有进程在临界区中
有一个进程在临界区中
有多个进程在临界区中
有一个进程在临界区中,另一些进程正在等待进入临界区
第12题:
pthread_mutex_init
pthread_mutex_create
pthread_mutex_begin
pthread_mutex_lock
第13题:
用P、V操作管理临界区时,把信号量mutex的初值设定为1。当mutex的等待队列中有k(k>1)个进程时,信号量的值为( )。
A)k
B)k-1
C)1-k
D)-k
第14题:
读者写者问题的解决方案如下所示。
Begin
————①————;
read_count:=read_count+1;
if read_count=1
then P(wnte);
————②————;
读文件;
————③————;
read—count:=read—count—1;
if read—count=O
then V(write);
————④————;
End
假设信号量.mutex表示对read—count共享变量所关注的互斥区进行互斥,那么,①、②、③和④处应该填写的语句是
A.P(mutex)、P(mutex)、V(mutex)、V(mutex)
B.P(mutex)、V(mutex)、P(mutex)、V(mutex)
C.V(mutex)、V(mutex)、P(mutex)、P(mutex)
D.V(mutex)、P(mutex)、V(rnutex)、P(mutex)
第15题:
A.1
B.6
C.8
D.9
第16题:
关于读者写者问题,下列叙述中哪些是错误的?
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);
}
}
A.信号量w的初值是0
B.信号量mutex的初值是1
C.计数器rc的初值是0
D.语句P(mutex)的位置可以放到语句rc = rc + 1后面
E.语句①②可以取消
A,D,E
第17题:
在有N个缓冲区的生产者消费者的问题中,下列叙述中哪些是错误的?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(mutex); consume_item(item); } }
A.信号量empty的初值为N
B.信号量full的初值为0
C.信号量mutex的初值为0
D.P(full)和P(mutex)两条语句可以颠倒顺序
E.V(mutex)和V(mutex)两条语句可以颠倒顺序
第18题:
()用来初始化一个互斥锁。
第19题:
在生产者—消费者问题中,能否将生产者进程的wait(empty)和wait(mutex)语句互换,为什么?
第20题:
对于有界缓冲区数量为n的生产者-消费者问题来说,应设置互斥信号量mutex、资源信号量full和empty,它们的初值分别应为()。
第21题:
0、1、n
1、n、0
n、1、0
1、0、n
第22题:
第23题:
一个进程入了临界段,另一个进程等待
没有一个进程进入了临界段
只有一个进程进入了临界段
两个进程都在等待
第24题:
表示没有进程进入临界区
表示有一个进程进入临界区
表示有一个进程进入临界区,另一个进程等待进入
表示有两个进程进入临界区