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

进程间通信IV System V 系列(linux)

目录

消息队列

原理

操作

补充概念

信号量 (原子性计数器)

原理

操作 (和共享内存相似)

总结

小知识


消息队列

原理

在内核中建立一个队列,进程可以相互进行通信,通过队列进行IPC,就是进程之间发送带类型的数据块。

操作

接口和共享内存基本相似

msgget 获取消息队列

 

msgctl 控制消息队列

 msgsnd 写入数据

补充概念

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


临界资源:被保护起来的资源


保护的方式:互斥和同步


互斥:任何时候,只允许一个执行流访问资源


同步:多个执行流,访问资源时,具有一定的顺序性。


临界资源或互斥资源:系统中某些资源一次只允许一个进程使用


临界区:在进程中涉及到互斥资源的程序段。(我们写的代码 = 访问临界资源的代码(临界区)+不访问临界资源的代码(非临界区))

信号量 (原子性计数器)

原理

本质是一种描述临界资源数量的原子性计数器,是对资源的预定机制

保证:1.资源不会被多申请

2.所有进程未来向通过临界区访问临界资源,先申请信号量(让信号量计数器 -- ),申请成功才能访问临界区资源

 

信号量要被多个进程看到,本身也就是一个共享资源。 自己也要保护自己,通过要求对信号量的++和--必须为原子操作来保护。(原子操作:进行操作时不会被其他操作影响)

操作 (和共享内存相似)

semget 申请信号量

参数:

nsems: 信号量的数量

semctl 控制信号量

参数:

semnum:要进行操作的信号量个数

semop 对信号量进行操作

总结

1.所有的system V资源生命周期都随内核,都需要自己手动释放

2.所有的system V资源,都要被OS管理起来,都有描述它的结构体

3.内核中管理IPC资源,使用柔性数组,之前的shmid等id都是上面柔性数组的下标。

小知识

1.ipcs -p 查看消息队列

ipcrm -q msgid 删除消息队列


2.ipcs -s查看信号量

ipcrm -s semid 删除信号量


3.C语言多态:一个数组,元素为指向不同结构体中的相同的元素的指针,这样一个数组可以管理不同的结构体对象,多态。

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

相关文章:

  • 设计模式——建造者设计模式(创建型)
  • AWS WebRTC:获取ICE服务地址(part 3):STUN服务和TURN服务的作用
  • 使用Yolov8 训练交通标志数据集:TT100K数据集划分
  • NLP学习路线图(十三):正则表达式
  • [VMM]现代 CPU 中用于加速多级页表查找的Page‐Table Entry原理
  • javaweb-maven以及http协议
  • 华为OD机试真题—— 最少数量线段覆盖/多线段数据压缩(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
  • C语言创意编程:用趣味实例玩转基础语法(2)
  • 关于近期中国移动民用家庭网络,新增的UDP网络限制。
  • OpenCV CUDA模块图像处理------颜色空间处理之GPU 上对两张带有 Alpha 通道的图像进行合成操作函数alphaComp()
  • OpenWebUI(1)源码学习构建
  • npm error Cannot find module ‘negotiator‘ 的处理
  • 爬虫入门指南-某专利网站的专利数据查询并存储
  • SQL(Database Modifications)
  • 【android bluetooth 案例分析 04】【Carplay 详解 2】【Carplay 连接之手机主动连车机】
  • maven离线将jar包导入到本地仓库中
  • 【仿muduo库实现并发服务器】实现时间轮定时器
  • Conda更换镜像源教程:加速Python包下载
  • 蓝桥杯 盗墓分赃2
  • 深度解读 Qwen3 大语言模型的关键技术
  • 使用 mysqldump 获取 MySQL 表的完整创建 DDL
  • day15 leetcode-hot100-28(链表7)
  • 阿里云云效对接SDK获取流水线制品
  • Qt 相关 编译流程及交叉编译 部署所遇到的问题总结-持续更新
  • 前端面经 DNSxieyi1
  • 如何通过ES实现SQL风格的查询?
  • ​​知识图谱:重构认知的智能革命​
  • 【计算机网络】4网络层①
  • MATLAB中的table数据类型:高效数据管理的利器
  • Dropout 在大语言模型中的应用:以 GPT 和 BERT 为例