设有三个进程R、W1、W2共享一个缓冲区B,而B中每次只能存放一个数。当B中无数时,R可将从输入设备上读入的数存放到B中。若存放到B中的是奇数,则允许W1将其取出打印;若存放到B中的是偶数,则允许W2将其取出打印。同时规定,R必须等B中的数被取出打印后才能再存放一个数;W1或W2对每次存入B中的数只能打印一次;W1和W2都有不能从空的B中取数。写出三个并发进程能正确工作的程序。

题目
设有三个进程R、W1、W2共享一个缓冲区B,而B中每次只能存放一个数。当B中无数时,R可将从输入设备上读入的数存放到B中。若存放到B中的是奇数,则允许W1将其取出打印;若存放到B中的是偶数,则允许W2将其取出打印。同时规定,R必须等B中的数被取出打印后才能再存放一个数;W1或W2对每次存入B中的数只能打印一次;W1和W2都有不能从空的B中取数。写出三个并发进程能正确工作的程序。


相似考题
更多“设有三个进程R、W1、W2共享一个缓冲区B,而B中每次只能存放一个数。当B中无数时,R可将从输入设备上读入的数存放到B中。若存放到B中的是奇数,则允许W1将其取出打印;若存放到B中的是偶数,则允许W2将其取出打印。同时规定,R必须等B中的数被取出打印后才能再存放一个数;W1或W2对每次存入B中的数只能打印一次;W1和W2都有不能从空的B中取数。写出三个并发进程能正确工作的程序。 ”相关问题
  • 第1题:

    合法的并发调度必须保持原事务的操作执行次序,请问对于事务T1和T2,如下调度哪个是合法调度。 T1:R1(A) W1(A) R1(B) W1(B) T2:R2(B) W2(B)

    A.W2(B) R1(A) W1(A) R1(B) W1(B) R2(B)

    B.R2(B) R1(A) W1(A) R1(B) W1(B) W2(B)

    C.W1(A) W2(B) R1(A) R1(B) W1(B) R2(B)

    D.R1(B) W1(B) W2(B) R1(A) W1(A) R2(B)


    可串行化( Serializable )的调度是正确的调度。可串行化的调度的定义:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行执行它们时的结果相同,称这种调度策略为可串行化的调度。

  • 第2题:

    有三个并发进程R、W1和W2,共享两个各可存放一个数的缓冲区B1、B2。进程R每次从输入设备读入一个数,若读入的是奇数,则将它存入B1中,若读入的是偶数,将它存入B2中;当B1中有数,由进程W1将其打印输出;当B2中有数,进程W2将其打印输出。试编写保证三者正确工作的程序。


    struct semaphone B1_Empty, B1_Full, B2_Empty, B2_Full; B1_Empty.value=1; B1_Full.value=0; B2_Empty.value=1; B2_Full.value=0; void R( ) { int a; While(1) { read a number a; if(a%2==1) { wait(B1_Empty); put a in B1; signal(B1_Full); } else { wait(B2_Empty); put a in B2; signal(B2_Full); } } } void W1( ) { while(1) { wait(B1_Full); print a number from B1; signal(B1_Empty); } } void W2( ) { while(1) { wait(B2_Full); print a number from B2; signal(B2_Empty); } } void main( ) { cobegin R( ), W1( ), W2( ); coend }

  • 第3题:

    2、【某学期考题】假定系统有三个并发进程read, move和print共享缓冲器B1和B2。进程read负责从输入设备上读信息,每读出一个记录后把它存放到缓冲器B1中。进程move从缓冲器B1中取出一记录,加工后存入缓冲器B2。进程print将B2中的记录取出打印输出。缓冲器B1和B2每次只能存放一个记录。要求三个进程协调完成任务,使打印出来的与读入的记录的个数,次序完全一样。请用信号量及PV操作实现这三个进程的同步。(要求设置信号量的初值)


    某一时间间隔内发生

  • 第4题:

    假定系统有三个并发进程read, move和print共享缓冲器B1和B2。进程read负责从输入设备上读信息,每读出一个记录后把它存放到缓冲器B1中。进程move从缓冲器B1中取出一记录,加工后存入缓冲器B2。进程print将B2中的记录取出打印输出。缓冲器B1和B2每次只能存放一个记录。要求三个进程协调完成任务,使打印出来的与读入的记录的个数,次序完全一样。请用信号量及PV操作实现这三个进程的同步。(要求设置信号量的初值)


    \r\n\t\r\n

  • 第5题:

    理想气体从同一始态出发分别经过恒温可逆和绝热可逆压缩至相同终态体积,则两过程的功分别以W1和W2表示,则下面正确的是

    A.|W1|>|W2|

    B.|W1|<|W2|

    C.|W1|=|W2|

    D.无法比较


    不可能达到同一终态