POSIX systemV共享内存的区别

POISX共享内存分为两种方式:

1、内存映射文件

特点:共享内存的改变能在文件中体现;

2、共享内存区对象

特点:共享内存的改变在文件上看不出来(实际上根本打不开该文件);

以上两者都是基于mmap函数实现的。

先看mmap函数的作用:

mmap函数主要的功能就是将文件或设备映射到调用进程的地址空间中,当使用mmap映射文件到进程后,就可以直接操作这段虚拟地址进行文件的读写等操作,不必再调用read,write等系统调用。在很大程度上提高了系统的效率和代码的简洁性。

使用mmap函数的主要目的是:

  • 对普通文件提供内存映射I/O,可以提供无亲缘进程间的通信;
  • 提供匿名内存映射,以供亲缘进程间进行通信。
  •  对shm_open创建的POSIX共享内存区对象进程内存映射,以供无亲缘进程间进行通信

mmap成功后,可以关闭fd,一般也是这么做的,这对该内存映射没有任何影响。

SYSTEM V共享内存的实现要比POISX早且更完善,更易用,但其缺点是:内存大小在创建时确定,之后不能改变(POISX可以)。

原文地址:https://www.cnblogs.com/candl/p/8534140.html