- 1、本文档共70页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章_进程间通信
第2章 进程间通信 2.1 IPC程序接口原型 2.2 事件同步 2.3 超时和线程 2.4 死锁和超时 2.5 数据表示 2.6 数据编码 2.7 基于文本的协议 2.8 请求-响应协议 2.9 事件状态图和顺序状态图 2.10 面向连接IPC与无连接IPC的比较 2.11 进程间通信范型的演变 分布式计算的核心技术是进程间通信(interprocess communication,IPC),即在相互独立的进程间通信及共同协作以完成某项任务的能力。在本章中,我们将介绍IPC的基础知识、相关技术问题、范型及实现。 范型 是一个用以说明如何完成某项任务的抽象模型。 图2.1图示了基本的IPC机制:两个可能运行在不同机器上的独立进程,通过互连网络交换数据。在图中,进程1作为发送者,向进程2发送数据,进程2是接收者。 在分布式计算中,两个或多个进程按约定的某种协议进行IPC,此处协议是指数据通信各参与进程必须遵守的一组规则。 在协议中,一个进程有些时候可能是发送者,在其它时候则可能是接收者。当一个进程与另一个进程进行通信时,IPC被称为单播; 当一个进程与另外的一组进程进行通信时,IPC被称为组播。 图2.2示出了这两种类型进程间通信的概念。 现代操作系统如UNIX和Windows都为进程间通信提供了相应的设施。我们称这些设施为操作系统级IPC设施,以区别于高层的IPC。 系统级IPC设施包括消息队列、信号灯和共享内存等。直接利用这些系统级设施,就可以开发网络软件,如网络服务驱动程序和系统评测程序等。 一些基本的分布式应用软件也可以利用这些设施开发,但一般不这么做,因为应用往往比较复杂,需要利用某种抽象机制,使编程人员从系统级的细节中摆脱出来。本书主要关注较高抽象层上的IPC。 IPC API提供了对系统级设施的复杂性和细节的抽象,因此允许编程人员将注意力集中在应用逻辑上。 2.1 IPC程序接口原型 考虑可以提供进行IPC所需的最低抽象层的基本API。在这样的API中,需要4种基本操作。 发送。该操作由发送进程发起,旨在向接收进程传输数据。操作必须允许发送进程识别接收进程和定义待传数据。 接收。该操作由接收进程发起,旨在接受发送进程发来的数据。操作必须允许接收进程识别发送进程和定义保存数据的内存空间,该内存随后被接收者访问。 连接。对面向连接的IPC,必须有允许在发起进程和指定进程间建立逻辑连接的操作:其中一进程发出请求连接操作,而另一进程发出接收连接操作。 断开连接。对面向连接的IPC,该操作允许通信的双方关闭先前建立起来的某一逻辑连接。 参与IPC的进程将按照某种预先定义的顺序发起这些操作。每个操作的发起都会引起一个事件的发生。 例如,发送进程的发送操作导致一个把数据传送到接收进程的事件,而接收进程发出的接收操作导致数据被传送到进程中。 注意,参与进程独立发起请求,每个进程都无法知道其它进程的状态。 后面章节介绍的各种范型中,都可以显式或隐式地提供IPC操作。 网络服务协议也可以利用基本的IPC操作来实现。例如,基本HTTP是一种超文本传输协议。在这种协议中,一个进程(即浏览器)通过发出connect操作,建立到另一进程(即web服务器)的逻辑连接,随后向web服务器发送send操作来传输数据请求。 接着,web服务器进程发出一个send操作,来传输web浏览器进程所请求的数据。通信结束时,每个进程都发出一个disconnect操作来终止连接。 图2.3示出了该操作序列。 2.2 事件同步 IPC中的一个主要难点是进程IPC的各个相关进程是独立执行的,各进程间不知道对方进程的情况。 我们看看前面介绍的基本HTTP。协议双方必须按特定顺序发起IPC操作。例如,服务器浏览器进程不可在connect操作完成前发出send操作。web服务器进程只有在浏览器准备接收数据时,才能开始发送传输请求数据。浏览器进程要在所请求的数据到达时得到通知,以便接着处理数据,包括格式化数据并向浏览器用户显示数据。 IPC设施提供事件同步的最简单方法是使用阻塞 机制,即挂起某一进程的执行,直到该进程发起的某个操作执行结束。 为了说
文档评论(0)