在共享内存环境中,进程之间共享一个内存区域,并且访问和操作共享内存的代码由应用程序的程序员显式地编写。

消息传递提供了一种机制,允许进程在不共享相同地址空间的情况下进行通信和同步它们的操作。在分布式系统中,即通信的进程处于可能存在于由网络连接的不同计算机上,这种方式非常有效。比如:一个网络聊天程序可以这样设计,因此,聊天的参与者就可以通过交换信息互相交流。

消息传递机制提供了至少两种操作:

  • send(message)
  • receive(message)

进程发送的消息可以是定长的,也可以是不定长的。如果只能发送固定大小的消息,那么系统级的实现是简单的。然而,这种限制使得编程任务变得更加困难。相反,不定长消息需要更复杂的系统级实现,但是编程任务变得更简单。这是在整个操作系统设计中常见的一种折衷。

如果进程P和Q想要通信,他们必须彼此相互发送消息和接收消息,他们之间必须有通信线路(communication link)。通信线路有多重实现方法。我们这里不关心物理实现(如共享内存、硬件或者网络,17章讲),来看逻辑实现。以下是几种逻辑实现通信线路的方法以及send() / receive()操作:

  • 直接或者间接的通信
  • 同步或者异步的通信
  • 自动的或者显式的缓冲

接下来我们将讨论与这些特性相关的问题

results matching ""

    No results matching ""