当前位置: 首页 > news >正文

操作系统复习2.3.4-进程同步问题

生产者-消费者

系统中有一组生产者进程和一组消费者进程
两者共享一个初始为空,大小为n的缓冲区
缓冲区没满,生产者才能放入
缓冲区没空,消费者才能取出
互斥地访问缓冲区
在这里插入图片描述
互斥要在同步之后,不然会导致想要同步,但由于没有锁而导致死锁
遵循先V后P

多生产者-多消费者

在这里插入图片描述
多对多需要清楚互斥量是否为1,若为1可能可以不加互斥,若不为1则需要加,因为要避免覆写缓冲区,导致数据错误
同步需要梳理好前后关系,例如这里的盘子和水果

读者-写者

当有读者和写者两组并发进程,共享一个文件,读时只允许读,不允许写,写时不允许读和写
难点在怎么确定当前访问的进程是哪种进程
在这里插入图片描述
此处将互斥量套在检查count和赋值count上,但造成了读优先,且写饥饿

在这里插入图片描述
为了解决写饥饿,加入对写标志的同步操作,即当有写进程申请访问时,读文件进程只能等待,读写平衡法

吸烟者

三个抽烟者各自持有三种材料中的一种,一个供货商每次提供两种材料,抽烟者一凑齐材料就能抽,此处就涉及了线程同步问题
在这里插入图片描述
其实这里finish用做表示抽完才能放材料,设置三种材料作为变量即可

哲学家进餐

在这里插入图片描述
这里就不能常规的p操作检查两边的筷子能否拿起,因为同时并发会导致都吃不上饭
要想实现不死锁,需要让他们按一定顺序吃饭,如只有能拿起一双筷子的才能吃饭,不然就不能拿筷子
在这里插入图片描述

http://www.lryc.cn/news/91673.html

相关文章:

  • 3ds MAX 基本体建模,长方体、圆柱体和球体
  • 搭建个人博客
  • JavaScript进阶(下)
  • 基于PyQt5的图形化界面开发——堆栈动画演示
  • 2023 年第三届长三角高校数学建模竞赛赛题浅析
  • sqlite3免费加密开源项目sqlcipher简单使用
  • SOLIDWORKS PDM Professional中的Add-ins
  • 干货 | 郭晓雷:数智安全监管机制研究与思考
  • 感应雷电浪涌的防线,SPD浪涌保护器
  • ThreeJS教程:屏幕坐标转标准设备坐标
  • [elasticsearch 实现插入查询小demo ]
  • 因为计算机中丢失VCRUNTIME140怎么办?为什么会丢失VCRUNTIME140.dll
  • 【满分】【华为OD机试真题2023B卷 JAVAJS】数字游戏
  • NLP常用的三种中文分词工具对比
  • Visual C++ 6.0环境开发PACS影像系统的技术指标和精准算法
  • 接口测试介绍以及用例编写
  • MATLAB迭代的三种方式以及相关案例举例
  • 测试替身Test Doubles的5类型(Mockito)
  • 【C++】链表
  • day42_jsp
  • JAVA面试八股整理——基础部分
  • 【JavaSE】Java基础语法(二十八):HashSet集合
  • 压缩感知重构之匹配追踪算法
  • 【SpinalHDL快速入门】4.6、复合类型之Vec
  • 探访世优科技数字人虚拟直播产品体系 | 世优开放日再次成功举行
  • 有奖励!2023陕西省首台(套)重大技术装备产品项目申报条件、认定材料
  • 2023/6/6总结
  • api习题
  • (STL之string)string类的用法详解
  • 基于RT-Thread快速上手SD NAND 虚拟文件系统