进程通信
进程通信即进程间的信息交换
特点
- 共享存储Shared-Memory
- 消息传递Message-Passing
- 管道通信Pipe
共享存储
[数据收发双方不可见,存在安全隐患]
基于共享数据结构的通信方式
- 多个进程公用某个数据结构(OS提供并控制)
- 由用户(程序员)负责同步处理
- 低级通信: 可以传递少量数据,效率低
基于共享存储区的通信方式
- 多个进程共用内存中的一块存储区域
- 由进程控制数据的形式和方式
- 高级通信: 可以传递大量数据, 效率高
消息传递
是通过OS提供的send和receive原语直接操作的
直接通信: 点到点发送
- 发送和接收时指明双方进程的ID
- 每个进程维护一个消息缓冲队列
间接通信: 广播信箱
管道通信
对共享存储的数据不安全问题进行了改善, 可以实行大数据量的传输, 效率高
管道
- 用于连续读/写进程的共享文件,pipe文件
- 本质上是内存固定大小的缓冲区
半双工通信
- 同一时段只能单向通信,双工通信需要两个管道
- 以先进先出FIFO方式组织数据传输
- 通过系统调用read()/write()函数进行读写操作