进程通信
进程间相互传递信息的过程
低级通信
效率低,通信对用户不透明。
高级通信
适用于大批量数据传达
(不是为了控制速度,为了在进程间传输大批量数据)
消息通信机制
进程间的数据交换以格式化的信息为单位,在计算机网络中,又把这种消息叫做报文。(利用一组通信原语,实现大量数据的传递,通信对用户透明。)
实现原理
消息通信机构管理一组空闲缓冲区的消息。
进程A向进程B发送消息的时候,申请一个缓冲区,填入有关数据后,发送信号给B进程。
进程B读取数据并释放消息缓冲区。
通信过程:
发送进程→开辟一个发送缓冲区 →填入消息及控制信息→ 调用发送消息系统,spn-pir指针指向缓冲区首地址。
接收进程 →开辟一个接收缓冲区 → 调用接收消息
系统。
消息一般形式有发送进程名,接收进程名,数据,有关数据的操作。
实现消息通信的两种方法:
直接通信:
进程间直接发送消息,一方发送,一方接收,没有中间环节。两个原语实现:Send(Receiver,message); Receive(Sender,message);
管道通信
用一个共享文件方式连接一个读进程和写进程,以实现他们之间通信。
先进先出,一个进程不能同时读写,写满则发送进程阻塞,读空则接收进程阻塞。
邮箱通信
间接通信方式,可满足实时与非实时通信。
发送进程申请一个与接收进程连接的邮箱,实现收,发进城之间的信息交换。邮箱相当于计算机网络中的数据报。
特点:
邮箱为空的时候才能发,有数据的时候才能接收。
收发进程之间至少存在一个邮箱。
类别:
私用信箱:有进程创建,为该进程的一部分,进程结束,邮箱消失。可采用单向通信链路的信箱来实现。
公用信箱:它由操作系统创建,为系统中所有的核准进程使用。双向通信。
共享信箱
一对一,多对一,一对多,多对多。
通信链路——为使在发、收进程之间通信,必须在两者之间建立一条通信链路。(进程自主创建;系统自动创建)