码迷,mamicode.com
首页 > 系统相关 > 详细

linux IPC机制学习博客

时间:2017-11-26 23:59:49      阅读:374      评论:0      收藏:0      [点我收藏+]

标签:映射   消息   缓冲   pip   内存映射文件   blog   .net   线程   系统   

要求

研究Linux下IPC机制:原理,优缺点,每种机制至少给一个示例,提交研究博客的链接 
- 共享内存
- 管道
- FIFO
- 信号
- 消息队列

研究博客

管道(PIPE)

  • 管道(PIPE):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系(父子进程)的进程间使用。另外管道传送的是无格式的字节流,并且管道缓冲区的大小是有限的(管道缓冲区存在于内存中,在管道创建时,为缓冲区分配一个页面大小)。

    管道只能在本地计算机中使用,而不可用于网络间的通信。

    参考示例

    技术分享图片

有名管道 (FIFO):

  • 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。

    管道因为没有名字所以只能用于具有亲缘关系的进程,而有名管道(FIFO)则克服了这个限制。

    参考示例

    技术分享图片

信号

  • 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
    技术分享图片

消息队列(Message Queue):

  • 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
    技术分享图片

共享内存(Shared Memory):

  • 共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步和通信。

    参考示例

    mmap函数就是一个很好的示例
  • mmap系统调用是的是的进程间通过映射同一个普通文件实现共享内存.普通文件被映射到进程地址空间后,进程可以向像访问普通内存一样对文件进行访问,不必再调用read,write等操作

码云链接

博客参考

linux IPC机制学习博客

标签:映射   消息   缓冲   pip   内存映射文件   blog   .net   线程   系统   

原文地址:http://www.cnblogs.com/hpl20155329/p/7900976.html

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