1 进程通信的定义
指 两个进程之间产生数据交互
1.1 需要操作系统支持
进程是分配系统资源的单位(包括内存地址空间)
因此 不同进程 拥有的 内存地址空间 相互独立
出于安全考虑, 避免进程A修改进程B的数据
各个进程只能访问自己的内存空间
2 进程通信的方式
2.1 共享存储
即共享存储区的内容形式由各个进程自己确定
即操作系统预先设定好共享存储区的数据结构形式
2.2 消息传递
进程间的数据交换以特定格式为单位
由操作系统提供 发送消息/接收消息 两个原语进行数据交互
类似于HTTP数据报一样
其又分为:
- 直接通信方式
- 间接通信方式
2.2.1 直接通信方式
若进程P发送消息给进程Q
- 在进程P自己的地址空间开辟内存并写入消息数据的内容
- P使用发送原语将消息发送给操作系统
- 操作系统获取到该消息, 并根据消息的控制信息将其放入收取进程的消息队列中
4. 进程Q运行时, 使用原语receive接收消息
5. 操作系统查询进程Q的消息队列是否有来自进程P的消息, 如果有则传给进程Q
总的来说, 就是进程P要发给Q, Q要接收P
2.2.2 间接通信方式
以 信箱 作为中间实体进行消息传递
进程可以申请信箱, 也可以向某个信箱中发送消息, 还可以从某个信箱中接收消息
2.3 管道通信
管道类似于一个 循环队列
又叫pipe文件
图中第五点有两种观点
考试以高教社为准
日常了解两者都有可能