操作系统进程同步例题(三)汽车过桥2

操作系统进程同步例题(三)汽车过桥2

题目1: 在一个只允许单向行驶的十字路口,分别有若干由东向西,由南向北的车辆在等待通过十字路口。为了安全,每次只允许一辆车通过(比如:东到西或南到北)。当有车辆通过时其它车辆必须等待,当无车辆在路口行驶时则允许一辆车(东到西或南到北) 进入。请画出能保证安全行驶自动管理系统的逻辑框图,或者用P、V操作实现正确安全驾驶自动管理系统的伪代码。

在这里插入图片描述

PV操作题目分析步骤:

  1. 关系分析。找出题目中描述的各个进程,分析它们之间的同步、互斥关系。
  2. 整理思路。根据各进程的操作流程确定P、V操作的大致顺序。
  3. 设置信号量。并根据题目条件确定信号量初值。(互斥信号量初值一般为1,同步信号量的初始值要看对应资源的初始值是多少)

1、分析

允许单向行驶的十字路口,有由东向西和由南向北的车辆,每次只允许一辆车通过,分为两个进程,为互斥关系,需要互斥信号量mutex

2、伪代码

seamphore mutex = 1; //十字路口的互斥信号量
//从东到西
EastToWest() {
    while(1) {
        P(mutex); //申请通过
        由东向西通过;
        V(mutex); //释放
    }
}
//从南到北
SouthToNorth() {
    while(1) {
        P(mutex); //申请通过
        由南向b通过;
        V(mutex); //释放
    }
}

题目2:一条小河上有一座独木桥(如图),规定每次只允许一个人过桥。现河东和河西都有相等的人数在等待过桥,为了使两边的人都有同样的过桥机会,规定某边的一个人过桥后要让另一边的一个人过桥,即两边的人交替过桥。如果把每个过桥者看做一个进程,为保证安全,可用PV操作来管理。

(1)写出应定义的信号量及其初值。

(2)假定开始时让河东的一一个人先过桥,然后交替过桥。请用适当的PV操作,达到上述管理要求。

在这里插入图片描述

1、分析

一条小河上有一座独木桥,河东和河西等待过桥,每次只允许一个人过桥,分为两个进程,为互斥关系,两边的人交替过桥,需要两个互斥信号量mutex1和mutex2,分别表示河东和河西两边,开始时先让河东一人先过桥,故mutex1 = 1,mutex2 = 0;

2、伪代码

seamphore mutex1 = 1; //河东信号量,开始先让河东一人先过
seamphore mutex2 = 0; //河西信号量
//从东到西
EastToWest() {
 while(1) {
     P(mutex1); //河东申请通过
     由东向西通过;
     V(mutex2); //释放河西信号量
 }
}

//从西到东
WestToEast() {
 while(1) {
     P(mutex2); //河东申请通过
     由南向b通过;
     V(mutex1); //释放河西信号量
 }
}
  • 2
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值