1、测量控制系统中的数据采集任务把所采集的数据送一单缓冲区;计算任务则从该缓冲区中取出数据并进行计算。试写出利用信号量机制实现两者共享单缓冲区的同步算法。VarSempty,Sfull:semaphore:=1,0BeginParbeginCollection:beginrepeat采集一个数据;wait(Sempty);数据放入缓冲区;signal(Sfull);untillfalse;end;Compute:beginrepeatwait(Sfull);从缓冲区取出数据;signal(Sempty);计算;`untilfalse;end;ParendEnd2、有一阅览室,共有100个座位。读者进入时必须先在一种登记表上登记,该表为每一座位列一个表目,包括座号和读者姓名。读者离开时要注销掉登记内容。试用wait和signal原语描述读者进程的同步问题。varmutex,readcount:semaphore:=1,100;BeginParbeginProcessReader:beginrepeatwait(readcount);wait(mutex);填入座号和姓名完成登记;signal(mutex);阅读wait(mutex)删除登记表中的相关表项,完成注销signal(mutex);signal(readcount);untilfalse;end;parend;End;1)、桌上有一空盘,只允许放一个水果,爸爸专向盘中放苹果,妈妈专向盘中放桔子;女儿专吃盘中的苹果,儿子专吃盘中的桔子;试用wait和signal原语实现爸爸、妈妈、女儿、儿子之间的同步问题。varSempty,Sapple,Sorange,:semaphore:=1,0,0;beginparbeginFather:beginrepeatwait(Sempty);putappleintray;signal(Sapple);untilfalse;end;Mother:beginrepeatwait(Sempty);putorangeintray;signal(Sorange);untilfalse;end;Son:beginrepeatwait(Sorange);takeorange;signal(Sempty);untilfalse;end;Daughter:beginrepeatwait(Sapple);takeapple;signal(Sempty);untilfalse;end;parend;end;1、在4×100米接力赛中,4个运动员之间存在如下关系,运动员1跑到终点把接力棒交给运动员2;运动员2一开始处于等待状态,在接到运动员1传来的接力棒后才能往前跑,他跑完100米后交给运动员3,运动员3也只有在接到运动员2传来的棒后才能跑,他跑完100米后交给运动员4,运动员4接到棒后跑完全程。请试用信号量机制对其上过程进行分析。vars1,s2,s3:semaphpre:=0,0,0;beginparbeginAthlete1:beginRun100m;signal(s1);end;Athlete2:beginwait(s1);Run100m;signal(s2);end;Athlete3:beginwait(s2);Run100m;signal(s3);end;Athlete4:beginwait(s3);Run100m;end;parend;end2、在公共汽车上,司机和售票员各行其职,司机负责开车和到站停车;售票员负责售票和开、关车门;当售票员关好车门后驾驶员才能开车行驶。试用wait和signal操作实现司机和售票员的同步。vars1,s2:semaphore:=0,0;beginparbeginProcessDriverbeginrepeatgoright;stopbus;signal(s2);wait(s1);untilfalse;end;ProcessBookingClerk;beginrepeatticketing;wait(s2);openthedoor;closethedoor;signal(s1);untilfalseend;parend;end;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、有一只铁笼子,每次只能放入一只动物,猎手向笼子里放入老虎,农民向笼子里放入猪;动物园等待取笼子里的老虎,饭店等待取笼子里的猪。现请用wait和signal操作写出能同步执行的程序。varSempty,Stiger,Spig,:semaphore:=1,0,0;beginparbeginHunter:beginrepeatwait(Sempty);puttigerincage;signal(Stiger);untilfalse;end;Farmer:beginrepeatwait(Sempty);putpigincage;signal(Spig);untilfalse;end;Zoo:beginrepeatwait(Stiger);taketiger;signal(Sempty);untilfalse;end;Hotel:beginrepeatwait(Spig);takepig;signal(Sempty);untilfalse;end;parend;end;