首页 > 代码库 > system v和posix的共享内存对比
system v和posix的共享内存对比
参考 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的共享内存对比
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。