操作系统同步试题1、设公共汽车上,司机和售票员的活动分别是:司机的活动:启动车辆;正常行车;到站停车;售票员的活动:关车门;售票;开车门;在汽车不断地到站、停车、行驶过程中,这两个活动有什么同步关系?用P、V操作实现它们的同步。设两个信号量S和C,初值为S=0;C=0;司机:L1:正常行车售票员:L2:售票到站停车P(S)V(S)开车门P(C)关车门启动开车V(C)GOTOL1GOTOL22、桌子上有一个空盘子,允许存放一只水果,爸爸可以向盘中放苹果,妈妈向盘子中放橘子,女儿专门吃盘子中的苹果,儿子专门吃盘子中的橘子。规定当盘子空的时候一次只能放一只水果,请用信号量实现他们之间的同步与互斥。S,S1,S2:semaphore=1,0,0;Cobegin:ProcessFather:Begin:L1:P(S);PutApple;V(S1);GOTOL1;End;ProcessMother:Begin:L2:P(S);PutOrange;V(S2);GOTOL2;End;ProcessSon:Begin:L3:P(S2);GetOrange;V(S);GOTOL1;End;ProcessDaughter:Begin:L4:P(S1);GetApple;V(S);GOTOL4;End;CoEnd;2、写者优先的“读者――写者”问题:1)共享读2)互斥写、读写互斥3)写者优先于读者(一旦有写者,则后续读者必须等待,唤醒时优先考虑写者)wmutex:semaphore=1//读者与写者之间、写者与写者之间互斥使用共享数据S:semaphore=1//当至少有一个写者准备访问共享数据时,它可使后续的读者等待写完成S2:semaphor=1//阻塞第二个以后的等待读者readcount,writecount:semaphore=0,0;//当前读者数量、写者数量mutex1:semaphore=1//多个读者互斥使用readcountmutex2:semaphore=1//多个写者互斥使用writecountCobegin:Reader:beginRepeatWait(S2);wait(S);wait(mutex1)ifreadcount=0thenwait(wmutex);readcount++;signal(mutex1);signal(S);signal(S2);reading⋯wait(mutex1);readcount--;ifreadcount=0thensignal(wmutex);signal(mutex1);untilfalse;begin;writer:beginrepeat;wait(mutex2);ifwritecount=0thenwait(S);writecount++;signal(mutex2);wait(wmutex);writing⋯signal(wmutex);wait(mutex2);writecount--;ifwritecount=0thensignal(S);signal(mutex2);untilfalse;end;coend;4、有一个仓库,可以存放A、B两种产品,但要求:①每次只能存入一种产品(A或B);②A产品数量-B产品数量