什么是共享内存?
共享内存是被多个进程共享的一部分物理内存。共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。
注:页表是一种数组结构,存放着各个虚拟页的状态,是否映射,是否缓存. 进程要知道那些内存地址上的数据在物理内存上,那些不在,还有物理内存上的哪里需要用页表来记录. 页表的每一个表项分为两部分,第一部分记录此页是否在物理内存上,第二部分记录物理内存页的地址
相关函数
shmget:用来创建共享内存
原型:
int shmget(key_t key, size_t size, int shmflg);
参数:
key:是由ftok函数生成,表示共享内存段名字
size:共享内存的大小
shnflg:用法和创建文件使用的mode模式标志一样
返回值:成功返回一个非负整数,即就是共享内存段的标识码;失败返回-1
shmat:将共享内存段连接到进程地址空间
原型:
void *shmat(int shmid, const void *shmaddr, int shmflg);
参数:
shmid:共享内存标识
shmaddr:指定的连接地址
shmflg:可取SHM_RND和SHM_RDONLY
返回值:
成功返回一个指针,指向给共享内存的第一字节,失败返回-1
shmdt:将共享内存段与当前进程脱离
原型:
void *shmat(int