进程间通信(IPC):
IPC有两种方法:
1,共享内存(用户进程控制)
2,消息传递(内核控制)
共享内存系统:
采用共享内存的进程间通信需要通信建立共享内存区域
消息传递系统:
消息传递机制允许进程不必通过共享地址空间来实现通信和同步,这在分布式环境中特别有用。
消息传递工具至少提供两种操作:
发送(send)和接受(receive)
如果进程P和Q需要通信,他们必须彼此相互接收和发送消息,它们之间必须有通信线路(communication link)
通信线路的实现:
物理:
- 共享内存
- 硬件总线
- 网络
逻辑:
- 直接或间接通信
- 同步或异步通信
- 自动或显式缓冲
直接通信:
通信的每个进程必须明确地命名通信的接收者或发送者。
send(P, message):发送消息给进程P
receive(Q, message):接收来自Q的消息
特性:
- 每对进程自动建立路线,只需要知道相互的标识符
- 一条线路只与两个进程有关
- 每对进程只有一条线路
- 线路可能是单向的,但通常是双向的
间接通信:
通过邮箱或端口来发送和接收信息,邮箱可以抽象成一个对象,进程可以在其中存放消息,也可以删除消息。每个邮箱都有一个唯一的标识符。
假设进程P1,P2,P3都共享邮箱A,进程P1发送一个消息到A,进程P2和P3都能对A执行receive。
接收方案:
- 允许一个线路最多与两个进程相关联;
- 最多允许一个进程执行receive( )操作
- 允许系统随意选择一个进程以接收消
邮箱是独立存在的,并不属于某个特定对进程。所以操作系统允许进程有以下操作:
- 创建新邮箱
- 通过邮箱发送和接收信息
- 删除邮箱