在有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)两条语句可以颠倒顺序
A: 信号量empty的初值为N
B: 信号量full的初值为0
C: 信号量mutex的初值为0
D: P(full)和P(mutex)两条语句可以颠倒顺序
E: V(mutex)和V(mutex)两条语句可以颠倒顺序
举一反三
- 采用信号量和P、V原语解决生产者—消费者问题时,设:信号量Empty对应空缓冲区资源,Full对应满缓冲区资源,Mutex用于访问共享缓冲池时的互斥,则下列进程描述( )是正确的。 A: 生产者:P(Empty); P(Mutex); …; V(Mutex); V(Full)消费者:P(Full); P(Mutex); …; V(Mutex); V(Empty) B: 生产者:P(Mutex); P(Empty); …; V(Mutex); V(Full)消费者:P(Full):P(Mutex); …; V(Mutex); V(Empty) C: 生产者:P(Empty); P(Mutex); …; V(Mutex); V(Full)消费者:P(Mutex); P(Full); …; V(Mutex); V(Empty D: A、B、C均不正确
- 采用信号量和P、V原语解决生产者—消费者问题时,设:信号量Empty对应空缓冲区资源,Full对应满缓冲区资源,Mutex用于访问共享缓冲池时的互斥,则下列进程描述()是正确的。 A: 生产者:P(Mutex); P(Empty); …; V(Mutex); V(Full)消费者:P(Full):P(Mutex); …; V(Mutex); V(Empty) B: C均不正确 C: 生产者:P(Empty); P(Mutex); …; V(Mutex); V(Full)消费者:P(Mutex); P(Full); …; V(Mutex); V(Empty) D: 生产者:P(Empty); P(Mutex); …; V(Mutex); V(Full)消费者:P(Full); P(Mutex); …; V(Mutex); V(Empty)
- 采用信号量和P、V原语解决生产者—消费者问题时,设:信号量Empty对应空缓冲区资源,Full对应满缓冲区资源,Mutex用于访问共享缓冲池时的互斥,则下列进程描述()是正确的。 A: 生产者:P(Mutex); P(Empty); …; V(Mutex); V(Full)消费者:P(Full):P(Mutex); …; V(Mutex); V(Empty) B: C均不正确 C: 生产者:P(Empty); P(Mutex); …; V(Mutex); V(Full)消费者:P(Mutex); P(Full); …; V(Mutex); V(Empty) D: 生产者:P(Empty); P(Mutex); …; V(Mutex); V(Full)消费者:P(Full); P(Mutex); …; V(Mutex); V(Empty)
- 在生产者-消费者问题中,如果将P(full),P(mutex)的位置互换,或者将V(full),V(mutex)互换,结果分别会如何?
- 在利用记录型信号量解决生产者-消费者问题中,假设有9个生产者,6个消费者,1个容量为8个缓冲区的缓冲池,用mutex表示对缓冲池的互斥使用,分别用empty,full分别缓冲池中空缓冲区的数量和非空缓冲区的数量,则初始状态下,信号量mutex,empty,full的初始值分别为多少?() A: mutex=8,empty=0,full=1 B: mutex=8,empty=1,full=0 C: mutex=1,empty=0,full=8 D: mutex=1,empty=8,full=0