Linux 之 【进程间通信】(消息队列与信号量、Systrm VIPC在内核中数据结构设计)
目录1.消息队列2.Systrm V IPC在内核中数据结构设计3.临界资源与临界区4.信号量1.消息队列操作系统在内核空间创建并维护多个消息队列作为共享资源每个队列都有唯一的标识符。不同进程通过相同的标识符访问同一个队列从而实现进程间通信。进程可以向队列发送带类型的数据块也可以从队列中接收特定类型的数据。操作系统采用先描述再组织的方式管理所有消息队列为每个队列维护描述结构体并通过链表等数据结构统一组织确保通信的有序性和可靠性消息队列的使用接口这里不做讲解2.Systrm V IPC在内核中数据结构设计Systrm V通信标准在操作系统内部是一个独立的模块与一切皆文件的理念兼容性差理念维度System V IPC一切皆文件理念访问方式专用系统调用shmget/shmctl等统一文件APIopen/read/write标识机制独立的key/shmid/msgid/semid文件路径和描述符命名空间独立的IPC命名空间统一的文件系统命名空间权限模型自定义的struct ipc_perm标准的Unix文件权限位生命周期随内核需显式删除文件系统管理可持久化Systrm V标准具有 共享内存、消息队列、信号量 三种进程间通信方式操作系统内核为每种类型维护一个对象指针数组数组的每个槽位存储对应IPC对象的指针。当用户通过xxxget()系统调用创建或获取IPC对象时内核会分配一个数组索引并结合递增的序列号较大时会回绕到0生成用户可见的唯一标识符shmid/msgid/semid。此后对特定数组的增删查改就是对特定IPC资源的增删查改共享内存、消息队列、信号量 三种类型中的第一个字段都是struct ipc_perm所以三种对象都能够通过其首字段位置实现类型安全的对象访问转换struct ipc_perm { key_t __key; /* Key supplied to semget(2) */ uid_t uid; /* Effective UID of owner */ gid_t gid; /* Effective GID of owner */ uid_t cuid; /* Effective UID of creator */ gid_t cgid; /* Effective GID of creator */ unsigned short mode; /* Permissions */ unsigned short __seq; /* Sequence number */ };struct ipc_perm存储了对象的创建键值__key、属主和创建者的用户/组IDuid/gid、cuid/cgid、权限模式mode以及防重用的序列号__seq封装的实现系统调用接口shmget/shmctl、msgget/msgctl、semget/semctl封装了实现IPC资源访问功能的细节继承的模拟三种IPC对象共享内存、消息队列、信号量都将struct ipc_perm作为其数据结构的第一个成员多态的模拟例如IPC_STAT命令在三种IPC类型中具有相同的语义获取状态但具体实现会根据对象类型访问不同的特有字段实现了同一接口不同实现的多态行为而类型参数在运行时决定具体执行路径3.临界资源与临界区临界资源是并发环境中共享且任何时刻只允许单个执行流访问的资源通常为内存空间但也可扩展至文件、硬件设备等访问临界资源的那部分代码称为临界区它通常只占整个程序代码的一小部分如100行中的5-10行需通过互斥机制如锁或信号量保护以确保执行流在临界区内的操作具有原子性和隔离性从资源层级看CPU将进程视为其调度资源而进程则将其内存空间视为私有资源当多进程共享同一内存区域时该区域即成为临界资源4.信号量1信号量的核心本质信号量本质是一把共享计数器其整数值cnt描述临界资源中可用资源的数量。信号量机制实现了对多进程/多线程访问共享资源的预订和控制2资源预订机制执行流必须先申请信号量才能访问临界资源的机制类似于资源预订申请成功表示获得访问权限这样信号量就可以通过保证进入共享资源的执行流的数量有效保护临界资源信号量值减1P操作对应资源分配信号量值加1V操作对应资源释放3 进程间同步上述的资源预定机制说明信号量本身也是所有通信进程可见的共享资源用于实现进程间协同工作的基础同步机制那么信号量作为共享资源就需要进行自我保护PV操作的原子性可以确保信号量自身的线程安全4 PV操作的原子性P操作申请cnt--原子减1申请资源V操作释放cnt原子加1释放资源原子性要求单条汇编指令完成无中间状态避免普通cnt--/cnt3条指令的竞态问题5二元信号量互斥锁信号量整数值仅为0或1两态资源整体使用、整体申请、整体释放时本质上实现了互斥功能保护了单一共享资源

相关新闻

如何提高大数据领域数据建模的准确性和可靠性

如何提高大数据领域数据建模的准确性和可靠性

如何提高大数据领域数据建模的准确性和可靠性 关键词:大数据建模、数据准确性、模型可靠性、特征工程、数据预处理、模型验证、分布式计算 摘要:本文深入探讨了在大数据环境下提高数据建模准确性和可靠性的关键技术和方法。文章从数据预处理、特征工程、模型选择和验证等多个…

2026/7/5 8:04:22 阅读更多 →
【Termux】Photopea离线版部署

【Termux】Photopea离线版部署

Photopea是捷克开发者Ivan Kutskir开发的免费浏览器端专业图像编辑器(2013年推出),界面与操作高度对标Photoshop,完全本地运行、无需上传文件、支持离线(PWA),同时提供付费去广告与可自行部署的…

2026/7/3 18:27:42 阅读更多 →
洛谷 P9100 [PA 2020] Miny 题解

洛谷 P9100 [PA 2020] Miny 题解

这道题难点在于状态设计。考虑线性 DP,设 dpidp_idpi​ 为仅考虑前 iii 个地雷且钦定第 iii 个不引爆的方案数。这样设计的好处在于 iii 前面的地雷一定不会引爆 iii 后面的,从而满足无后效性。 注意需要在左右无穷远处各添加一个爆炸半径无穷大的哨兵地…

2026/7/3 18:27:42 阅读更多 →

最新新闻

实战复现CitrixBleed 2漏洞:从内存越界读取到会话劫持

实战复现CitrixBleed 2漏洞:从内存越界读取到会话劫持

1. 项目概述:一次针对企业核心边界的实战化漏洞复现最近在梳理企业边界设备的安全风险时,我又一次把目光投向了Citrix NetScaler。作为全球范围内广泛应用的应用交付控制器(ADC)和网关设备,它承载着大量企业的关键业务…

2026/7/7 11:15:02 阅读更多 →
5分钟上手:Switch图形化注入工具TegraRcmGUI终极指南

5分钟上手:Switch图形化注入工具TegraRcmGUI终极指南

5分钟上手:Switch图形化注入工具TegraRcmGUI终极指南 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI TegraRcmGUI是一款专为Windows平台设计的Ni…

2026/7/7 11:13:01 阅读更多 →
品牌全案策划服务如何选择?2026年企业需关注的5个维度

品牌全案策划服务如何选择?2026年企业需关注的5个维度

品牌全案策划服务是企业建立系统性品牌体系的核心环节,需要从服务范围、团队专业度、数据能力、执行经验和成本结构五个维度综合评估。品牌全案策划服务是指为企业提供从品牌战略规划到视觉设计、营销推广、运营维护的一站式综合性服务。据QYResearch调研数据显示&a…

2026/7/7 11:13:01 阅读更多 →
从RSA到ML-KEM:密钥封装机制演进与后量子密码迁移实战

从RSA到ML-KEM:密钥封装机制演进与后量子密码迁移实战

1. 密钥封装机制:从信任基石到量子威胁下的重塑如果你在2024年之前配置过TLS证书,或者调试过SSH连接,那么“RSA密钥交换”这个概念对你来说一定不陌生。它就像互联网世界的“信任邮差”,几十年来默默无闻地保障着我们每一次网页浏…

2026/7/7 11:11:00 阅读更多 →
USVInland 数据集实战:基于 27 段序列的 SLAM 与水体分割算法评测

USVInland 数据集实战:基于 27 段序列的 SLAM 与水体分割算法评测

USVInland 数据集实战:基于 27 段序列的 SLAM 与水体分割算法评测水面无人驾驶技术正迎来前所未有的发展机遇,而高质量的数据集是推动算法进步的关键基石。USVInland 作为全球首个专注于内河航道场景的多传感器数据集,为研究者提供了丰富的真…

2026/7/7 11:11:00 阅读更多 →
数据库一体机简史:从ODA到zData X,命名之中的玄机

数据库一体机简史:从ODA到zData X,命名之中的玄机

在Exadata问世三年之后,Oracle公司于2011年9月在旧金山Oracle OpenWorld大会上正式发布了其数据库一体机的低端产品ODA(Oracle Database Appliance,如图1所示)。有意思的是,从命名上看,ODA才是真正意义上的…

2026/7/7 11:08:59 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻