linux IPC机制学习博客

Posted 20155329胡佩伦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux IPC机制学习博客相关的知识,希望对你有一定的参考价值。

要求

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

研究博客

管道(PIPE)

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

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

参考示例

有名管道 (FIFO):

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

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

参考示例

信号

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

消息队列(Message Queue):

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

共享内存(Shared Memory):

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

参考示例

mmap函数就是一个很好的示例

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

码云链接

博客参考

以上是关于linux IPC机制学习博客的主要内容,如果未能解决你的问题,请参考以下文章

linux各种IPC机制(进程通信)

20155202 张旭 Linux下IPC机制

Android进程间通信机制Binder学习

2017-2018-1 20155222 《信息安全系统设计基础》第10周 Linux下的IPC机制

Linux进程间通信 --- IPC机制(转)

20155301 滕树晨linux基础——linux进程间通信(IPC)机制总结