进程通信
上一节
下一节
进程通信引入
并发进程之间的交往本质上是互相交换信息,有些情况下交换的信息量很少,例如某个状态信息。有些情况下交换大批数据,例如传送一批信息或整个文件。
进程之间互相交换信息的工作称之为进程通信。
进程通信的分类
低级通信与高级通信:
低级通信:只能传递状态和整数值(控制信息),包括进程互斥和同步所采用的信号量机制。缺点是:传送信息量小:效率低,若传递较多信息则需要进行多次通信;编程复杂:用户直接实现通信的细节,编程复杂,容易出错。
高级通信:能够传送任意数量的数据,包括三类:共享存储区、管道、消息。
直接通信与间接通信:
直接通信:信息直接传递给接收方,如管道。在发送时,指定接收方的地址或标识;在接收时,允许接收来自任意发送方的消息,并在读出消息的同时获取发送方的地址。
间接通信:借助于收发双方进程之外的共享数据结构作为通信中转,如消息队列。
三种常见的高级通信
(1)共享存储区:内存中开辟一个共享存储区,进程通过该区实现通信,这是进程通信中最快的方法。
(2)管道:连接读写进程的一个特殊文件,允许进程按先进先出方式传送数据。发送进程以字符流形式把大量数据送入管道,接收进程从管道中接收数据。
(3)消息:在直接通信方式下,企图发送或接收消息的每个进程必须指出信件发给谁或从谁那里接收消息,可用send原语和receive原语为实现进程之间的通信。采用间接通信方式时,进程间发送或接收消息通过一个信箱来进行,消息可以被理解成信件,每个信箱有一个唯一的标识符。
本节资料

