进程P不断地从外部设备输入数据后通过缓冲区K向进程Q成批(以缓冲区大小为单位)传送,进程Q接到数据并做进一步处理后通过缓冲区T向进程S成批传送,进程R接到数据后将它们打印出来,K和T大小一样。要求打印数据的次序与

题目

进程P不断地从外部设备输入数据后通过缓冲区K向进程Q成批(以缓冲区大小为单位)传送,进程Q接到数据并做进一步处理后通过缓冲区T向进程S成批传送,进程R接到数据后将它们打印出来,K和T大小一样。要求打印数据的次序与进程P接收数据的次序一样。

为了在保证结果正确性的前提下尽可能并行工作,需要设置(23)。

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

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

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

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

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

两个进程合作完成数据计算和打印工作,计算进程未计算完就不可打印,反之亦然,双方共用一个缓冲区,写出此算法。


同步关系

第2题:

SPOOLing系统的组成如下: (1)输入和输出井; (2)输入和输出缓冲区; (3)()。

A.CPU

B.输入进程和输出进程。

C.内存

D.数据打印表


输入进程和输出进程。

第3题:

1、系统中有3个进程A,B,C,相互协作完成对一组数据的分类汇总工作。进程A循环地从一个存着整数的文件中不断地读出数据,若该整数为偶数则放入1号缓冲区;若该整数为奇数则放入2号缓冲区。进程B不断的从1号缓冲区读出数据并累计求和;进程C不断的从2号缓冲区读出数据并累计求和。每个缓冲区最多都可以放5个整数。试用信号量的PV操作实现三个进程间的同步关系。 (1)请分析三个进程之间的互斥和同步关系 (2)说明信号量的设置、初值及含义。 (3)请用P、V操作写出它们能正确并发执行的程序。


B

第4题:

1、(8分)有3个并发进程P、P1、P2合作处理数据,P从输入设备读数据到缓冲区,缓冲区可存1000个字。P1和P2功能一样,都是从缓冲区取出数据并计算,再把结果打印请用信号量PV操作实现,其中语句read()从输入设备读入20个字到缓冲区;get()从缓冲区取出20个字;comp()计算40个字并输出并得到结果1个字;printf()打印结果2个字。


BCD

第5题:

某系统在打印数据时,读数据进程、处理数据进程和打印结果进程之间的相互关系是

A.互斥关系

B.同步关系

C.前趋关系

D.后趋关系


正确答案:B

第6题:

有m个进程(P0,P1,…,Pm-1)通过n个缓冲区(B0,B1,…Bn-1)向1个进程(Q)发送数据包,每个数据包大小与缓冲区一样。要求:进程Q接收数据包的次序与发送次序一样。为保证发送进程与接收进程正确地并行工作,需要设置(23)。

A.一个信号量,初值为0

B.一个信号量,初值为1

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

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


正确答案:D
解析:本题考查进程同步与互斥方面的知识以及信号量的使用技能。原则上,为保证进程并行工作的正确性,对每一个同步或互斥条件应该设置一个信号量。首先,必须在缓冲区有内容时,接收进程才能取,也就是说,m个缓冲区中至少有1个是有数据包时,进程Q才能取,亦即送后再取。这是一个同步条件,需要一个信号量S3,刚开始时,所有缓冲区都没有数据包,接收进程不能取数据,所以该信号量的初值应该为0。其次,当m个缓冲区装满数据包时,没有空的缓冲区可以再容纳送来的数据包,必须等待接收进程Q取走一个数据包,发送进程Pi才能向它送入数据包,亦即取后再送。这又是一个同步条件,需要一个信号量S1,由于有n个缓冲区;发送进程可以在接收进程一个未取的情况下连续送n个数据包,所以它的初值应该为n。第三,为了使m个发送进程有序地向缓冲区放入数据包,不能出现两个进程同时向一个缓冲区放数据包的现象,应该将缓冲区编号,需要用一个变量代表将要放入数据的缓冲区号,每放入一个数据包,该变量加1并用n取模(保证该变量从0到n-1周而复始地变化)。这个变量是所有发送进程共享并进行修改的,因此发送进程必须互斥地访问它,所以还要是一个信号量S2,保证互斥关系,初值为1。这样,正确的答案应该是D。这里,设用于指向当前存放发送数据的缓冲区号的变量为t,初值为0;设指向将要从它那里取数据的缓冲区号的变量为f,初值也为0。下图表示发送进程与接收进程利用一组缓冲区通信的流程。

第7题:

某系统在打印数据时,读数据进程、处理数据进程和打印结果进程之间的相互关系

A.互斥关系

B.同步关系

C.前趋关系

D.后趋关系


正确答案:B

第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,P中含有20个可用缓冲区,一个输入进程将外部数据读入P,另有一个输出进程将P中数据取出并输出。若讲程每次操作均以一个缓冲区为单位,试用记录型信号量写出两个进程的同步算法,要求写出信号量的初值。


正确答案: