您的位置:首页 > 科技 > IT业 > 【Linux】进程间通信(System V IPC)

【Linux】进程间通信(System V IPC)

2024/10/6 20:29:48 来源:https://blog.csdn.net/2301_78636079/article/details/139396972  浏览:    关键词:【Linux】进程间通信(System V IPC)

这节我们开始学习System V IPC方案。
分别是共享内存,消息队列与信号量

会着重讲解共享内存,但是消息队列与信号量只会说明一下原理。

原因:System V是新设计的一套标准

  1. 与文件的整合度不高
  2. 只能进行本地通信

更何况,我们现在有了网络,可以进行更强大的通信。

目录

  • 共享内存:
    • 原理:
    • 理解:
    • 代码 + 理论:

共享内存:

原理:

首先我们要明确一点,进程间具有独立性,那我们通信必须要申请一块公共内存。下图就是一个简略的简述两个独立的A与B进程

在这里插入图片描述

我们回想一下动态库的加载,我们将加载到内存中的动态库可以分别通过页表映射到A与B的共享区,故动态库也叫做共享库(被多个进程同时拥有)。
那么共享内存当然也可以被加载到共享区,这样两个进程就可以有一块公共的内存空间了!
在这里插入图片描述

所以,通过地址空间的映射,让A和B看到同一份内存就叫做共享内存

理解:

  1. 所有的操作都是OS来完成的。–>因为OS是软硬件的管理者,

  2. OS可以做,但是OS不知道什么时候做,所以OS需要提供系统调用接口,这样就可以由进程发起

  3. 不仅仅只有A与B进程可以通过共享内存进行通信,同理D和C,E和F也都可以!

  4. OS注定要对共享内存进行管理。因为有的共享内存刚创建,有的要删除,有的要通信,这就需要管理起来,而管理就需要先描述在组织。在这里插入图片描述

  5. 共享内存 = 内存空间(数据)+ 共享内存属性


代码 + 理论:

先来看看如何申请共享内存
在这里插入图片描述
我们先来分别理解一下

size:这个代表你想要多大字节的内存

shmflg:这是最主要的两个标志在这里插入图片描述
与文件系统调用的传参是很相似的,都是本质都是位图的应用!

储蓄更新

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com