题:请用信号量解决以下的“过独木桥”问题:同一方向的行人可连续过桥,当某一方向有人过桥时,另一方向的行人必须等待;当某一方向无人过桥时,另一方向的行人可以过桥。

解答:
信号量brigde表示独木桥互斥访问,初值为1;变量eastcount和westcount分别表示从东西方上独木桥的行人数量,初值为0,信号量eastmutex和westmutex是对变量eastcount和westcount数据读写的保护,初值为1。

东方:
while(true){P(eastMutex);eastCount++;if(eastCount == 1) P(brigde);V(eastMutex);上桥下桥P(eastMutex);eastCount--;if(eastCount == 0) V(brigde);V(eastMutex);
}西方:
while(true){P(westMutex);westCount++;if(westCount == 1)  P(brigde);V(westMutex);上桥下桥P(westMutex);westCount--;if(westCount == 0)             V(bridge);V(westMutex);
}

操作系统-用信号量解决过独木桥问题相关推荐

  1. 【操作系统】信号量解决经典同步问题

    文章目录 1. 基本结构 2. P,V操作 3. 信号量的应用 3.1 信号量实现进程互斥 3.2 信号量实现前驱关系 4. 用信号量解经典同步问题 4.1 生产者消费者问题 4.2 读者写者问题 4 ...

  2. 操作系统-用信号量解决小和尚打水老和尚喝水问题

    题目:某寺庙,有小和尚.老和尚若干.庙内有一水缸,由小和尚提水入缸,供老和尚饮用.水缸可容纳 30 桶水,每次入水.取水仅为1桶,不可同时进行.水取自同一井中,水井径窄,每次只能容纳一个水桶取水.设水 ...

  3. 操作系统课设--使用信号量解决生产者/消费者同步问题

    山东大学操作系统课设lab3 实验三 使用信号量解决生产者/消费者同步问题(lab3) 实验目的 理解Nachos的信号量是如何实现的 生产者/消费者问题是如何用信号量实现的 在Nachos中是如何创 ...

  4. 操作系统上机作业-- 使用信号量解决生产者、计算者、消费者问题(多线程)

    pc2.c: 使用信号量解决生产者.计算者.消费者问题 • 功能和前面的实验相同,使用信号量解决 实现思路: 生产者.计算者.消费者三者之间的关系和上一个编程任务一样,不一样的是,将互斥量.条件变量封 ...

  5. java 第六次实验_操作系统第六次实验报告——使用信号量解决哲学家进餐问题...

    0 个人信息 张樱姿 201821121038 计算1812 1 实验目的 通过编程进一步了解信号量. 2 实验内容 在服务器上用Vim编写一个程序:使用信号量解决任一个经典PV问题,测试给出结果,并 ...

  6. 互斥信号量解决任务间资源共享问题

    文章目录 1 互斥信号量解决任务间资源共享问题 1.1 工作原理 1.2 任务访问流程 1.3 总结 1 互斥信号量解决任务间资源共享问题 1.1 工作原理 实例:tinyOS中的实现 1.2 任务访 ...

  7. 二值信号量解决任务间资源共享问题

    文章目录 1 二值信号量解决任务间资源共享问题 1.1 信号量定义 1.2 工作原理 1.3 任务访问流程 1.4 分析 1 二值信号量解决任务间资源共享问题 1.1 信号量定义 1.2 工作原理 实 ...

  8. 用信号量解决进程的同步与互斥

    转自:http://www.cnblogs.com/whatbeg/p/4435286.html 现代操作系统采用多道程序设计机制,多个进程可以并发执行,CPU在进程之间来回切换,共享某些资源,提高了 ...

  9. 进程的同步和互斥反映了_用信号量解决进程的同步与互斥探讨【持续更新】

    现代操作系统采用多道程序设计机制,多个进程可以并发执行,CPU在进程之间来回切换,共享某些资源,提高了资源的利用率,但这也使得处理并发执行的多个进程之间的冲突和相互制约关系成为了一道难题.如果对并发进 ...

最新文章

  1. 博士笔记 | 深入理解深度学习语义分割
  2. 【数字信号处理】周期序列 ( 周期序列定义 | 周期序列示例 )
  3. 2014.03.20入职第四天
  4. mysql inputoutput_PHP:同时使用INPUT和OUTPUT参数(不“ INOUT”)调用MySQL存储过程
  5. 前端基础-html-段落标签
  6. webpack代理解决跨域
  7. ftp ---- vsftpd安装卸载
  8. display:table与本身的table的区别
  9. 一题多解(七)—— 取两数的最大值
  10. FOR XML PATH 应用及其反向分解
  11. CompoundButton
  12. 【C语言】C语言实现泛型编程
  13. Mstar的Monitor方案OSD 菜单制作(五)——icon绘制
  14. python天天向上的力量实验报告_Python练习11:天天向上的力量
  15. PHP explode()和implode()的使用方法
  16. 南宁琅东的机器人餐厅_南宁埌东藏着一个秘密花园,每天一大波年轻男女进进出出…...
  17. 第三方登陆-------android整理知识
  18. nvme装系统不能自引导_怎么让老电脑实现UEFI启动NVME SSD固态硬盘进系统方法
  19. python下拉菜单无限营销工作室_Python生成流水线《无限拍卖》文字!
  20. because an app is obscuring a permission request,无法开启USB调试

热门文章

  1. dB单位与放大倍数关系
  2. VMware ESXi 6.7 配置iSCSI存储(分流)
  3. win7计算机怎么放在桌面上,win7系统把我的电脑放到桌面的解决办法
  4. 微信「扫一扫识物」 的背后技术揭秘
  5. 徐辉 北大计算机,徐辉的痛苦回忆_徐辉经历的那一段痛苦回忆
  6. windows操作系统知识最全
  7. Bootstrap(ui框架)
  8. Skype for Business Server-呼叫质量仪表板(一)安装与配置
  9. D. Nastia Plays with a Tree(树形dp)
  10. 网易2016实习研发工程师编程题——寻找第K大