您当前的位置: 首页 >  linux

DS小龙哥

暂无认证

  • 3浏览

    0关注

    679博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Linux系统编程-进程间通信(共享内存)

DS小龙哥 发布时间:2022-02-16 23:30:00 ,浏览量:3

前面陆续介绍了标准管道流、无名管道、命名管道、mmap内存映射,这篇文章介绍共享内存段。

1. 共享内存机制(shmget)

共享内存也是进程间(进程间不需要有继承关系)通信的一种常用手段。一般OS通过内存映射与页交换技术,使进程的内存空间映射到不同的物理内存,这样能保证每个进程运行的独立性,不至于受其它进程的影响。但可以通过共享内存的方式,使不同进程的虚拟内存映射到同一块物理内存,一个进程往这块物理内存中更新的数据,另外的进程可以立即看到这块物理内存中修改的内容。

内存映射和共享内存的区别:

mmap内存映射:跟普通文件的读写相比,加快对文件/设备的访问速度。 shmget共享内存:多进程间进行通信。

原理及实现:

system V IPC机制下的共享内存本质是一段特殊的内存区域,进程间需要共享的数据被放在该共享内存区域中,所有需要访问该共享区域的进程都要把该共享区域映射到本进程的地址空间中去。这样一个使用共享内存的进程可以将信息写入该空间,而另一个使用共享内存的进程又可以通过简单的内存读操作获取刚才写入的信息,使得两个不同进程之间进行了一次信息交换,从而实现进程间的通信。共享内存允许一个或多个进程通过同时出现在它们的虚拟地址空间的内存进行通信,而这块虚拟内存的页面被每个共享进程的页表条目所引用,同时并不需要在所有进程的虚拟内存都有相同的地址。进程对象对于共享内存的访问通过key(键)来控制,同时通过key进行访问权限的检查。

2. 共享内存机制相关函数接口介绍
关注
打赏
1664009229
查看更多评论
立即登录/注册

微信扫码登录

0.0470s