进程间通信的机制有哪些

描述

进程间通信(interprocess communication,简称IPC)指两个进程之间的通信。系统中的每一个进程都有各自的地址空间,并且相互独立、隔离,每个进程都处于自己的地址空间中,因此相互通信比较难,Linux内核提供了多种进程间通信的机制。

同一个进程的不同模块(譬如不同的函数)之间进行通信都是很简单的,譬如使用全局变量等。

通常情况下,大部分的程序是不要考虑进程间通信的,因为大家所接触绝大部分程序都是单进程程序(可以有多个线程),对于一些复杂、大型的应用程序,则会根据实际需要将其设计成多进程程序。

进程间通信的机制有哪些?

Linux 内核提供了多种 IPC 机制,基本是从 UNIX 系统继承而来,而对 UNIX 发展做出重大贡献的两大主力 AT&T的贝尔实验室及 BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。

前者对 UNIX 早期的进程间通信手段进行了系统的改进和扩充,形成了“System VIPC”,通信进程局限在单个计算机内;后者则跳过了该限制,形成了基于套接字(Socket,也就是网络)的进程间通信机制。Linux则把两者继承了下来,如下如所示:

通信

早期的 UNIX IPC 包括:管道、FIFO、信号;System V IPC 包括:System V 信号量、System V消队列、SystemV 共享内存;上图中还出现了 POSIX IPC,事实上,较早的 System V IPC 存在着一些不足之处,而 POSIX IPC 则是在 System VIPC 的基础上进行改进所形成的,弥补了 System V IPC 的一些不足之处。POSIX IPC 包括:POSIX 信号量、POSIX消息队列、POSIX 共享内存。

总结如下:

UNIX IPC:管道、FIFO、信号;

System V IPC:信号量、消息队列、共享内存;

POSIX IPC:信号量、消息队列、共享内存;

Socket IPC:基于 Socket 进程间通信。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分