进程同步 三人过河问题 Linux,【2017年整理】进程同步典型例题(操作系统).doc

【2017年整理】进程同步典型例题(操作系统)

进程同步练习题

1. 在公共汽车上,司机和售票员的工作流程如图所示。为保证乘客的安全,司机和售票员应密切配合协调工作。请用信号量来实现司机与售票员之间的同步。

图 司机和售票员工作流程图

约束:怎么密切配合协调工作才能保证安全呢?

关车门之后再启动车辆;利用前驱图解释

到站停车之后再开车门;

根据约束定义信号量;

关车门和启动车辆需要一个信号量进行同步S1;到站停车和开车门之间需要一个信号量进行同步S2;

建立几个进程呢?

为司机建立一个进程Driver;

为售票员建立一个进程Conductor;

Driver:

Repeat

启动车辆;

正常行驶;

到站停车;

Until false;

Conductor:

Repeat

关车门;

售票;

开车门;

Until false;

加入同步关系:

Var s1,s2:semorphore=0,0;

Driver:

Repeat

Wait (s1);

启动车辆;

正常行驶;

到站停车;

Signal(s2)

Until false;

Conductor:

Repeat

关车门;

Signal(s1);

售票;

Wait(s2)

开车门;

Until false;

main()

{

Driver();

Conductor ();

}

2. 桌子上有一只盘子,盘子中只能放一只水果。爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果。用PV操作实现他们之间的同步机制。

分析:

①约束:

爸爸和妈妈竞争盘子,往盘子放水果,爸爸在放时,妈妈等待,或者相反;

爸爸和女儿要同步,即爸爸放完苹果之后通知女儿来吃;同时女儿吃完之后要通知盘子可用;

妈妈和儿子要同步,即妈妈放完橘子之后通知儿子来吃;同时儿子吃完之后要通知盘子可用;

② 经上述分析可知:

需要3个信号量:S1表示临界资源盘子,初值1;爸爸和女儿需要一个信号量进行同步S2=0

妈妈和儿子需要一个信号量进行同步S3=0;

建立进程?

爸爸: 妈妈: 女儿: 儿子:

Repeat repeat repeat repeat

取一个苹果; 取一个橘子; 从盘子取一个苹果; 从盘子取一个橘子;

放入盘子; 放入盘子 吃苹果; 吃橘子;

Until false; Until false; Until false; Until false;

④ 加入同步关系。

爸爸: 妈妈: 女儿: 儿子:

Repeat repeat repeat repeat

wait(S2); wait(S3);

取一个苹果; 取一个橘子; 从盘子取一个苹果; 从盘子取一个橘子;

Wait(S1); Wait(S1); signal(S1); signal(S1);

放入盘子; 放入盘子 吃苹果; 吃橘子;

Signal(S2); Signal(S3);

Until false; Until false; Until false; Until false;

3. a,b两点之间是一段东西向的单行车道,现要设计一个自动管理系统,管理规则如下:

(1)当ab之间有车辆在行驶时同方向的车可以同时驶入ab段,但另一方向的车必须在ab段外等待;

(2)当ab之间无车辆在行驶时,到达a点(或b点)的

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值