分布式程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
并行性的表示(续)
进程的创建可以由说明隐式地完成,也可以用 某种“创建”结构显式地完成。在隐式创建的 语言中,程序员通常先说明进程类型,后以说 明该类型的变量方式创建这类进程;有时还可 以说明进程阵列(array)。在一些隐式创建进程 的语言中,进程总数是在编译时确定的,这使 得把进程变换到物理处理机容易些,但它限制 了应用程序的类别,因为必须事先知道进程数。
并行性的表示
表示并行性有各种方法。一个重要因素是语言的并行 单位。在顺序语言中,并行单位是整个程序。但在分 布式程序设计中,并行单位可以是进程、对象、语句、 表达式或子句(逻辑语言中)。
进程 用于分布式程序设计的大多数过程语言中,并 行性是基于进程的概念,不同语言有不同定义。一般 说来,一个进程是一个逻辑处理机,顺序地执行代码, 具有自己的状态和数据。进程(或进程类型)是要被说 明的,就象过程(或过程类型)一样。
分布式应用程序分类(续)
容错应用程序
对于象控制飞机或自动工厂等类应用程序, 使用单处理机不可靠。而分布式系统具有部 分失效性质,即由于各处理机具有自治性, 一个处理机上的故障不影响其他处理机的正 常工作,所以可靠性高。还可以在若干处理 机上复制应用程序的数据或函数来增加可靠 性。如果一些处理机崩溃了,其他处理机还 可继续执行该作业。
并行性的支持
因为分布式系统有多个处理机,所以可把程序分成若干部分放到 多个处理机上同时运行,这就是所谓并行性。
除了并行性外,还有所谓伪并行性(pseudo parallelism);有时用 来把一个程序表示为一组并行运行的进程但不管它们是否在不同 处理机上同时运行。例如某个给定的程序可能表示成几个很大程 度上独立并行运行的进程,但此程序瞬间只运行其一部分。这就 是所谓伪并行性。
四川大学计算机学院 袁道华 教授
Overview
分布式程序设计的特点 分布进程 通信顺序进程 分布式程序设计语言的通信机制 The PVM System
分布式程序设计
即设计运行于分布式计算机系统上的分布式 程序。
一个分布式程序由若干可以独立执行的程序 模块组成,这些程序模块分布于一个分布式 计算机系统的几台计算机上同时执行。
在分布式程序设计中伪并行性在下述情况中是有用的。例如一个 程序有四个进程,如果在由四个以上处理机组成的分布式系统上 运行,则此四个进程可分别在四个处理机上运行,达到真正的并 行。但如果此分布式系统仅有两个处理机时,则每个处理机运行 两个进程;达到伪并行,在给定时刻;程序的四个进程中最多只 有两个真正地并行运行。
分布式应用程序分类(续)
使用专用功能的应用程序
可把一些应用程序构造成一组专用的服务程序。例如 象Amoeba这样的分布式操作系统可提供文件服务、打 印服务、进程服务、终端服务、时间服务、自举服务 和网间连接服务。在分布式硬件上实现这样的应用程 序是很自然的。每个服务可使用一个或多个专用处理 机,因为这样会得到好的性能和高可靠性。这些服务 可相应跨过网络发送请求。如果要增加新的功能或现 存功能需要增加额外的计算机性能,增加新的处理机 是很容易的。
并行性的支持(续)
某些语言不对程序员隐匿并行性和伪并行性的差别。 程序员可以显式地把各段程序赋予给某些处理单元, 这给程序员增加了负担,但也提供了较大的灵活性。 例如,这时程序员可以控制进程到处理机的变换,能 支持在同一处理机上运行的各进程共享变量,而不允 许分配给不同处理机上的各进程共享变量。
注意并行性的目标不等于并行性的实现。也就是在某 些应用程序中,目标要达到高并行性(为了使计算时间 缩短),但并不是所有的分布式应用程序都具有高度的 并行性。但即使在这种情况下,表达并行性的能力也 是重要的,因为这反映了分布系统的特征。
并不是所有的语言都支持对并行性的显式控制。在一 些语言中,由编译程序而不是由程序员把程序代码划 分为若干并行的段。还有的语言中,发送一个代表某 一进程的报文时会隐式地在远程主机上产生另一个并 行进程对该请求进行处理。
来自百度文库
并行性的表示(续)
显式创建进程的方法比隐式的更为灵活。例如: 可以把参数传送给新创建的进程。这些可典型 地用于设置进程之间的通信通道。如果进程不 使用参数(如Ada),则必须用显式的通信把这 些参数传送给新创建的进程。还需要一个机制 建立发送该参数的通信通道。
另一个问题是进程结束。进程通常自行结束, 但也可提供某些原语使某些进程中途夭折。需 要某些设施防止进程试图与已结束的进程通信。
分布式应用程序分类(续)
固有的分布式应用程序
有些应用本身就是分布的,例如在两个用 户工作站之间发送电子邮件。可把工作站的 集合看一个分布计算系统,这样应用程序 (email)必须在分布式硬件上运行。类似地, 具有多个办公室和工厂的公司可能需要建立 一个分布系统,以使不同地点的人们能用机 器联系。
分布于各台计算机上的程序模块是相互关联 的,它们在执行中需要交换数据(即通信)。
当某几台计算机发生故障时,程序仍可执行 下去。(Robustness)
分布式应用程序分类
并行、高性能应用程序
通过并行性达到加速是在分布计算系统上运行应用程 序的最普通的理由。将一个程序的不同部分放到不同 的处理机上同时执行,就可完成得快些。
各种语言的并行粒度变化很大,并行单位可以是进程 (如并发c),也可以是表达式(如ParAlfl)。一般说来, 通信代价越大,则并行粒度越大。例如在超立方体分 布式系统中有可能以低的通信代价有效地支持细粒度 并行性,而在高通信代价的远程网络中细粒度并行性 的通信代价可以抵消掉并行计算得到的好处。
并行性的支持(续)
➢ 并行应用程序可进一步按使用的并行粒度分类。粒度 是在通信之间的计算时间的数量。大粒度并行程序用 大部分时间进行计算而不经常通信;细粒度并行程序 经常通信。细粒度和中等粒度并行最适合用于紧密耦 合分布式系统;在松散耦合系统上,通信开销非常大。 大粒度并行既适用于紧密耦合系统也适用于松散耦合 系统。