一、进程间通信(IPC)
1、为什么要进程间通信?
我们在之前讲过 "进程之间是具有独立性" 的,如果进程间想交互数据,成本会非常高!
因为独立性之本质即 "封闭",进程们你封闭你的我封闭我的,那么进程间的交流可谓是窒碍难行。
进程间的通信说白了就是 "数据交互",我们需要多进程进行协同处理一件事情。
- 刚才说的是宏观上的概念,下面我们来看看具体的、为什么要进行通信:
- 数据传输:一个进程需要将它的数据发送给另一个进程
- 资源共享:多个进程之间共享资源
- 通知事件:一个进程需要向另一个或一组进程发送讯息,通知它 (它们) 发生了某种事件(比如进程终止时要通知父进程)
- 进程控制:有些进程希望完全控制另一个进程的执行(如 debug 进程),此时控制进程希望能够拦截另一个进程的所有陷阱和异常,并能够及时知道它的状态改变,属于 "闭环控制"。
进程间通信的必要性:
- 单进程的,那么也就无法使用并发能力,更加无法实现多进程协同
- 传输数据,同步执行流,消息通知等
2、程间通信的技术背景
- 1.进程是具有独立性的。虚拟地址空间+页表 保证进程运行的独立性(进程内核数据结构+进程的代码和数据)
- 2.通信成本会比较高!
3、进程间通信的本质理解
- 1.进程间通信的前提,首先需要让不同的进程看到同一·块“内存"(特定的结构组织的)
- 2.所以你所谓的进程看到同一块"内存",属于哪一个进程呢?不能隶属于任何一个进程,而应该更强谢共享
进程间通信的方式 也有一些标准
1.Linux原生能提供 - 管道-->匿名 命名
2.Systemy ---多进程 -- 单机通信
共享内存
消息队列(不常用)
信号量(不讲 - 原理)
3.posix-- 多线程----网络通信
标准更多在我们使用者看来,都是接口上具有一定的规律
二、管道(PIPE)
1、何为管道?
何为管道?管道是 系统中最古老的 IPC 形式,
将一个进程连接到另一个进程的数据流称为管道 (Pipe)。

最低0.47元/天 解锁文章
1850

被折叠的 条评论
为什么被折叠?



