一、概念
什么是内存共享映射?
- 将磁盘文件的一部分直接映射到内存中
- 共享内存,就是两个或多个进程都可以访问的同一块内存空间,一个进程对这块空间内容的修改可为其他参与通信的进程所看到的
映射种类
- 共享映射(share),内存中数据修改时,磁盘对应也同时修改
- 私有映射(private),内存中数据修改时,磁盘不修改
内存共享特点
- 实现进程间通信最简单也是最直接的方法就是共享内存——为参与通信的多个进程在内存中开辟一个共享区。由于进程可以直接对共享内存进行读写操作,因此这种通信方式效率特别高,但其弱点是,它没有互斥机制,需要信号量之类的手段来配合。
二、相关函数
mmap
- 功能:mmap可以把磁盘文件的一部分直接映射到内存,这样文件中的位置直接就有对应的内存地址,对文件的读写可以直接用指针来做而不需要read/write函数
- 头文件:
include<sys/mman.h> - 函数原型:
void *mmap(void *addr, size_t length, int prot, int