您好,欢迎访问三七文档
一、CDABADAB二、进程同步1.假设有3个并发进程P,Q,R,其中P负责从输入设备上读入信息,并传送给Q,Q将信息加工后传送给R,R负责打印输出。进程P,Q共享一个有m个缓冲区组成的缓冲池;进程Q,R共享一个有n个缓冲区组成的缓冲池(假设缓冲池足够大,进程间每次传输信息的单位均小于等于缓冲区长度),请写出满足上述条件的并发程序。(12分)varmutex1,mutex2,Sip,Siq,Soq,Sor:semaphore:=1,1,m,0,n,0;beginparbeginProcessPbeginrepeat读入信息wait(Sip);wait(mutex1);数据放入缓冲区signal(mutex1);signal(Siq);untilfalseend;ProcessQbeginrepeatwait(Siq);wait(mutex1);从缓冲区中取出数据signal(mutex1);signal(Sip);数据处理〉wait(Soq);wait(mutex2);处理后的数据放入缓冲区signal(mutex2);signal(Sor);untilfalseend;ProcessRrepeatwait(Sor);wait(mutex2);把数据送入打印机完成打印;signal(mutex2);signal(Soq);untilfalseendparendend2.设置一个信号量s=2,表示盘子有两个空位置。供爸爸和妈妈进程共享。设置s1=0表示苹果的数量,s2=0表示桃子的数量。设置mutex=1用来实现所有进程对盘子互斥访问。Father:BeginRepeatWait(s);Wait(mutex);放苹果Signal(mutex);Signal(s1)UntilfalseEndMother:BeginRepeatWait(s);Wait(mutex);放桃子Signal(mutex);Signal(s2)UntilfalseEndSon:BeginRepeatWait(s1);Wait(mutex);取苹果Signal(mutex);Signal(s)UntilfalseendDaughter:BeginRepeatWait(s2);Wait(mutex);取桃子Signal(mutex);Signal(s)Untilfalseend四、应用题1、2、(1)安全。(2)不能(3)能(4)不能过程略
本文标题:期中考试参考答案2
链接地址:https://www.777doc.com/doc-5071897 .html