现在的位置: 首页 > 综合 > 正文

共享内存的说明(2)

2013年12月12日 ⁄ 综合 ⁄ 共 492字 ⁄ 字号 评论关闭

关于mmap说明:

使一个磁盘文件与存储空间的一个缓冲区相映射。也就是说读取缓冲区的数据,就相当于读文件中的相应字节。所以同样,将数据存入缓冲区,就把相应的字节自动写入文件(MAP_SHARED标志,而MAP_PRIVATE不影响原文件,只影响文件的副本)。

操作步骤是:首先打开文件,然后从文件的off偏移量处的len长度到指定的缓冲区。

 

文件长度和缓冲区长度的关系,如果映射区长度不是页长,那么系统会提供页长的映射区。所以你如果操作超过文件的长度,可能不会出错。

mmap返回的是该映射区的起誓地址。(虚拟地址)。

 

共享存储可以由不相关的进程使用,而相关的进程可以使用/dev/zero的mmap。

创建一个存储区,初试化为0,多个进程的共同祖先使用了MAP_SHARED标志,那这些进程都共享该存储区间。创建了指定长度的存储区以后,需要关掉设备。

 

同上面的一样,是匿名映射。指定标志为MAP_ANON,文件描述符号是-1。

 

在相关的进程中,可以使用匿名映射的方式的mmap,当然,有名也可以。

无关的进程,可以使用shm的方式,也可以用mmap同一个文件的方式,好象这样的话,同步和困难。

抱歉!评论已关闭.