IPC进程间通信(概念简介)

进程间通信发展

Linux下的进程通信手段基本上是从UNIX平台上的进程通信手段继承而来的。而对UNIX发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间的通信方面的侧重点有所不同。前者是对UNIX早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,其通信进程主要局限在单个计算机内;后者则跳过了该限制,形成了基于套接口(socket)的进程间通信机制。而Linux则把两者的优势都继承了下来。

进程间共享信息的三种方式

最左边的表示两个进程共享文件系统中某个文件的信息,为了访问其中的信息,必须通过内核。

中间的表示两个进程共享在内核中的某些信息,较为常见的有管道,消息队列,信号量。

最右边的表示在用户空间中有一个两个进程都能访问到的共享内存区,可不通过内核进行消息通讯,是速度最快的一种,其本质是对内核中的内存空间做了映射,映射到用户空间。

IPC对象的持续性

进程持续:一直存在直到打开的最后一个进程结束。(如pipe和FIFO)。

内核持续:一直存在直到内核自举或显式删除(如System V消息队列、共享内存、信号量)。

文件系统持续:一直存在直到显式删除,即使内核自举还存在。(POSIX消息队列、共享内存、信号量如果是使用映射文件来实现)。



猜你喜欢

转载自blog.csdn.net/qq_33506160/article/details/80486199