Appearance
进程间通讯 IPC(InterProcess Conmunication)
不同进程之间传播或者交换信息
管道(无名管道和命名管道)
在内核中申请一块固定大小的缓冲区,程序拥有写入和读取的权利,可以看成是特殊的文件
- 无名管道
- fork 实现父子进程通讯
- 命名管道
- 没有关系的进程间通讯
消息队列
- 内核中创建一个队列,队列中元素都是一个数据报,不同的进程可以通过句柄访问这个队列
- 消息队列独立于发送和接收进程,可以通过顺序和消息类型读取,或者 fifo 读取
- 可以实现双向通讯
信号量
- 内核中创建一个信号量集合(数组)
- 默认 1,P -1, V +1
- 通过临界资源进行保护实现多进程的同步
共享存储
- 将同一块物理内存一块映射到不同的进程的虚拟地址空间中,实现不同进程对同一资源的共享
- 不需要从用户态 -> 内核态频繁的切换和数据拷贝
- 内存共享是临界资源,需要操作是必须要保证原子性,使用信号量或者互斥锁都可以实现
Socket 不同主机上的两个进程通讯
- 一组抽象的接口