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

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

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

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

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

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

进程同步算法习题课【例题1】分析: 为保证车辆行驶安全,售票员必须关好车门,然后通知司机启动车辆,在行驶过程中售票员不能打开车门,待车到站停稳后,司机通知售票员才能打开车门,如此不断重复。为此,须设置两个信号量S1,S2用来控制司机和售票员的行为,初值都为0。 解:算法如下:【例题2】解:思考题: 如果S和T是由多个缓冲区组成的缓冲池,上述算法将如何修改?【例题3】 分析:设置一个信号量S表示空盘子数,一个信号量So表示盘中桔子数,一个信号量Sa表示盘中苹果数,初值分别为1,0,0。解:算法如下:【例题4】解:例题5分析:每个缓冲区只要写一次但要读n2次,因此,可以看成n2组缓冲区,每个发送者要同时写n2个缓冲区,而每个接收者只要读它自己的缓冲区。 Sin[n2]=m;表示每个读进程开始有m个空缓冲区。 Sout[n2]=0;表示每个读进程开始有0个可接收的消息。 解:Bi: while(1) { wait(Sout[i]); 从缓冲区取数 signal(Sin[i]); }向目标前进一步:Bi: while(1) { wait(Sout[i]); wait(mutex); 从缓冲区取数 signal(mutex); signal(Sin[i]); };到达目标Bi: while(1) { wait(Sout[i]); wait(mutex); 从缓冲区取数 signal(mutex); signal(Sin[i]); };进程同步算法补充作业:3.有桥如下图所示,车流方向如箭头所示。假设桥上不允许两车交会,但允许同方向多辆车依次通过(即桥上可有多个相同方向行驶的车辆),试用wait和signal操作实现桥上的交通管理。