【学习笔记】第二章——信号量机制 && 用信号量实现互斥、同步

一. 信号量机制

  • 信号量:一个用于表示系统中某种资源的数量的变量(整数 or 记录型变量)
  • 一对原语:wait(S) 和 signal(S),S为参数。简称P、V操作,因此也可写成 P(S)、V(S)
    在这里插入图片描述

整型信号量

  • 三种操作:初始化、P操作、V操作
  • 原子性避免并发、异步导致的问题
  • 问题:不满足“让权等待”,会发生“忙等

在这里插入图片描述

记录型信号量

  • 结构体取代整型,加入等待队列
  • block 原语:把进程从运行态 => 阻塞态,并挂入信号量的等待队列
  • wakeup原语:把进程从“阻塞态 => 就绪态”,从信号量的等待队列中唤醒
    在这里插入图片描述
例子:
  • 图文不便描述。建议还是看视频,走一遍流程便于理解。p21的20分钟附近
    在这里插入图片描述
  • S.value 表示 系统某种资源的数目
  • 不会出现忙等情况,遵循让权等待原则
    在这里插入图片描述

总结

在这里插入图片描述

二. 用信号量实现互斥、同步

互斥

  • 不同临界资源,设置不同互斥信号量
  • P、V 操作成对出现:缺P不能保证互斥访问,缺V会导致资源永远不被释放
    在这里插入图片描述

同步

  • 前操作之后,执行 V
  • 后操作之前,执行 P(要取,保证在【前操作存之后】才能跑)
    在这里插入图片描述

前驱

  • 每一对前驱关系设置一个同步变量
  • 在此基础上走上面的【同步】的 PV 设定方式
    在这里插入图片描述

总结

  • 互斥:信号量初值1
  • 同步:信号量初值0
  • 前驱:本质上就是更复杂的同步问题
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值