共享内存是最快的一种IPC方式
2016-06-04 14:27
302 查看
在linux进程间通信的方式中,共享内存是一种最快的IPC方式。因此,共享内存用于实现进程间大量的数据传输,共享内存的话,会在内存中单独开辟一段内存空间,这段内存空间有自己特有的数据结构,包括访问权限、大小和最近访问的时间等。
为什么说共享内存是最快的一种IPC方式呢?让我们一起来看一下下面的这张图:
从这张图中,我们可以看出,使用管道(FIFO/消息队列)从一个文件传输信息到另外一个文件需要复制4次。一是,服务器端将信息从相应的文件复制到server临时缓冲区中;二是,从临时缓冲区中复制到管道(FIFO/消息队列);三是,客户端将信息从管道(FIFO/消息队列)复制到client端的缓冲区中;四是,从client临时缓冲区将信息复制到输出文件中。
这个是对于不是共享内存的其他方式的消息传送过程,下面我们仔细来看一下对于共享内存而言,这种消息传送机制是怎样的呢?我们还是先看一下下面这张图:
从这张图中,我们可以看出,共享内存的消息复制只有两次。一是,从输入文件到共享内存;二是,从共享内存到输出文件。这样就很大程度上提高了数据存取的效率。
为什么说共享内存是最快的一种IPC方式呢?让我们一起来看一下下面的这张图:
从这张图中,我们可以看出,使用管道(FIFO/消息队列)从一个文件传输信息到另外一个文件需要复制4次。一是,服务器端将信息从相应的文件复制到server临时缓冲区中;二是,从临时缓冲区中复制到管道(FIFO/消息队列);三是,客户端将信息从管道(FIFO/消息队列)复制到client端的缓冲区中;四是,从client临时缓冲区将信息复制到输出文件中。
这个是对于不是共享内存的其他方式的消息传送过程,下面我们仔细来看一下对于共享内存而言,这种消息传送机制是怎样的呢?我们还是先看一下下面这张图:
从这张图中,我们可以看出,共享内存的消息复制只有两次。一是,从输入文件到共享内存;二是,从共享内存到输出文件。这样就很大程度上提高了数据存取的效率。
相关文章推荐
- ubuntu下使用Qt 编译时cannot find -lGL错误解决
- php+mysql 使用ajax的注册页面(1)
- AirlineTicket
- 常用命令-eval简析
- 百度面试经验
- 上帝与集合的正确用法 [Bzoj 3884]
- 网卡、网关、网桥、集线器、中继器、交换机、路由器
- iOS百度地图简单使用
- MySQL环境部署
- Hql语句中占位符对应的传参的顺序,debug 浅析
- 删除元素
- 0603 诚信与职业道德
- C++面试宝典
- react native 遇到的坑
- toast自定义
- 《剑指offer》:[14]位运算以及求二进制中1的个数
- appcan中的微信分享与qq分享
- 多线程经典面试题
- 软件工程课程总结
- 计算机网络学习(5):网络寻址