进程通信是指进程之间的信息交换
一、 进程通信的类型
- 共享存储器系统(操作存储区方式)
a.基于共享数据结构的通信方式(低级)
b.基于共享存储区的通信方式(高级) - 消息传递系统(发–收方式)
最广泛使用的一种,进程间的数据交换,以格式化的消息为单位。屏蔽底层复杂操作。 - 管道通信(中间文件方式)
用于连接一个读进程和一个写进程的共享文件(pipe文件)
管道的协调能力通过实现互斥、同步以及确定对方是否存在来协调读写进程的运行 - Client-Server system
远程过程调用RPC:请求端-远程服务器-应答端-远程服务器-请求端 实现消息的传递
二、消息传递通信的实现方法
- 直接通信方式
利用OS中的发送原语,直接把消息发送给目标进程
消息传递系统的实现:
①直接通信原语:
send(receiver,message);
receiver(sender,message);
②消息的格式:单机环境中,较简单,可采用等长或变长消息合适
③进程的同步方式:
发送进程阻塞,接受进程阻塞:用于进程之间紧密同步,发送进程和接受进程无缓冲时
发送进程不阻塞,接受进程阻塞:接受进程收到发送进程的消息时被唤醒
发送进程不阻塞,接受进程不阻塞:仅当发成某时间使它无法继续运行时,才把自己阻塞起来等待
④通信链路:单机:系统会自动建立一条链路,分为单向通信链路和双向通信联络 - 间接通信方式
通过共享中间实体(邮箱)的方式进行消息的发送和接受
邮箱的类型:
①私有邮箱:拥有者可以读取消息,其他用户则只能发送到该邮箱
②公用邮箱:进程可将发送信息到邮箱中,也可通过邮箱提取信息
③共享邮箱:拥有者和共享者都有权从邮箱中取走发送给自己的信息
在利用邮箱通信时,在发送进程和接受进程之间有四种关系:
a.一对多
b.多对多
c.多对一
d.一对一