操作系统同步试题1、 设公共汽车上,司机和售票员的活动分别是:司机的活动:启动车辆; 正常行车; 到站停车;售票员的活动: 关车门; 售票; 开车门; 在汽车不断地到站、停车、行驶过程中,这两个活动有什么同步关系?用P、V 操作实现它们的同步。 设两个信号量 S 和 C,初值为 S=0;C=0;司机: L1: 正常行车 售票员: L2: 售票到站停车 P(S)V(S) 开车门P(C) 关车门启动开车 V(C)GO TO L1 GO TO L22、桌子上有一个空盘子,允许存放一只水果,爸爸可以向盘中放苹果,妈妈向盘子中放橘子,女儿专门吃盘子中的苹果,儿子专门吃盘子中的橘子。规定当盘子空的时候一次只能放一只水果,请用信号量实现他们之间的同步与互斥。S, S1, S2 :semaphore=1,0,0;Cobegin: Process Father:Begin:L1: P(S); Put Apple; V(S1); GO TO L1;End;Process Mother:Begin:L2: P(S); Put Orange; V(S2); GO TO L2;End;Process Son:Begin:L3: P(S2); Get Orange; V(S); GO TO L1;End;Process Daughter:Begin:L4: P(S1); Get Apple; V(S); GO TO L4;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: begin Repeat Wait(S2); wait(S); wait(mutex1) if readcount=0 then wait(wmutex); readcount++; signal (mutex1); signal(S); signal(S2); reading… wait(mutex1); readcount--; if readcount=0 then signal(wmutex); signal(mutex1); until false; begin; writer: begin repeat; wait(mutex2); if writecount=0 then wait(S); writecount++; signal (mutex2); wait(wmutex); writing… signal(wmutex); wait(mutex2); writecount--;if writecount=0 then signal(S); signal (mutex2); unti...