【Linux篇】补充:消息队列和systemV信号量

消息队列

消息队列和共享内存都属于system V标准

创建消息队列:

system V信号量

铺垫:

共享内存:

让两个进程看到同一份资源来实现通信:

  • 让两个进程看到同一份资源这是提供了通信前提

  • 如果共享内存没有保护机制,会导致数据不一致

数据不一致的解决方案

  • 信号量

保护机制保护的是谁?或者说约束的是谁?

  • 临界区代码
  • 保护临界区代码就是变相的保护临界资源

什么是临界区?

其实就是访问共享内存的代码段,这部分就是临界区

为什么会数据不一致?

  • 存在没有被保护的共享资源

  • 各自的代码,访问了这个没有被保护的公共资源

  1. 多个执行流(进程)能看到的同一份公共资源:共享资源

  2. 被保护起来的共享资源叫做"临界资源"

  3. 在进程中,涉及到互斥资源的程序段叫做临界区---即访问该资源的代码段

  4. 多个执行流访问资源时,具有一定顺序性,叫做同步

什么是互斥

任何时刻,只允许一个执行流访问资源,叫做互斥

在申请锁的时候,必须是原子的

没当一个执行流进入临界区时,就会申请锁,这说明锁本身也是共享的

那么谁来保证锁的安全?

  • 申请锁的时候,必须是原子的

对共享资源进行保护实际上是对访问共享资源的代码进行保护

原子性是什么?

  • 要么做,要么不做

信号灯,本质是一个计数器,用来表明临界资源中,资源数量的多少

相关推荐
Ultipa6 分钟前
查询语言的进化:SQL之后,为什么是GQL?数据世界正在改变
数据库·sql·图数据库·gql
LB21129 分钟前
SQL隐式链接显式连接
大数据·数据库·sql
Nuyoah11klay1 小时前
华清远见25072班网络编程day1
linux·服务器·网络·网络编程
隔壁阿布都1 小时前
spring boot + mybatis 使用线程池异步修改数据库数据
数据库·spring boot·mybatis
努力学习的小廉1 小时前
深入了解linux系统—— 日志
linux·运维·服务器
qinyia3 小时前
Wisdom SSH 是一款创新性工具,通过集成 AI 助手,为服务器性能优化带来极大便利。
服务器·人工智能·ssh
MilesShi4 小时前
从 scheduler_tick 到上下文切换:深入解析 Linux 内核的 TIF_NEED_RESCHED 标志设置流程
linux·运维·单片机
阿让啊6 小时前
C语言strtol 函数使用方法
c语言·数据结构·c++·单片机·嵌入式硬件
方渐鸿7 小时前
【2024】k8s集群 图文详细 部署安装使用(两万字)
java·运维·容器·kubernetes·k8s·运维开发·持续部署
晓衣7 小时前
2025“獬豸杯”全国电子数据取证竞赛-k8s服务器取证wp
服务器·经验分享·程序人生·网络安全·容器·kubernetes·学习方法