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

进程间通信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.xdnf.cn/news/742699.html

相关文章:

  • 机器学习与深度学习06-决策树02
  • C++23 已弃用特性
  • 前端面试准备-4
  • 细说C语言将格式化输出打印至标准输出流的函数 printf、_printf_l、wprintf、_wprintf_l
  • 第十五篇:MySQL 高级实战项目:构建高可用、可观测、性能优化一体化数据库平台
  • AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年5月31日第94弹
  • 流媒体基础解析:音视频封装格式与传输协议
  • Kafka数据怎么保障不丢失
  • 深拷贝和浅拷贝
  • leetcode77.组合:回溯算法中for循环与状态回退的逻辑艺术
  • tmux基本原理
  • OpenLayers 图形交互编辑
  • Redis最佳实践——安全与稳定性保障之访问控制详解
  • VMware-workstation安装教程--超详细(附带安装包)附带安装CentOS系统教程
  • 【Docker项目实战篇】Docker部署PDF查看器PdfDing
  • Maestro CLI云端测试以及github cl,bitrise原生cl的测试流程
  • Azure DevOps 管道部署系列之二IIS
  • 腾讯面试手撕题:返回行递增有序矩阵第k小的元素
  • 【教学类-36-10】20250531蝴蝶图案描边,最适合大小(一页1图1图、2图图案不同、2图图案相同对称)
  • C++ 重载(Overload)、重写(Override)、隐藏(Hiding) 的区别
  • LiquiGen流体导入UE
  • STM32 HAL库函数学习 CRC篇
  • Linux系统编程之共享内存
  • 在QT中,利用charts库绘制FFT图形
  • MAC软件游戏打开提示已损坏
  • MATLAB实战:机器学习分类回归示例
  • 【MFC】如何设置让exe的控制台不会跟着exe退出而退出
  • C++中指针常量和常量指针的区别
  • 【设计模式-4.6】行为型——状态模式
  • [蓝桥杯]拉马车