码迷,mamicode.com
首页 > 其他好文 > 详细

system v和posix的共享内存对比

时间:2017-01-08 10:52:10      阅读:319      评论:0      收藏:0      [点我收藏+]

标签:通信   返回   tip   对比   数据   函数返回   target   style   com   

参考 http://www.startos.com/linux/tips/2011012822078.html

 

1)Linux和所有的UNIX操作系统都允许通过共享内存在应用程序之间共享存储空间.

2)有两类基本的API函数用于在进程间共享内存:System v和POSIX.  (当然,还有mmap,属于POSIX的)

3)这两类函数上使用相同的原则,核心思想就是任何要被共享的内存都必须经过显示的分配.

4)因为所有进程共享同一块内存,共享内存在各种进程间通信方式中具有最高的效率.

5)内核没有对访问共享内存进行同步,所以必须提供自己的同步措施,比如数据在写入之前,不允许其它进程对其进行读写.可以用wait来解决这个问题.

 

二)POSIX共享内存API

1)函数shm_open和shm_unlink非常类似于为普通文件所提供的open和unlink系统调用.

  2)如果要编写一个可移植的程序,那么shm_open和shm_unlink是最好的选择.

  3)shm_open:创建一个新的共享区域或者附加在已有的共享区域上.区域被其名字标识,函数返回各文件的描述符.

  4)shm_unlink:类似于unlink系统调用对文件进行操作,直到所有的进程不再引用该内存区后才对其进行释放.

  5)mmap:用于将一个文件映射到某一内存区中,其中也使用了shm_open函数返回的文件描述符.

  6)munmap:用于释放mmap所映射的内存区域.

  7)msync:同步存取一个映射区域并将高速缓存的数据回写到物理内存中,以便其他进程可以监听这些改变.

 

system v和posix的共享内存对比

标签:通信   返回   tip   对比   数据   函数返回   target   style   com   

原文地址:http://www.cnblogs.com/charlesblc/p/6261469.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!