首页 >> 大全

【Linux操作系统】--System V的共享内存进程通信

2023-12-13 大全 27 作者:考证青年

目录

V起源

共享内存原理

共享内存应用原理

共享内存接口

创建共享内存

测试

创建和删除代码

挂载接口shmat

去关联调用接口shmdt

第二个进程与共享内存挂载

两个进程进行通信

共享内存的特性

补充知识

【的第二个参数size】

shmid每次运行的数量会增加问题

V信号量(非重点)

V起源

进程间通信除了通过管道,都是基于文件的通信方式,还有一种方式是:标准的进程间通信方式。是一个在OS层面专门为进程通信设计的一个方案。这些都是由计算机科学家和程序员设计的,并且需要给用户使用。

如果要给用户用,是以什么方式给用户使用的呢?在操作系统层面上,是OS内核的一部分,是为OS中多进程提供的一种通信方案。但是OS不相信任何用户,给用户提供功能的时候,采用系统调用。所以 V进程间通信,一定会存在专门用来通信的接口: call。

因为在早期由很多的方案,但是我们需要统一使用一个方案,所以现在诞生了在统一主机内的进程间通信方案: V方案。

进程间通信的本质就是:让不同的进程看到同一份资源。

_操作系统进程通信_操作系统内存共享

共享内存原理

A和B两个进程互相独立,物理内存当中代码和数据也互相独立,所以两个进程不会互相干扰,这就是两个进程具有独立性。

现在我们要进行进程间通信,我们要在物理内存当中要创建一个内存块。但是实际可能并不是这么操作,要根据当前内存使用情况来具体操作,我们现在这么理解。

第二部就是要通过某种调用,让进程”挂接“到这份内存空间上。什么是挂接到内存?我们已经有了一块内存空间,并且地址空间中有很大一批没有使用的物理地址空间,页表也有很多没有被填写的映射关系,所以通过某种系统调用,把刚刚这个内存空间通过页表映射到地址空间中。所以我们在地址空间中就能拿到这个内存空间的起始地址。那么A和B进程都一样,第一步创建的内存块通过页表映射,都挂接到了各自地址空间中。让参与通信的多个进程挂接到同一份内存上,此时达到了让不同进程看到了同一份资源,这种通信方案叫做共享内存

1.通过某种调用,在内存中创建一份内存空间。

2.通过某种调用,让进程”挂接“到这份内存空间上。

在后面可能不会共享内存了。所以在不用共享内存的时候

3.去关联(去挂接)

4.释放共享内存

综上共享内存的接口有4个,当然这四个是核心接口。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了