IPC进程间通信主题之共享内存
来源:互联网 发布:城西银泰有mac专柜吗 编辑:程序博客网 时间:2024/05/21 08:44
一.什么是共享内存
共享内存:使得多个进程可以访问同⼀一块内存空间,是最快的可⽤用IPC形式。是针对其他通信机制运⾏行效率较低⽽而设计的。
共享内存是所有进程间通信中效率最快的,它的生命周期是随内核,并且它本身并有提供同步与互斥,往往与其它通信机制,如信号量结合使⽤用, 来达到进程间的同步及互斥。
它的工作原理可以用下图来解释:
两个不同的进程通过页表映射将其中的内容存储到一块相同的物理内存中,这一块内存就是共享内存。
查找系统中的共享内存:ipcs -s删除系统中的某个共享内存:ipcrm -m shmid
二.关于共享内存的测试用例及代码
为了模拟共享内存,我们设计了一个测试用例来测试。下面先介绍一下几个必要的函数。
1 shmget函数
2 shmctl函数,控制共享内存
3.shmat(),shmdt(),共享内存操作函数
其中shmat函数的参数意义如下:
① shm_id:由shmget函数返回的共享内存标识。
② shm_addr:指定共享内存连接到当前进程中的地址位置,通常为空,表示让系统来选择共享内存的地址。
③ shm_flg:是一组标志位,通常为0。
测试用例需要定义的一些函数如图:
下面看一下测试代码:
server.c的代码如图:
client.c的代码如图:
接下来让我们先运行server:
此时在屏幕上并没有输出什么,再当我们运行client的时候:
server和client中都在一直打印A到Z的过程,这就是共享内存所实现的。
- IPC进程间通信主题之共享内存
- 进程间通信总结 && IPC主题三之 共享内存
- 进程间通信IPC之--共享内存
- 进程间通信IPC之--共享内存
- 进程间通信IPC之--共享内存
- 进程间通信IPC之--共享内存
- 进程间通信(IPC)之共享内存
- 进程间通信--IPC之共享内存
- Linux 进程间通信(IPC)之三 --- 共享内存
- Windows IPC 进程间通信之共享内存
- 进程间通信(IPC):共享内存
- Linux 进程间通信 (IPC) //共享内存
- 进程间通信(IPC)---共享内存
- 进程间通信IPC---共享内存
- IPC进程间通信主题之信号量
- Linux进程IPC浅析[进程间通信SystemV共享内存]
- 笔记五:进程间的通信(IPC通信之共享内存)
- 学习笔记——进程通信IPC之共享内存
- git本地创建库和本地添加远程库过程
- Python基础-切片与迭代
- python第三篇-变量
- 出租车费
- 如何修改Tomcat服务器Server Locations
- IPC进程间通信主题之共享内存
- 常用HTML文本元素汇总
- Tricks of R
- Java 的内存管理
- Android的json详解
- Java泛型
- 二维数组中的查找
- FreeRTOS学习4--计数型信号量
- 动态代理