有桥如下图所示,车流如箭头所示,桥上不允许两车交汇,但允许同方向多辆车依次通过(即桥上可以有多个同方向的车)。用P、V操作实现交通管理以防止桥上堵塞【北京大学 1992】

解析:这个题目要解决:南、北互斥(桥上不允许两车交汇,相当于“读、写互斥”),需要设置一个互斥信号量mutex,初值为1;南、南共享(相当于“读、读共享”),套用实现“读、读共享”的模式,需要设置一个共享变量southcount,用于记录当前桥上向南行驶过桥的车辆数目,初值为0,再设置一个互斥信号量smutex,实现对southcount的互斥访问;北、北共享(也相当于“读、读共享”),套用实现“读、读共享”的模式,同理可得。

semaphore mutex = 1;// 作为桥的互斥访问信号量
semaphore smutex = 1;// 作为southcount的互斥访问信号量
semaphore nmutex = 1;// 作为northcount的互斥访问信号量
int southcount = 0;// 记录南方向的车辆的数量
int northcount = 0;// 记录北方向的车辆的数量
void south()
{while(true){wait(smutex);if(southcount == 0)wait(mutex);southcount++;signal(smutex);// 南方车辆通过wait(smutex);southcount--;if(southcount == 0)signal(mutex);signal(smutex);}
}
void north()
{while(true){wait(nmutex);if(northcount == 0)wait(mutex);northcount++;signal(nmutex);// 北方车辆通过wait(nmutex);northcount--;if(northcount == 0)signal(mutex);signal(nmutex);}
}

“读者--写者”问题练习题目:南北桥问题相关推荐

  1. 【操作系统】读者写者问题——写者优先、寿司店问题 题目+答案

    噩梦来啦~ 一]讲解 同步:多进程按一定顺序执行 互斥:多进程操作同一个临界资源 信号量>0,说明它空闲.所测试的线程可以锁定而使用它. 信号量=0,说明它被占用,测试的线程要进入睡眠队列中,等 ...

  2. 【操作系统-进程】PV操作——读者写者问题

    文章目录 读者写者问题万能模板 万能模板 1--读进程优先 万能模板 2--读写公平法 万能模板 3--写进程优先 题目 1:南北过桥问题 题目 2:录像厅问题 题目 3:更衣问题 读者写者问题万能模 ...

  3. pc解读4:初识南北桥

    前段时间找了一些cpu接口方面的书,以为程序员只要了解了cpu的接口,甚至了解了cpu的指令集就可以写好程序甚至成为系统分析员了,后来觉得还是不够,看了下计算机各组件的连接拓扑图,才知道南北桥也是相当 ...

  4. 操作系统(二十六)读者写者问题

    2.3.9 读者写者问题 读者写者问题是十分经典的进程同步的问题,问题描述如下:读进程与写进程共享文件,但是写进程必须与其他进程互斥发生. 根据以上的题目要求我们可以得出一些互斥关系:写进程与写进程互 ...

  5. 2.3.6 操作系统之进程同步与互斥经典问题(生产者-消费者问题、多生产者-多消费者问题、吸烟者问题、读者-写者问题、哲学家进餐问题)

    文章目录 0.前言 1.生产者-消费者问题 (1)问题描述 (2)问题分析 (3)如何实现? (4)实现互斥的P操作一定要在实现同步的P操作之后 (5)知识回顾与重要考点 2.多生产者-多消费者问题 ...

  6. 操作系统【信号量集机制、“读者-写者”问题】

    0.信号量机制应用引导篇.flv 1.信号量集机制解决读写问题深入分析.flv   03:00 2."读者-写者"问题之"顺序执行".flv   07:32 3 ...

  7. 秒杀多线程第十一篇 读者写者问题

    与上一篇<秒杀多线程第十篇 生产者消费者问题>的生产者消费者问题一样,读者写者也是一个非常著名的同步问题.读者写者问题描述非常简单,有一个写者很多读者,多个读者可以同时读文件,但写者在写文 ...

  8. 四、操作系统——读者写者问题(详解)

    一.问题描述: 二.需要满足的条件: 写进程与写进程之间必须互斥的写入数据(因为如果两个写进程同时对共享数据中的区域A中的数据进行写操作的话,会导致数据错误覆盖的问题) 写进程与读进程之间必须互斥的访 ...

  9. 读者写者问题详解 操作系统

    2.16 读者写者问题 抽象解释 多个进程访问一个共享的数据区 读者(读进程)只能读数据,写者(写进程)只能写数据 适用于数据库.文件.内存.寄存器等数据区的访问模型 如12306购票系统,由于用户量 ...

最新文章

  1. 读后感与机翻《从视频中推断力量和学习人类效用》
  2. 将本地的MS SQL Server数据导入到远程服务器上
  3. 黑盒測试(一)-----边界值測试
  4. 使用多线程会加快文件读取速度吗?
  5. 旋转矩阵求旋转角度_(加餐)欧拉角及矩阵旋转
  6. Xshell代理访问外网或者公司的内网
  7. 加投35000瓶原价茅台 天猫双11今晚8点开售
  8. 视频+案例,玩转LightGBM
  9. 豆瓣关于计算机视觉的书评及介绍
  10. oracle 表或视图不存在_sqlalchemy反射不存在主键的表引发的问题
  11. 如何在github用git Pages上传自己在本地做的项目?
  12. 黑马vue实战项目-(二)用户列表开发
  13. HTML实现页面注册
  14. mac忘记mysql初始密码怎么办_Mac下忘记Mysql密码重新设置密码的图文教程
  15. 重要的产品分析模型:AARRR模型
  16. Nagios被监控端简单搭建
  17. 响应式扩展_响应式和无限扩展的JS动画
  18. 微软 WP 手机刷机工具已恢复正常
  19. ArcMap客户端——将shp属性表导出为excel
  20. Java基础学习经验分享

热门文章

  1. 计算机病毒英文文献,关于计算机病毒的英文文献和翻译
  2. 如果她的确睡自己床上
  3. ios如何设计图标_50 iOS图标设计,第1卷
  4. 电商管理系统原型分享- E-Market
  5. js计算农历节气的插件
  6. 浅学 WebAssembly(实现视频实时滤镜效果)
  7. 秘籍:打造自己的Flash游戏
  8. 通过定时器的Timer方式替代delay/Hal_delay函数进行定时
  9. hexo评论_hexo使用畅言评论系统
  10. Python小甲鱼学习笔记31-35