文章目录

  • 1 哲学家问题
  • 2 生产者-消费者问题
    • 2.1 有限的共享缓冲区数据
    • 2.2 算法解决
  • 3 读写问题
    • 3.1 概述
    • 3.2 伪码描述

1 哲学家问题


每个人都要拿起左右两根筷子,才能就餐。
算法描述:

筷子可以当作临界资源,我们对它进行PV操作。
每次拿起两根筷子,是两次P操作,-》eat,放下两根筷子是两次V操作。
可能产生的问题解决:

若是五个哲学家同时拿左边筷子,他们下一步都要拿右边的筷子,会造成死锁。
而通过上面三种方案,能保证至少一个哲学家可以就餐。

2 生产者-消费者问题

2.1 有限的共享缓冲区数据


共享就要同步,同时只有一个人(P or C)能访问缓冲区-互斥。

2.2 算法解决


有这样三个信号量。

先判断P(empty)代表生产一个,再判断P(mutex)是否有人在访问。

对于上述问题,我们先判断缓冲区数量也就是同步,再判断是否有人访问就是互斥。
满足对前后相连的两个不同P,同步P操作再互斥P操作前。

3 读写问题

3.1 概述


读和读无互斥。
写和写互斥很简单。
我们下面讨论读者-写者问题。

3.2 伪码描述



Rmutex是对Rcount进行保护,保证只有一个访问这个共享变量。
如果Rcount==0,就代表是进入的第一个读者,此时读者可以继续读(不进行P(wmutex)),那么其他写者必须等待,等到count–==0时,读者进行n次V操作,此时写者才可以继续写。

【操作系统】Classical Problems of Synchronization-信号量机制相关推荐

  1. 操作系统课设之基于信号量机制的并发程序设计

    前言 课程设计开始了,实验很有意思,写博客总结学到的知识 白嫖容易,创作不易,学到东西才是真 本文原创,创作不易,转载请注明!!! 本文链接 个人博客:https://ronglin.fun/arch ...

  2. 操作系统(二十一)信号量机制

    2.3.4 信号量机制 在前两节中我们分别学习了用软件方式以及硬件方式实现互斥访问,但是他们或多或少的存在一些问题,1965年荷兰的一名学者迪杰斯特拉(是的,就是那个男人)提出了信号量机制,有效的解决 ...

  3. 王道操作系统考研笔记——2.3.4 信号量机制

    文章目录 2.3.4 信号量机制 2.3.4.1 引入 2.3.4.2 整型信号量 2.3.4.3 记录型信号量 2.3.4.4 小结 2.3.4 信号量机制 知识总览 在1965年,荷兰学着Dijk ...

  4. 二、操作系统——用信号量机制实现进程互斥、同步、前驱关系(详解)

    一.什么是进程同步? 二.什么是进程互斥? 临界资源:一个时间段内只允许一个进程使用的资源 为了实现对临界资源的互斥访问,同时保证系统整体性能,需要遵循以下原则: 空闲让进.临界区空闲时,可以允许一个 ...

  5. 8 操作系统第二章 进程管理 信号量 PV操作 用信号量机制实现 进程互斥、同 步、前驱关系

    文章目录 1 信号量机制 1.1 整形信号量 1.2 记录形信号量 1.3 信号量机制小结 2 用信号量机制实现进程互斥.同 步.前驱关系 2.1 信号量机制实现进程互斥 2.2 信号量机制实现进程同 ...

  6. 【操作系统】进程管理(五)—— 信号量机制

    [操作系统]进程管理(五)-- 信号量机制 前言 一.信号量机制 信号量机制--整型信号量 信号量机制--记录型信号量 二.用信号量机制实现进程互斥.同步.前驱关系 信号量机制实现进程互斥 信号量机制 ...

  7. 【操作系统·考研】信号量机制/PV操作

    在操作系统引入进程后,一方面,系统中的多道程序可以并发执行,不仅有效改善资源利用率,而且显著提高系统的吞吐量.另一方面,如果不对多个进程的运行进行妥善管理,必然会因为这些进程对系统资源的无序争夺给系统 ...

  8. 操作系统-信号量机制

    信号量机制 用户进程可以通过使用操作系统提供的一对原语来对信号量进行操作,从而很方便的实现了进程互斥.进程同步. 什么是信号量? 信号量其实就是一个变量(可以是一个整数,也可以是更复杂的记录型变量), ...

  9. 操作系统(三)| 进程同步详解(主要任务、制约关系、临界资源、临界区、同步机制遵循规则、信号量机制、信号量的应用)

    文章目录 进程的同步基本概念 进程同步的主要任务 进程间的制约关系 临界资源 临界区 同步机制应遵循的规则 信号量机制 整型信号量 记录型信号量 ❤❤❤ AND型信号量 信号量的应用 实现进程互斥 实 ...

  10. 操作系统(二十二)用信号量机制实现进程互斥、同步、前驱关系

    2.3.5 用信号量机制实现进程互斥.同步.前驱关系 目录 2.3.5 用信号量机制实现进程互斥.同步.前驱关系 2.3.5.1 用信号量机制实现进程互斥 2.3.5.2 用信号量机制实现进程同步 2 ...

最新文章

  1. 【Groovy】集合遍历 ( 使用集合的 findAll 方法查找集合中符合匹配条件的所有元素 | 代码示例 )
  2. iReport工具的使用(三)
  3. Nginx出现403 forbidden
  4. 【算法】蓝桥杯dfs深度优先搜索之排列组合总结
  5. go 多行字符串_Go语言基本功,了解Go语言基础语法
  6. 最少步数(信息学奥赛一本通-T1330)
  7. ReactiveCocoa详解
  8. Spring MVC测试框架详解——服务端测试
  9. ehtools:一款WiFi渗透框架
  10. net configuration assistant 没反应_@尾款人:错过这条推送,7000多块就没了……
  11. 管家婆登录服务器未响应,管家婆辉煌登录点击下一步没有反应解决办法
  12. AutoRun机制详解
  13. 为知笔记使用自建docker服务后,如何迁移原有账号数据
  14. 看我如何拿下BC站的服务器
  15. LoRaWan 硬件和信道特点 TDMA的MAC协议优势
  16. Java从入门到精通十一(javaIO流)
  17. XP系统无法设置用户权限,如加everyone等的
  18. 解决WiFi信号弱小妙招
  19. 1.PSTN与VoIP基础
  20. 通过USB连接越狱iPhone,SSH进入设备

热门文章

  1. retinaface 训练笔记
  2. runtime error: invalid memory address or nil pointer dereference
  3. element 0 of tensors does not require grad and does not have a grad_fn
  4. pycharm快捷键不能用了
  5. c++ opencv imencode imdecode string转换
  6. LSD-SLAM 编译过程(Ubuntu 14.04 + ROS Indigo
  7. 23. 进程并发控制之Semaphore
  8. html左右飘窗高度不一致,飘窗的最佳尺寸,你可知道?不懂的留着吧!
  9. 电子科技学院计算机调剂,2020年电子科技大学电子科学技术研究院考研调剂信息...
  10. mysql binlog 目录_怎么查看mysql 的binlog日志存放的位置(linux和win)