预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共20页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

进程同步练习题1.在公共汽车上,司机和售票员的工作流程如图所示。为保证乘客的安全,司机和售票员应密切配合协调工作。请用信号量来实现司机与售票员之间的同步。图司机和售票员工作流程图约束:怎么密切配合协调工作才能保证安全呢?关车门之后再启动车辆;利用前驱图解释到站停车之后再开车门;根据约束定义信号量;关车门和启动车辆需要一个信号量进行同步S1;到站停车和开车门之间需要一个信号量进行同步S2;建立几个进程呢?为司机建立一个进程Driver;为售票员建立一个进程Conductor;Driver:Repeat启动车辆;正常行驶;到站停车;Untilfalse;Conductor:Repeat关车门;售票;开车门;Untilfalse;加入同步关系:Vars1,s2:semorphore=0,0;Driver:RepeatWait(s1);启动车辆;正常行驶;到站停车;Signal(s2)Untilfalse;Conductor:Repeat关车门;Signal(s1);售票;Wait(s2)开车门;Untilfalse;main(){Driver();Conductor();}2.桌子上有一只盘子,盘子中只能放一只水果。爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果。用PV操作实现他们之间的同步机制。分析:①约束:爸爸和妈妈竞争盘子,往盘子放水果,爸爸在放时,妈妈等待,或者相反;爸爸和女儿要同步,即爸爸放完苹果之后通知女儿来吃;同时女儿吃完之后要通知盘子可用;妈妈和儿子要同步,即妈妈放完橘子之后通知儿子来吃;同时儿子吃完之后要通知盘子可用;②经上述分析可知:需要3个信号量:S1表示临界资源盘子,初值1;爸爸和女儿需要一个信号量进行同步S2=0妈妈和儿子需要一个信号量进行同步S3=0;建立进程?爸爸:妈妈:女儿:儿子:Repeatrepeatrepeatrepeat取一个苹果;取一个橘子;从盘子取一个苹果;从盘子取一个橘子;放入盘子;放入盘子吃苹果;吃橘子;Untilfalse;Untilfalse;Untilfalse;Untilfalse;④加入同步关系。爸爸:妈妈:女儿:儿子:Repeatrepeatrepeatrepeatwait(S2);wait(S3);取一个苹果;取一个橘子;从盘子取一个苹果;从盘子取一个橘子;Wait(S1);Wait(S1);signal(S1);signal(S1);放入盘子;放入盘子吃苹果;吃橘子;Signal(S2);Signal(S3);Untilfalse;Untilfalse;Untilfalse;Untilfalse;3.a,b两点之间是一段东西向的单行车道,现要设计一个自动管理系统,管理规则如下:(1)当ab之间有车辆在行驶时同方向的车可以同时驶入ab段,但另一方向的车必须在ab段外等待;(2)当ab之间无车辆在行驶时,到达a点(或b点)的车辆可以进入ab段,但不能从a点和b点同时驶入;(3)当某方向在ab段行驶的车辆驶出了ab段且暂无车辆进入ab段时,应让另一方向等待的车辆进入ab段行驶。请用信号量为工具,对ab段实现正确管理以保证行驶安全。分析:①约束:ab两点的单行车道是一种临界资源;两端的车辆对该资源进行竞争;同步关系:(1),(3);②经上述分析可知:首先,设置互斥信号量Sab=1,用于a、b点的车辆互斥进入ab段;然后,分别设置共享变量ab=0用于记录当前ab段上由a点进入的车辆数量;共享变量ba=0用于记录当前ab=段上由b点进入车辆的数量;最后,设置互斥信号量S1=1用于ab段的车辆互斥访问共享变量ab;设置互斥信号量S2=1用于ba段的车辆互斥访问共享变量ba③建立进程?semaphoreS1=1,S2=1,Sab=1;intab=ba=0;Pab:pba:RepeatrepeatWait(S1)Wait(s2)abcount=abcount+1;bacount=bacount+1;ifabcount==1thenwait(sab)ifbacount==1thenwait(sab)signal(S1)signal(s2)进入车道行驶;进入车道行驶;Wait(s1)Wait(s2)abcount=abcount-1;bacount=bacount-1;ifabcount==0thensignal(sab)ifbacount==0thensignal(sab)signal(s1)signal(s2);untilfalse;untilfalse;main(){Pab();Pba();}5.一条河上架设了由若干个桥墩组成的一座桥。若一个桥墩只能站一个人,过河的人只能沿着桥向前走而不能向后退。过河时,只要对岸无人过,就可以过。但不