如图所示,有三个并发进程get,copy,put,三个进程公用两个缓冲区S,T(其大小为每次存放一个数据),get将数据存放入s,copy将数据从S中取出放人工,put从T中取出数据。在将缓冲区中的上一个数据取走之前不能放入新数据,缓冲区初始化时为空。试用P,V操作实现三个进程间的同步,并写出程序描述。
【正确答案】正确答案:Semphore S—Mutex=1; Semphore T—Mutex=1; Semphore S—Empty=1; Semphore T—Empty=1; Semphore S—Full=0; Semphore T—Full=0; Data m: get( ) { produce a new data m; P(S—Empty); P(T—Mutex); 0ut(T);//释放数据 V(S—Full); V(S Mutex): } put( ) { P(T Full); P(S Mutex
【答案解析】