实现进程同步时,每一个消息与一个信号量对应,进程______可把不同的消息发送出去;A.在同一信号量

题目

实现进程同步时,每一个消息与一个信号量对应,进程______可把不同的消息发送出去;

A.在同一信号量上调用P操作

B.在不同信号量上调用P操作

C.在同一信号量上调用V操作

D.在不同信号量上调用V操作

参考答案和解析
正确答案:D
解析:进程的同步是指并发进程之间存在一种制约关系,一个进程的执行依赖另一个进程的消息,当一个进程没有得到另一个进程的消息时应等待,直到消息到达才被唤醒。在使用PV操作实现进程同步应注意以下两点。
  ①用一个信号量与一个消息联系起来,当信号量的值为0时表示期望的消息尚未产生,当信号量值为非0时表示期望的消息已经存在。
  ②在用PV操作实现同步时,一个信号量与一个消息量联系在一起,当有多个消息时必须定义多个信号量;测试不同的消息是否到达或发送不同消息时,应对不同的信号调用P操作或V操作。
  在利用PV操作实现进程同步时,每一个消息与一个信号量对应,进程在不同信号量上调用P操作以测试自己需要的消息是否到达,在不同信号量上调用V操作把不同的消息发送出去。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

对于消息缓冲队列通信机制,应在消息接收者进程控制块中设立一个互斥信号量以控制相关进程对消息缓冲队列的互斥访问,该信号量的初始值通常置为()。

A.N

B.-1

C.0

D.1


整个消息队列

第2题:

常用的进程间通信方式包括管道、信号量、共享内存、消息队列


C/S;P2P

第3题:

10、实现进程同步时,每一个消息与一个信号量对应,进程()可把不同的消息发送出去。

A.在同一信号量上调用P操作

B.在不同信号量上调用P操作

C.在同一信号量上调用V操作

D.在不同信号量上调用V操作


D 解析:进程的同步是指并发进程之间存在一种制约关系,一个进程的执行依赖另一个进程的消息,当一个进程没有得到另一个进程的消息时应等待,直到消息到达才被唤醒。在使用PV操作实现进程同步应注意以下两点。 ①用一个信号量与一个消息联系起来,当信号量的值为0时表示期望的消息尚未产生,当信号量值为非0时表示期望的消息已经存在。 ②在用PV操作实现同步时,一个信号量与一个消息量联系在一起,当有多个消息时必须定义多个信号量;测试不同的消息是否到达或发送不同消息时,应对不同的信号调用P操作或V操作。 在利用PV操作实现进程同步时,每一个消息与一个信号量对应,进程在不同信号量上调用P操作以测试自己需要的消息是否到达,在不同信号量上调用V操作把不同的消息发送出去。

第4题:

4、对于消息缓冲队列通信机制,应在消息接收者进程控制块中设立一个互斥信号量以控制相关进程对消息缓冲队列的互斥访问,该信号量的初始值通常置为()。

A.N

B.-1

C.0

D.1


消息队列

第5题:

信号量机制是一种有效的实现进程同步与互斥的工具。信号量只能由P、V操作来改变。

A

B



第6题:

有一发送者进程和一接收者进程,其流程如下。s是用于实现进程同步的信号量,m是用于实现进程互斥的信号量。试完成流程图。假定缓冲区有无限多个,s和m的初值为多少?


s=0表示满缓冲的数量、即多少缓冲区里有消息
m=1表示互斥信号量
A:P(m)B:V(m)C:P(s)D:P(m)
由题意,m用于实现进程互斥,初值应为1,并应成对出现,由接收者进程的V(m)操作可知,m用于实现消息链存、取缓冲区操作的互斥,故D为P(m)。相应的,A为P(m),B为V(m)。
由发送者进程可知,当发送者将一个消息放入消息链尾后,执行V(s)操作,故s表示接收者可取消息的数量,又因s用于实现进程同步,所以接收者接受消息前,应判断是否有消息可以取,需对s执行P操作,所以C为P(s),发送者发送消息前,接收者无消息可取,s的初值应为0。

第7题:

m个进程(Pi,0≤i≤m-1)通过k个等长的缓冲区(Bi,0≤i≤k-1)向n个进程(Qi,0≤i≤m-1)发送消息。每个进程Pi发送消息的顺序与数量不受限制,每个进程Qi接收消息的顺序与数量也不受限制,但发送进程与接收进程作为两个分别的整体,要求消息发送与接收的整体次序相同。为保证消息发送与接收的充分并行,需要设置(24)。

A.3个信号量,初值分别为1,1,0

B.4个信号量,初值分别为1,0,1,0

C.3个信号量,初值分别为k,1,0

D.4个信号量,初值分别为k,1,0,1


正确答案:D
解析:本题考查的是信号量与P、V操作的概念及其在解决同步、互斥问题中的运用。信号量的值是有物理意义的。如果令信号量S的值为L,当L0时,表示可以允许有L个进程次(允许一个进程多次)连续地通过P(S)操作(意思是这个过程中没有执行V(S)操作),无须进入等待状态;当L≤0时,表示有-L个进程正在信号量S对应的等待队列中,等待由进程执行V(S)将它们释放。原则上,一个同步条件需要一个信号量来管理。本题中,缓冲区的个数有k个,这意味着发送进程可以连续地向缓冲区组发送k个消息,中间无须接收进程取走消息,只有当缓冲区全装满消息,发送进程才需要等待接收进程取走消息,以便腾空缓冲区可以再放消息。因此设立信号量S1,初值为k。此外,缓冲区有多个,为了保证存放消息的次序,需要约束发送进程,按缓冲区号顺序放入消息。因此需设置一个变量f,指示当前消息放入f号缓冲区,f的初值为零。发送进程放入一个消息后,执行f+1操作,指向下一个缓冲区。这样,变量f为m个发送进程所共享,为保证修改的互斥,需要设置一个信号量S2,初值为1。从接收进程角度来看,Qi取走消息的前提是缓冲区中必须有尚未取走的消息。刚开始时,缓冲区为空,S2的初值应为0。另一方面,为了保证取消息的顺序必须与送入消息的顺序一致,接收进程同样需要一个共享变量t来指示当前需要取走的消息所在的缓冲区号,取走消息后执行t+1操作。还要设置一个信号量S4,初值为0。这样,共需设置4个信号量S1、S2、S3\S4,初值分别为k、1、0、1。下图表示多个发送进程与多个接收进程利用一组缓冲区通信的流程。

第8题:

进程P通过缓冲区K不断向n个进程Qi(1≤i≤n)发送消息,消息大小与缓冲区K一样。为了使每个接收进程都应该接收到与发送次序一样的消息序列,需要配置(23)。

A.2个信号量,初值分别为1,0

B.2个信号量,初值分别为1,n,

C.3个信号量,初值分别为1,0,0

D.3个信号量,初值分别为1,1,0


正确答案:C
解析:本题考查的是信号量与P、V操作在复杂条件下的运用。每个信号量原则上只能用来保证一个同步关系。这里,一个同步关系是发送进程必须遵循“取后再送”。也就是说,缓冲区被送入消息后,只有n个接收进程都取到了该消息,发送进程才能再次送入消息。而不能让发送进程不顾接收情况连续地往缓冲区内送消息,导致有的消息尚未取走就被新消息覆盖。因此应该设一个信号量S1,由于刚开始时,缓冲区内没有消息,所以S1的初值应该为1。再次发送消息前执行P(S1)。另一个同步关系是接收进程必须遵循“送后再取”。也就是说,接收进程在接收到消息后,必须等到新消息送入后才能再去取,而不能连续地取,导致接收到的消息出现重复。因此,应该设一个信号量S2,由于刚开始时,缓冲区内没有消息,所以的初值应该为0。接收消息之前接收进程应该执行P(S2)。所有进程都接收了一条消息后执行V(S1)。发送进程发送一条消息后应该执行V(S2)。这看来是简单的生产者与消费者关系,其实不然。本题的问题出在接收进程有n个,而且每个接收进程接收消息的次序必须与发送次序相同。因此,应该设一个共享变量T,记录有多少个接收进程已经接收了同一条消息,T得初值为n。如果已经全部接收了消息,就可以允许发送进程发送下一条消息了,否则还不能发送。那么。既然T为所有接收进程所共享,是否也应该设一个信号量,以保证互斥呢?其实这是不必要的,因为接收进程在接收消息前必须执行P(S2),而S2的初值为0,只有在发送进程执行了V(S2)以后才只允许一个接收进程通过P(S2),如果将对T的操作放在接受进程执行P(S2)以后,互斥不会成为问题。其次,并不是所有接收进程接收了消息后都去执行V(S1),只是(对同一条消息而言)最后一个接收进程接收了消息后才去执行V(S1)。否则,随便一个接收进程接收消息后就去执行V(S1),使发送进程可以发送新消息,就会导致消息被覆盖,有的接收进程就再也不能接收到这条消息了。因此,接收进程接收了消息后,需将T减1,然后判断自己是否是(对同一条消息而言)最后一个接收到这条消息的进程,如果是(T=0),就先将T改为n,再执行V(S1),让发送进程再次发送消息;否则执行V(S2),唤醒下一个等待接收该消息的接收进程。但是,这样仅仅能够保证每一条消息只能被接收n次,并不能防止某个动作极快地接收进程连续多次接收同一条消息,而动作较慢的进程的接收机会却被抢夺。因此,必须控制不是(对同一条消息而言)最后一个接收到消息的接收进程的运行速度,避免造成接收不同消息的进程排在同一个队列(信号量S2所对应)中,让信号量S2所对应的队列中的排队元素永远是等待接收最新消息的进程。显然,这样又出现了一个新的同步条件,一个调节接收进程运行速度的同步条件。为此,应该再设置一个信号量S3,初值为0。不是(对同一条消息而言)最后一个接收到消息的接收进程在接收消息后执行V(S3),先在这个队列上等待。(对同一条消息而言)最后一个接收到该消息的进程在接收消息以后,将它们(共有n-1个进程)全部释放,共同进入对下一条消息的角逐。下图表示发送、接收进程的流程。

第9题:

信号量机制是一种有效地实现进程同步与互斥的工具。信号量只能由P、V操作来改变。()

此题为判断题(对,错)。


参考答案:对