前面陆续介绍了标准管道流、无名管道、命名管道、mmap内存映射,这篇文章介绍共享内存段。
1. 共享内存机制(shmget)共享内存也是进程间(进程间不需要有继承关系)通信的一种常用手段。一般OS通过内存映射与页交换技术,使进程的内存空间映射到不同的物理内存,这样能保证每个进程运行的独立性,不至于受其它进程的影响。但可以通过共享内存的方式,使不同进程的虚拟内存映射到同一块物理内存,一个进程往这块物理内存中更新的数据,另外的进程可以立即看到这块物理内存中修改的内容。
内存映射和共享内存的区别:
mmap内存映射:跟普通文件的读写相比,加快对文件/设备的访问速度。 shmget共享内存:多进程间进行通信。
原理及实现:
system V IPC机制下的共享内存本质是一段特殊的内存区域,进程间需要共享的数据被放在该共享内存区域中,所有需要访问该共享区域的进程都要把该共享区域映射到本进程的地址空间中去。这样一个使用共享内存的进程可以将信息写入该空间,而另一个使用共享内存的进程又可以通过简单的内存读操作获取刚才写入的信息,使得两个不同进程之间进行了一次信息交换,从而实现进程间的通信。共享内存允许一个或多个进程通过同时出现在它们的虚拟地址空间的内存进行通信,而这块虚拟内存的页面被每个共享进程的页表条目所引用,同时并不需要在所有进程的虚拟内存都有相同的地址。进程对象对于共享内存的访问通过key(键)来控制,同时通过key进行访问权限的检查。
2. 共享内存机制相关函数接口介绍关注
打赏
热门博文
- 智慧农业: STM32F103ZE+ESP8266+腾讯云物联网平台+微信小程序设计
- STM32+ESP8266+MQTT协议连接OneNet物联网平台
- STM32+ESP8266+MQTT协议连接阿里云物联网平台
- Linux下编写ENC28J60网卡驱动,完善网络设备框架
- Linux下automake工具使用(自动构建Makefile文件)
- Linux系统下基础命令介绍
- QT软件开发-得到唯一文件名-当前时间与GUID
- 音频频谱显示-基于fmod设计音乐播放器并动态显示频谱图(二)
- 音频频谱显示-显示音频文件静态频谱图(一)
- QT软件开发-基于FFMPEG设计录屏与rtsp、rtmp推流软件(支持桌面与摄像头)(三)