码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 生产者-消费者问题【操作系统学习笔记】


    22.生产者-消费者问题

    文章目录

    • 22.生产者-消费者问题
      • 🍅问题分析
      • 🍅PV 操作题目的解题思路:
      • 🍅总结

    🍅问题分析

    • 系统中有一组生产者进程和一组消费者进程,消费者进程每次生产一个产品放入缓冲区,消费者进程每次从缓冲区中取出一个产品并使用。(注:这里的“产品”理解为某种数据)

    • 生产者,消费者共享一个初始为空,大小为 n 的缓冲区

    • 只有缓冲区没满时,生产者才能把产品放入缓冲区,否则必须等待

    • 只有缓冲区不空时,消费者才能从中取出产品,否则必须等待

    • 缓冲区是临界资源,各进程必须互斥地访问(防止前一个数据被后一个数据覆盖)

    • 考试中便是利用 信号量机制(P,V操作)实现生产者,消费者进程的这些功能

      信号量机制可实现互斥,同步,对一类系统资源的申请和释放

    🍅PV 操作题目的解题思路:

    1. 关系分析。找出题目中描述的各个进程,分析它们之间的同步,互斥关系
    2. 整理思路。根据各进程的操作流程确定 P,V 操作的大致顺序
      • 生产者每次要消耗(P)一个空闲缓冲区,并每次生产(V)一个产品
      • 消费者每次要消耗(P)一个产品,并释放一个空闲缓冲区(V)
      • 往缓冲区 放入/取走 产品需要互斥
    3. 设置信号量。设置需要的信号量,并根据题目条件确定信号量初值。(互斥信号量初值一般为 1,同步信号量的初始值要看对应资源的初始值是多少)
      • **实现互斥操作的P操作一定要在实现同步的P操作之后!**否则会出现 死锁
      • 而 V 操作不会导致进程堵塞,因此两个 V 操作顺序可以交换

    用信号量 实现互斥 是在同一进程中进行 一对 PV 操作

    实现两进程的同步关系,是在其中一个进程中执行 P,另一个进程中执行 V

    🍅总结

    • 生产者消费者问题是一个互斥,同步的综合问题
    • 对于初学者来说,最难的是发现题目中隐含的两队同步关系
    • 有时候是消费者需要等待生产者生产,有时候是生产者要等待消费者消费,这是两个不同的“一前一后问题”,因此也需要设置两个同步信号量
  • 相关阅读:
    idea使用git删除本地提交(未推送)
    web前端网页设计与制作——华夏第一县HTML+CSS+JavaScript
    讲讲项目里的仪表盘编辑器(二)
    【论文笔记】Deep Multi-View Spatial-Temporal Network for Taxi Demand Prediction
    11、Feign使用最佳实践
    Kafka如何处理消费者之间的消息偏斜和负载均衡问题
    高NA (数值孔径)物镜的分析
    口袋参谋:淘宝生意参谋指数,如何一键转换成真实数值?
    Linux——vim简介、配置方案(附带超美观的配置方案)、常用模式的基本操作
    mybatis踩坑
  • 原文地址:https://blog.csdn.net/Mikey99/article/details/127554456
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号