码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 熟悉开机后登陆进入Linux系统和退出系统的过程。


    问题分析
    1. 分析关系
    同步关系:

    互斥关系:


    2. 整理思路
    同步关系的P、V操作:

    互斥关系的P、V操作:

    3. 信号量初值设置
    同步信号量:
    信号量full用于记录当前缓冲池中的“满”缓冲区数,初值为0。
    信号量empty用于记录当前缓冲池中的“空”缓冲区数,初值为n。
    互斥信号量:
    信号量mutex作为互斥信号量,用于控制互斥访问缓冲池,互斥信号量初值为1;
    代码
    semaphore mutex=l;                    //临界区互斥信号量
    semaphore einpty=n;                    //空闲缓冲区
    semaphore full=0;                    //缓冲区初始化为空

    producer(){                            //生产者进程
        while(1){
            produce an item in nextp;    //生产数据
            P (empty);(要用什么,P—下)    //获取空缓冲区单元
            P (mutex);(互斥夹紧)            //进入临界区
            add nextp to buffer;(行为)    //将数据放入缓冲区
            V (mutex);(互斥夹紧)            //离开临界区,释放互斥信号量
            V(full);(提供什么,V—下)        //满缓冲区数加1
        }
    }


    consumer(){                            //消费者进程
        while (1){
            P(full);                    //获取满缓冲区单元
            P(mutex);                    //进入临界区
            remove an item from buffer;    //从缓冲区中取出数据
            V(mutex);                    //离开临界区,释放互斥信号量
            V(empty);                    //空缓冲区数加1
            consume the item;            //消费数据
        }
    }

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    同步和互斥的顺序能否调换顺序?

    类比:


    2. 多生产者——消费者问题
    问题描述:桌子上有一个盘子,每次只能向其中放入一个水果。爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,儿子专等吃盘子中的橘子,女儿专等吃盘子中的苹果。只有盘子为空时,爸爸或妈

  • 相关阅读:
    C# 获取本机IP地址,IPv4,IPv6(保姆级)
    ARM GNU汇编代码分析
    HLS + ffmpeg 实现动态码流视频服务
    L47.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- users和whoami
    rabbitmq安装包部署erlang环境安装
    P1494 [国家集训队] 小 Z 的袜子
    婴幼儿牛奶蛋白过敏危害多,教你四招早期预防
    【Pytorch深度学习开发实践学习】【VGG】经典算法复现-Pytorch实现VGG主干网络(1)model.py
    找到【SVM】中最优的惩罚项系数C
    【车辆计数】基于matlab GUI背景差分法道路行驶多车辆检测【含Matlab源码 1911期】
  • 原文地址:https://blog.csdn.net/m0_68036862/article/details/127651743
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号