进程间通信(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 进程间通信。
-
通信
+关注
关注
18文章
5938浏览量
135747 -
Linux
+关注
关注
87文章
11191浏览量
208623 -
IPC
+关注
关注
3文章
337浏览量
51746
发布评论请先 登录
相关推荐
评论