第3章分布式程序设计语言

上传人:M****1 文档编号:568290503 上传时间:2024-07-24 格式:PPT 页数:76 大小:191.50KB
返回 下载 相关 举报
第3章分布式程序设计语言_第1页
第1页 / 共76页
第3章分布式程序设计语言_第2页
第2页 / 共76页
第3章分布式程序设计语言_第3页
第3页 / 共76页
第3章分布式程序设计语言_第4页
第4页 / 共76页
第3章分布式程序设计语言_第5页
第5页 / 共76页
点击查看更多>>
资源描述

《第3章分布式程序设计语言》由会员分享,可在线阅读,更多相关《第3章分布式程序设计语言(76页珍藏版)》请在金锄头文库上搜索。

1、第三章第三章 分布式程序设计语言分布式程序设计语言 3.1 3.1 分布式程序设计语言概述分布式程序设计语言概述 v分布式应用程序的分类分布式应用程序的分类 并行、高性能应用程序。通过并行性达到加速是在分布计算系统上运行应用程序的最主要的原因。 容错应用程序。而分布计算系统具有允许部分失效的特性,即由于各处理机具有自治性,一个处理机的故障不影响其他处理机的正常工作,所以可靠性高。程序和数据也可在若干处理机上复制而进一步增加可靠性。 具有专用功能的应用程序。一些应用程序可以被构造成一组专用的服务程序。例如文件服务、打印服务、进程服务、终端服务、时间服务等。 固有的分布式应用程序。有些应用程序本身

2、就是分布的,在这种情况下,可以把工作站的集合看成一个分布计算系统,这种应用程序必须在分布式硬件上运行。 罗来碎激乍宙踩哗协茧狄火清敝摄枕琅煎洛雀伴彻坑勘之辣购轩局塞玩慷第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.1 3.1 分布式程序设计语言概述分布式程序设计语言概述 v分布式程序设计与顺序程序设计的区别分布式程序设计与顺序程序设计的区别 使用多个处理机。对分布式程序设计支持的第一个要求就是系统应该具有把一个程序的不同部分分配到不同处理机上执行的能力。 处理机合作。各个进程必须能相互通信和同步,这是对分布式程序设计支持的第二个要求。

3、处理部分失效。在分布计算系统中一些CPU失效时,其他CPU照样工作。所以对分布式程序设计支持的第三个要求是能对系统的部分失效进行检测并恢复。 蒲子映衍媳著磁十尧卧避低真圣衫龟黎赛蛮流妄贷铡撼涅冶制银啃莎烹笆第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.1 3.1 分布式程序设计语言概述分布式程序设计语言概述 v分布式程序设计语言的分类分布式程序设计语言的分类 按并行模型来分按并行模型来分 1)顺序进程并行语言。这类语言使用的最基本模型是一组顺序进程,它们并行运行,并且通过报文传递进行通信。大部分是流行的C(或C+)和FORTRAN的扩展

4、。2)具有内在并行性的语言。一些研究者认为算法语言不是处理并行性的最好语言,因为算法语言是内在顺序式的,许多研究者研究具有内在并行性的语言,如函数式语言、逻辑语言和面向对象语言。 植怕厢索起啸虐砒峦裴楼玄余曲技盔洲扮脉李葫痊琼赖帚衰嚎遵居陋村群第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.1 3.1 分布式程序设计语言概述分布式程序设计语言概述 v分布式程序设计语言的分类分布式程序设计语言的分类 按通信模型来分按通信模型来分 1)在物理分布的硬件上运行逻辑上分布的软件。相互使用SEND和RECEIVE原语通信,在网络上发送报文。 2)在

5、物理非分布的硬件上运行逻辑上分布的软件。用共享主存方法实现报文传递来模拟物理报文传递通信。 3)在物理分布的硬件上运行逻辑上非分布的软件。使用分布式共享存储器通信。4)在物理非分布的硬件上运行逻辑上非分布的软件。使用物理共享存储器通信。 留丑峨抡蹭烈菱困好渍攘溯双岿量桃祭殊鸵舶含籽铀逻磁绣亭湿干伐姥存第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.1 3.1 分布式程序设计语言概述分布式程序设计语言概述 v分布式程序设计语言的分类分布式程序设计语言的分类 容错模型和技术容错模型和技术故障的处理模型: 1)系统对程序员隐匿全部处理机故障。2

6、)给程序员提供高层机制,使得程序员能够描述哪些进程和数据是重要的,以及发生崩溃后怎样恢复。实现可靠性的方法有两种:程序设计容错和通信容错。1)程序设计容错技术有三类:向前恢复试图确定错误所在并基于这个知识改正包含错误的系统状态;向后恢复通过把系统恢复到错误发生前的状态来改正系统状态;错误屏蔽,利用同一个算法独立开发几个版本,一个最后投票系统用于对这n个版本产生的结果进行投票并确定一个正确的结果。2)通信容错处理进程通信中发生的故障,通信容错依赖于使用的通信方式和故障的类型。 遵釜颁芥碱较经蔚摄笑谬匣酥镁健捂案琵郝善波丽贪通庶棱衰耿钓了耿澜第3章分布式程序设计语言第3章分布式程序设计语言第三章第

7、三章 分布式程序设计语言分布式程序设计语言 3.2 3.2 并行性的支持并行性的支持 v并行性的概念并行性的概念 并行性。因为分布计算系统有多个处理机,所以可把程序分成若干部放到多个处理机上同时运行,这就是所谓的并行性。 伪并行性(pseudo parallelism),即把程序表示为一组并行运 行的进程但不管它们是否在不同的处理机上同时运行。 并行粒度。并行单位可以是进程(如并发C),也可以是表达式(如Par Alfl)。一般说来,通信代价越大,则并行的粒度就应该越大。 池毛顷旨踩灼乞茄星擅去柄耙伊粘钉尸勋瘦敏矮苫差鹿仅深兢耍庞肠折掘第3章分布式程序设计语言第3章分布式程序设计语言第三章第三

8、章 分布式程序设计语言分布式程序设计语言 3.2 3.2 并行性的支持并行性的支持 v并行性的表示并行性的表示 进程并行。一般说来,一个进程是一个逻辑处理机,顺序地执行代码,具有自己的状态和数据。在语言中,进程或进程类型是要被说明的,就像过程或过程类型一样。进程的创建可以由说明隐式地完成,也可以通过创建某种结构显式地完成。 对象并行。用下述方法扩充顺序对象模型可获得并行性:(1)允许对象不必在收到报文时才活动;(2)允许接收对象在返回结果后继续执行;第(3)一次向几个对象发送报文;(4)允许报文发送者继续和接收者并行工作。果褪碧驯澡鞠黎圆操埃屏受理骗攀帜伍暴尝跪菜在舜汝慎拙壤减猾暗愉赏第3章分

9、布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.2 3.2 并行性的支持并行性的支持 v并行性的表示并行性的表示 语句并行语句并行PAR j=0 FOR n Aj:=Aj+1 PAR S1S2淆洼挽触井肢隶值逢蜜鳞稳颅悬啊至惺锈曼诧轩滞坎路鹅矮涪北妇敦碍甭第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.2 3.2 并行性的支持并行性的支持 v并行性的表示并行性的表示 函数并行函数并行 例例如如表表达达式式h(f(3,4),g(8)h(f(3,4),g(8),先先计计算算f f或或g g是是没

10、没有有关关系系的的,从从而可以并行计算而可以并行计算f f和和g g。 子句的并行子句的并行下面的程序给出谓词A的两个子句:(1) A:-B,C,D(2) A:-E,F存在两个并行性的机会:(1) A的两个子句可并行工作只到有一个成功或两个都失败。(2) 每个子句中的子定理可并行工作直到它们全都成功,或其中一个失败。前一种并行性叫做OR并行性,后一种叫做AND并行性。 囤弧垢偷瓦醒始被酥谐醉奠垒茂刑燕淤艰犹蚌察吭费镍霍允拣揪孟秦巫拦第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.3 3.3 进程通信与同步的支持进程通信与同步的支持 v报文

11、传递报文传递进程通信的表示方法:报文传递和共享数据进程通信的表示方法:报文传递和共享数据 设计报文传递的通信方式应考虑的问题:1)可靠的报文传递和非可靠的报文传递:可靠的报文传递需要承认报文。2)显式接收和隐式接收:显式接收时,接收者执行某一类accept语句指明接收哪些报文,以及当报文到达时采取什么行动。使用隐式接收时,在接收者内自动调用程序,通常在接收进程中创建一个新的线程。 3)直接命名和间接命名:直接命名用于指示一个指定的进程,名字可以是该进程的静态名字或是一个表达式。间接命名包括一个中间对象,通常叫做邮箱,发送者把报文送给它,接收者从它那接收。 旬圈坠康砌挡伦弱嫡遇牌兢过慌仪滴楷苔邮

12、铡拟仪坛氧逾麓讼淌献瑶座蒋第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.3 3.3 进程通信与同步的支持进程通信与同步的支持 v报文传递报文传递进程通信的表示方法:报文传递和共享数据进程通信的表示方法:报文传递和共享数据 设计报文传递的通信方式应考虑的问题:4)对称命名和非对称命名。如果发送者和接收者相互命名,则基于直接命名的方案是对称的。在非对称方案中,仅发送者找接收者,在此情况下,接收者要与任何发送者相互作用。注意,使用隐式接收报文的相互作用在命名方面总是非对称的。 无下以搬润鲤涅饯的帽狰萧阑壕鳃靶句搔肯绷碎穷瞅责红亿陌葛阴肿会尺第

13、3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.3 3.3 进程通信与同步的支持进程通信与同步的支持 v报文传递报文传递报文传递通信模式有 :1)同步和异步点到点报文。在同步报文传送方式中,发送者在接收者接收报文前一直阻塞。这样,双方不仅交换了数据而且还达到同步。在异步报文传送方式中,发送者并不等待接收者准备好接收其报文,发送者在送出报文后立即继续工作。2) 会合。在Ada中会合模型基于三个概念:项说明、项调用和接受语句。项说明和接受语句是服务员程序的一部分,项调用在顾客端。当进程S调用进程R的一项,R为此项执行accept语句时,在S和R

14、之间发生了相互作用,叫做会合。 accept incr(X: int; Y: out int)do Y:=X+1;end姻渺脊赊蒋帽禁杏旧岔称妆碾废盘猖锁直精琵洞郝剩孽橙柜珊仆跃恍伯大第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.3 3.3 进程通信与同步的支持进程通信与同步的支持 v报文传递报文传递报文传递通信模式有 :3)远程过程调用(RPC)。它是双向通信的另一个原语。当进程S调用进程R的过程P时,由S提供的P的输入参数被送给R。当R收到调用请求时,执行过程P,然后把输出参数送回给S。执行P期间S阻塞,直到输出参数返回。这和会合机

15、构不同,在会合机构中,一旦accept语句已执行,则调用者就不阻塞。 4)一到多报文传送。很多用于分布计算系统的网络支持快速的广播或组通信设施。 诚闷败陡莹属递奈患楷勾救疚害校寓撑罕奴犹糊衷柔胶享搁妄审掸庇精硫第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.3 3.3 进程通信与同步的支持进程通信与同步的支持 v共享数据共享数据如果两个进程访问同一个变量,可以实现另一种通信方式:一个进程对此变量进行设置,另一个进程对它进行读。如果两个进程在同一个机器上运行,变量在此机器上存储,则可直接通信。分布进程的共享数据方法有:分布式数据结构和共享的

16、逻辑变量 。1)分布式数据结构。这种数据结构可由若干进程同时处理。Linda语言使用元组空间(tuple space)的概念实现分布式数据结构。例如“jones”,31,true是一个有三个段的元组:一个字符串、一个整数和一个布尔值。对TS定义了三个原子操作:out操作向TS加入一个元组,read读TS中的一个元组,in读TS中的一个元组并删除它。 盾湘坷毡励腋喉朽叠湖挟韩团碧猜钞譬魁淤犹谣卷雌删郝颗焉并踞剥煌处第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.3 3.3 进程通信与同步的支持进程通信与同步的支持 v共享数据共享数据2)共享

17、的逻辑变量。逻辑变量具有“单赋值”性质,最初,它们是未赋值的,但一旦它们接收一个值就不能改变它们。这些变量被用于进程之间的通信通道。如下三个目标:goal_1(X,Y), goal_2(X,Y), goal_3(X)进行逻辑乘,用进程P1、P2、P3并行求解。变量X是这三个进程的通信通道,最初是未赋值的。如果三个进程中的某个给X赋值,则其它两个进程可使用此值。类似地,Y是P1和P2的通信通道。 彦睡令显挫佃纤卓捂搞帚滑泵却酋镀战酌掏邮丘互冀滚宿冈慌超磷处缸沾第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.3 3.3 进程通信与同步的支持进

18、程通信与同步的支持 v非确定性的表示和控制非确定性的表示和控制 进程之间的相互作用模式并不总是确定性的,有时还决定于运行进程之间的相互作用模式并不总是确定性的,有时还决定于运行时条件。因此,表示和控制非确定性模型被提出。选择语句和保时条件。因此,表示和控制非确定性模型被提出。选择语句和保护的护的(guarded)Horn(guarded)Horn子句子句 是两种表示和控制非确定性的模型。是两种表示和控制非确定性的模型。1)选择语句。它是由如下形式的一组保护命令组成的: 保护语句 其中保护(guard)由一个布尔表达式和某一类“通信请求”组成。布尔表达式必须无副作用,因为它可能在执行该选择语句过

19、程中被计算多次。 慑形沦杉诣惮粮绣点涅售丛格脂巾哈莹雷苗俩傍搜狐吮纹韵病拧群黑裳证第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.3 3.3 进程通信与同步的支持进程通信与同步的支持 v非确定性的表示和控制非确定性的表示和控制 2)保护的Horn子句。逻辑程序本质上就不是确定性的。并行逻辑语言不是对一给定的谓词一个又一个地试验子句,失败时回溯,而是并行地搜索所有那些子句,并且在这些并行执行期间直到有一个并行执行提交前不允许任何赋值对外部是可见的,这叫做OR并行性。但是,这不能无限地进行,因为并行工作的搜索路径随证明的长度而指数地增长。 很

20、普遍的控制OR并行性技术是提交选择非确定性,它非确定地选择一个可选择的子句,取消其他子句。它是基于保护的Horn子句,形式如下:A:-G1,Gn|B1,Bmn0,m0目标Gi的合取(与操作)叫做保护,目标Bi的合取叫做体(body)。提交操作符“|”也是一个合取操作符。 沫噶逊古荷枣召欢堕均渔蒸徘执蔑列宗艾瘟窖队管酬场驻麦怠甸防猩唬陨第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.4 3.4 逻辑上分布地址空间的语言逻辑上分布地址空间的语言 v分布式程序设计语言的分类:分布式程序设计语言的分类: 分布式程序设计语言分布地址空间共享地址空间

21、同步报文传送异步报文传送会合远程过程调用多重原语对象原子事务处理函数式语言逻辑语言分布数据结构着位缺庙榴厦慕翔禁股恐军亩匀碰宫软舌半理戚粱戈呼扭尘衔比彪夏害阂第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.4 3.4 逻辑上分布地址空间的语言逻辑上分布地址空间的语言 v同步式报文传递语言同步式报文传递语言 : 1)创建并行进程:如CSP提供简单的并行命令创建固定数目的并行进程。进程包含名字、逻辑变量和一系列语句(进程体)。 CSP可以创建一组相似的进程,但其数目必须在编译时是个常数。例如并行语句writer:X:real;|reader(

22、i:1.2): 创建三个进程,叫作“writer”、“reader(1)”和“reader(2)”。Writer有一个局部变量X。下标量i可在reader进程的体中使用。 2)通信:CSP进程不能使用全局变量相互通信,只能使用同步的receive和send。执行send或receive的进程受阻一直到其对方执行完互补的语句为止。例如X:Y! 3|Y:n:integer;X? n在进程X的语句中,把值3发送给Y。在进程Y的语句中,从进程X读取输入,并存放到局部变量n中。 冗外诗陀迫益胆五郑友绪疆蔚啥埃菩亏试闭谷徽文冉畸饱蓝剁蹄劫账靡庞第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章

23、分布式程序设计语言分布式程序设计语言 3.4 3.4 逻辑上分布地址空间的语言逻辑上分布地址空间的语言 v同步式报文传递语言同步式报文传递语言 : 3)可传递的数据类型:简单数据和有结构的数据均可传送与赋值,只要发送的值与接收它的变量类型相同。可给有结构的数据一个名字(构造符),如下例中的pair:X:Y! pair(35,60)|Y:n,m:integer;X? pair(n,m)可使用空构造符对两个进程进行同步但不传送任何实际数据。4)非确定性的表示:CSP中使用alternative结构表示非确定性,它由一组保护(后面跟着待执行的动作)组成。保护可包含布尔表达式和一个输入语句。CSP允许

24、进程根据当前通信的输入和名字段的信息有选择地接收。 衣敬链似咸父耳盘脏符壤桔跟甘申臻钡墓诈蓬尽零潘排餐澎街砸扮巴追微第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.4 3.4 逻辑上分布地址空间的语言逻辑上分布地址空间的语言 v异步式报文传递语言异步式报文传递语言 : 1)并行性单位:NIL中的并行性是基于所谓进程模型。进程不仅是并行性的单位,也是模块化的单位。进程到处理机变换是实现上的问题,由编译和运行时系统处理。 2)NIL可动态地进行进程间通信路径的配置:NIL中的信口是一个排队的通信通道。在给定时间,一个信口有一个指定的所有者。所

25、有者关系可以转让给其他进程,可以把信口作为报文的一部分传送,或把信口作为一个新创建进程的初始化参数传送。进程可以连接其拥有的输入口和输出口。 乃跟梁念德勤咱崇李警涵撂件共肠勋骨法关蛛帚庶纸绕矢舶盂闻拌缮崩通第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.4 3.4 逻辑上分布地址空间的语言逻辑上分布地址空间的语言 v异步式报文传递语言异步式报文传递语言 : 3)通信类型:NIL既支持同步通信也支持异步通信,可把单个输入口连接到几个输出口,所以在输入口可以有多个挂起的报文,因而必须排队。4)非确定表示:NIL提供一个保护命令风格的语句用于在

26、任何输入口上等待报文。 奈肯立娘抑吩绿摸撅棚班冠伸餐找污肿廖窄州偷痪赖哉狠泊霄绸硅逸证恿第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.4 3.4 逻辑上分布地址空间的语言逻辑上分布地址空间的语言 v基于会合的语言基于会合的语言 : Ada:1)并行性表示:其并行性是基于顺序进程,叫作任务(task),每个任务具有一定的类型。任务由说明部分(说明其他任务如何与其通信)和一个体(包含它的可以执行的语句)组成。2)通信:任务通常通过会合机制通信,也通过共享变量通信,会合机制基于项说明、项调用和接受语句。 3)非确定性表示:Ada使用selec

27、t语句表示非确定性。这个语句用于三个目的:从一组未处理的请求中非确定地选择一个项调用;有条件地调用一项(即仅当被调用的任务准备好立即接受它)和为一个项调用设置时限。 4)容错:Ada有一个异常处理机制处理软件故障,但语言定义未说明硬件故障问题。 凶酋啊卜音酬亏啡酉讣略啸秘拱豢蒜晋灭散鸥祁仅屑驴巧嗡胸庸斡咳析衷第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.4 3.4 逻辑上分布地址空间的语言逻辑上分布地址空间的语言 v基于会合的语言基于会合的语言 : 并发C:1)进程创建:它使用create原语显式地创建进程,并可向创建的进程传送参数。可

28、赋给新进程一个优先权,以后新进程或其他进程还可以改变此优先权。2)通信:进程通过会合机构相互通信。并发C中的事务处理与Ada中的项不同,可以返回一个值,并支持异步事务处理(但并不返回值)。并发C支持一个比Ada中的功能更强的accept语句,它根据事务处理参数的值,可以有条件地接受一些事务处理 。3)非确定性表示:使用select语句表示非确定性。4)容错:基于进程复制。 钙律亮向蛀誊个勾傣丘贫益捕唱痊眠译糖绚臃婶鸟夜拆怀获极作配境衡猴第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.4 3.4 逻辑上分布地址空间的语言逻辑上分布地址空间的

29、语言 v基于远程过程调用的语言基于远程过程调用的语言 : 1)DP的进程:每个处理机专用于执行一个进程,但每个进程可包含几个处理线程,这些线程以伪并行方式运行。2)通信:DP进程相互调用对方的公用过程进行通信,用如下形式调用: Call P.f(exps,vars)这里P是被调用进程的名字,f是由P说明的过程名字,表达式是输入参数,返回值赋予变量vars。忙稳割京傲羔廷异贩腥眼界墟蝇抒佐舌卷蜜商汛腰蛹寡阎阿宇膀挞忍辗谰第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.4 3.4 逻辑上分布地址空间的语言逻辑上分布地址空间的语言 v多重通信原

30、语多重通信原语 : 1)SR是由一个或多个资源(resource)组成。资源是运行在一个物理节点(单处理机或共享存储器多处理机)的一个程序模块,可动态创建,并可选择地分配到指定机器上运行。 2)资源可包含多个进程,它们共享数据。资源可包含一个初始进程和终结进程,它们隐式地被创建和运行。 3)SR使用类似于select语句的结构处理非确定性。 4)SR操作的定义类似过程的定义,可看成一个过程或入口点(entry point)。 竞宝搔颊抢芹蚊已哪华他岔市惩氨咆嫌溶贡谊禾勒古沉丢终挚善阜慨逐徘第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.4

31、 3.4 逻辑上分布地址空间的语言逻辑上分布地址空间的语言 v多重通信原语多重通信原语 : 5)把操作的两种服务方式和两种调用方式结合起来就有四种进程通信方法 。 call(同步)send(异步)entry(同步)会合报文传送process(异步)RPCFork小逊投豪南训判腔犁荐耕赏缘愧箱星浴投岂腮眼蔡闷忆诗偷跑佛韭揭泄齐第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.4 3.4 逻辑上分布地址空间的语言逻辑上分布地址空间的语言 v基于对象的语言基于对象的语言 : 1)对象:Emerald把所有实体都看成对象。对象可以是主动的或被动的。

32、2)并行性:Emerald中的并行性表现在主动对象的同时执行上。一些对象可从一个处理机上迁移到另一个上。 3)分布式系统中,很多对象可以并行运行,Emerald为本地和远程调用提供相同的语义。 4)对象的迁移可由编译程序或程序员使用几个简单原语发动。对象可作为远程操作中的参数传送。对该参数对象的每次访问都会产生另一个远程调用。为了使这类调用最佳化,先把参数对象传送到目的处理机,后把该对象传送回来。因为这种情况经常发生,所以引入一个新的参数传送类型,叫做传送调用(call_by_move)以便有效地完成这种操作。 松加瘟陶得迟员淄锯具字蛹婿页魔底埠夕淳志勘潮咆粘绢冬贼楔啤甜醚抱第3章分布式程序设

33、计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.4 3.4 逻辑上分布地址空间的语言逻辑上分布地址空间的语言 v基于原子事务处理的语言基于原子事务处理的语言 : Argus:1)主要特点:guardian(保护者)和action(活动)。保护者是能从崩溃中幸存下来的模块,而活动是一组原子执行。2)为了在保持原子语义下允许活动的并行,使用原子对象,它是一种原子数据类型。Argus提供一些原子类型,用户也可自己定义一些。3)Argus提供两级同步机制:用于伪并行进程的和用于并行活动的。 4)mutex类型提供对保护者内各进程所共享的对象的互斥访问。5)在容错方

34、面,可把某些保护者对象说明成stable,存放到坚固存储器中,如果某个节点崩溃了,则可在坚固存储器中检索并得到恢复。 剐泡盔捆亭混拟投洲厌寓什骡末谦序怠榨不仙廓框叁岂合绎肆兜蚜枫辆论第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.5 3.5 逻辑上共享地址空间的语言逻辑上共享地址空间的语言 v并行函数式语言并行函数式语言 : 1)ParAlfl利用隐式函数并行性。函数并行性通常是细粒度的。由于可能有比处理机数多得多的任务要并行执行,所以使用变换方法指定哪个表达式在哪台处理机上计算。 如:(f(x) $on ($self-1)+(g(y)

35、$on ($self+1) 2)通信和同步是隐式的,所以不需要显式语言结构。某个计算需要另一个计算的结果但还未出来时则受阻。 3)语义是基于迟缓计算(lazy evaluation),即一个表达式仅当其结果被要求时才进行计算。一般说来,程序员不需关心计算次序,但为了有效性要对计算次序进行控制。 骨恃吴夺移喉身峭缔血裹缝义镐椽矮砷沙渐持讲缀忱牵毋脐寐抗跪胜檬氰第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.5 3.5 逻辑上共享地址空间的语言逻辑上共享地址空间的语言 v并行逻辑语言并行逻辑语言 : 并发PROLOG :1)并行性来自合取的各

36、目标的AND并行计算和保护Horn子句的各保护的OR并行计算。 2)并发PROLOG中的并行进程使用共享逻辑变量通信。同步是基于在只读变量上暂停的办法。3)并发PROLOG使用保护Horn子句处理非确定性。蜡否杜旦乒夕尊桃党制诺珊磕滞咖丑榷喻跺涯俏苟蔷豪淡蛹貌共碰码肋滔第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.5 3.5 逻辑上共享地址空间的语言逻辑上共享地址空间的语言 v并行逻辑语言并行逻辑语言 : PARLOG:1)AND/OR并行性由程序员控制。有两种不同的合取操作符:“.”并行计算各合取;“&”串行计算各合取(自左至右)。2

37、)进程通过共享变量进行通信,而同步方法是在无界共享变量上挂起。PARLOG有个机构用来指定哪些进程可以为某变量产生赋值。如果输入自变量未被赋值,则相应的合一将挂起,当某其他进程为该变量赋值时此合一将继续。 3)PARLOG使用保护的Horn子句用于非确定性。PARLOG中的保护可测试任何输入变量并为子句的局部变量赋值,但不能给在输入自变量中传送的变量赋值。鄂妈半酒截啸啄帅窜礁鹅壳走栏亥主湘册倚铰蜗挣颈番概岁剿矫盲谓楷导第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.5 3.5 逻辑上共享地址空间的语言逻辑上共享地址空间的语言 v基于分布数

38、据结构语言基于分布数据结构语言 : Linda:1)Linda的目标是将程序员从并行计算和并发事件的思考中解脱出来,从而使并行程序设计在概念上类似于顺序程序设计。2)Linda使用简单原语eval创建顺序进程,但不为程序设计人员提供方法把进程变换到处理机上,实际上并不需要,因为每个处理机执行一个进程。3)Linda使用元组空间通信模型。进程通信要向TS插入新元组、读和移去现存的元组。进程同步方法是使用阻塞read和in操作等待元组可用。4)Linda的容错网络内核是基于TS的复制上的。 甚焊健岗键眠蚁表暮斌颈强棱奉停周巨和扎洗阀寐诌摹做犀彻运践演信踊第3章分布式程序设计语言第3章分布式程序设计

39、语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.5 3.5 逻辑上共享地址空间的语言逻辑上共享地址空间的语言 v基于分布数据结构语言基于分布数据结构语言 : Orca :1)这种语言的并行性是基于顺序进程。使用显式的fork原语派生新的子进程并把参数传送给它。参数可以是数值,也可以是由该子进程的说明部分指出共享的抽象数据类型。2)进程之间通信通过共享数据对象间接地进行。每个对象都属于抽象数据类型,每个抽象数据类型的定义由说明部分和实现部分组成。说明部分列出可对该给定类型的对象进行的各种操作。3)一个操作的实现可由一个或多个保护语句组成。如果是这样,一个操作的调用受阻直到至少有一个保

40、护成功,接着非确定性地选择一个为真的保护,执行其语句不再受阻。 4)共享数据对象模型在分布式系统中有效的实现方法是复制对象。如果共享对象不经常改变,可在经常读它的处理机上维持副本,对本地副本进行读操作,就可减少通信开销。梆淮怪哉庙思说剧凡验桂弄晚尔喘侩反将窘先卜苫欺惟迁论偏北汲们砾谅第3章分布式程序设计语言第3章分布式程序设计语言栗次痈矿狼烃腹弄宝郡书龚栋邪衙转虾亦幕咐素腐喀芝誓久破溯盛戒炼堡第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.6 3.6 分布式控制描述语言分布式控制描述语言DCDLDCDL vDCDL中的通用符号中的通用符号

41、 : 累根礼情绚鲸屁霜歌乃败排谴靶障铀疟烷遥伸胸乓辟匙挤尼藤遍稠匠学辛第3章分布式程序设计语言第3章分布式程序设计语言饿拍进贡淬汕础烬词枫壮往迭摔怂皱伪慨蹭蛊卓脾舟狮侣睬荧菌敦孤勾眠第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.63.6分布式控制描述语言分布式控制描述语言DCDLDCDL vDCDL中并行性表示中并行性表示 :DCDLDCDL中的并行单元是语句。中的并行单元是语句。一组并行语句表示为:一组并行语句表示为:S S1 1|S|S2 2|S|Sn n而一组顺序语句表示为:而一组顺序语句表示为: S S1 1;S S2 2;S

42、Sn n 一组语句可以用语句优先图表示一组语句可以用语句优先图表示 S S1 1;SS2 2;SS3 3|S|S4 4 ;S S5 5;S S6 6|S|S7 7 S1S2S3S4S7S5S6S1S2S3S4S7S5S6亡渗沙郧逢誊摄孜稼凭空艳腥滞麦峨仰亥足梁吝釜厘继儒曹杀怀昌创故站第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.6 3.6 分布式控制描述语言分布式控制描述语言DCDLDCDL v选择语句选择语句 :一个选择语句表示为:一个选择语句表示为:GG1 1CC1 1GG2 2CC2 2GGn nCCn n 选选择择语语句句选选择

43、择其其组组成成的的被被保保护护的的命命令令之之一一执执行行。如如果果多多余余一一个个命命令可被选择,选择将是不确定的。如下的选择语句令可被选择,选择将是不确定的。如下的选择语句xym:=xyxm:=yxym:=xyxm:=y表示如果表示如果xyxy,将,将x x赋予赋予m m;如果;如果yxyx,将,将y y赋予赋予m m;如果;如果xyxy并且并且yxyx,则将,则将x x或或y y之一赋予之一赋予m m。 渗箱六恼督鱼芥酣葱益幸哆权帧煞薄王峦召边感吕甲牙亭村撇锚维沉盅狰第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.6 3.6 分布式

44、控制描述语言分布式控制描述语言DCDLDCDL v重复语句重复语句 :一一个个重重复复语语句句指指定定其其组组成成选选择择语语句句的的交交互互次次数数,这这些些语语句句带带保保护护或不带保护,它的形式有如下三种:或不带保护,它的形式有如下三种:1 1*带保护的选择语句带保护的选择语句 2 2*不带保护的选择语句不带保护的选择语句 3 3(n)(n)选择语句选择语句 在在第第一一种种情情况况下下,当当所所有有的的保保护护都都经经过过时时,重重复复语语句句终终止止。在在第第二二种种情情况况下下,执执行行不不终终止止。第第三三种种是是一一个个特特别别的的重重复复语语句句,其其重重复的次数最多为复的次

45、数最多为n n。 候质宏敌麓趴差兢馆回到猎烂填泥酸埔采惹铲再郝拾柄桅纯沽消寥滨辰诅第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.6 3.6 分布式控制描述语言分布式控制描述语言DCDLDCDL v重复语句重复语句 :例例1 1:给出一个确定的数组:给出一个确定的数组b1:m1:nb1:m1:n,其中,其中1m1m,1n1ni:=i+1;j:=1 jnskipjni:=i+1;j:=1 酿斡矽令抢擞报痈借乘泼恋酮撞堪屹韧鸯佬讽杉亡使章年瓶褂府烙限斩燎第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序

46、设计语言 3.6 3.6 分布式控制描述语言分布式控制描述语言DCDLDCDL v重复语句重复语句 :例例2 2:确定一个:确定一个mnmn的矩阵的矩阵a1:m1:na1:m1:n中某一行的所有元素是否中某一行的所有元素是否全部为全部为0 0 i:=1; p:=m+1;i:=1; p:=m+1;*ip*ipj:=1; j:=1; q:=n+1; q:=n+1; *jq *jqai,j=0j:=j+1ai,j0q:=jai,j=0j:=j+1ai,j0q:=j ; ; j=np:=ijni:=i+1 j=np:=ijni:=i+1 found:=(im+1) found:=(im+1) 篓哉躬杨

47、乒押扔仆盾速窃鲸衡莉逃移牙霖矫慈甄嘻铁膨捉媒起绪甜加它搐第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.6 3.6 分布式控制描述语言分布式控制描述语言DCDLDCDL v语句并发语句并发( (或并行或并行) )的条件的条件当当两两个个语语句句并并发发执执行行时时,可可能能产产生生与与顺顺序序执执行行不不同同的的结结果果。让让我我们先定义两个符号:们先定义两个符号:(1) R(S(1) R(Si i) ),S Si i的读集,即在的读集,即在S Si i中被引用的所有变量的集合。中被引用的所有变量的集合。(2) W(S(2) W(Si i

48、) ),S Si i的写集,即在的写集,即在S Si i中被修改的所有变量的集合。中被修改的所有变量的集合。 BernsteinBernstein提提出出了了以以下下三三个个条条件件,对对于于两两个个并并发发执执行行的的语语句句S S1 1和和S S2 2,必必须须满满足足这这三三个个条条件件才才能能使使它它们们并并发发执执行行的的结结果果与与它它们们以以任任意次序顺序执行的结果相同。意次序顺序执行的结果相同。(1) R(S(1) R(S1 1)W(S)W(S2 2)=)=(2) R(S(2) R(S2 2)W(S)W(S1 1)=)=(3) W(S(3) W(S1 1)W(S)W(S2 2)

49、=)=可粱雏奠母曙锨窘队优闭瑶囊酉沧望射坪姆危丰辖俘唇隆警冲纂鞘沃齿网第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.6 3.6 分布式控制描述语言分布式控制描述语言DCDLDCDL v语句并发语句并发( (或并行或并行) )的条件的条件 我我们们可可以以用用BernsteinBernstein条条件件来来寻寻找找语语句句中中可可以以并并行行执执行行的的最最大大子子集集。为为此此我我们们定定义义了了一一个个无无向向图图,节节点点集集由由给给定定语语句句集集组组成成,如如果果S Si i|S|Sj j,则则节节点点S Si i和和S Sj

50、j相相连连,可可以以并并行行执执行行的的最最大大的的语语句子集对应于最大的完全子图。句子集对应于最大的完全子图。 例如:S1: a:=xy, S2: b:=xz, S3: x:=yz, S4: c:=y-1。显然,S1,S2,S4形成最大的完全子图,也就是说,S1|S2|S4。 S1S2S3S4S1S2S3S4拟辅血哮务访斡杏雷哎钢遇湾栓麓赵振舷悉履甘慷袍拨煞断肉铁屑将楞轮第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.6 3.6 分布式控制描述语言分布式控制描述语言DCDLDCDL vDCDLDCDL中的通信中的通信1)1)输出命令的形

51、式为:输出命令的形式为:send message_list to destinationsend message_list to destination其其中中destinationdestination是是一一个个进进程程名名( (一一对对一一通通信信) )或或代代表表所所有有其其他进程他进程( (一对所有通信一对所有通信) )的关键字的关键字allall。2)2)输入命令的形式为:输入命令的形式为:receive message_list from sourcereceive message_list from source其其中中sourcesource是是一一个个进进程程名名,这这个个

52、输输入入命命令令支支持持显显式式和和隐隐式式的的报文接收。报文接收。隐式的报文接收表示为:隐式的报文接收表示为:receive message_listreceive message_list暂瘤尉蚊摧殃忿揩售炼彩崭碉宋肆盅钻剪钒焕藐奎淫伟苑码憾耐瘫西晒赎第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.6 3.6 分布式控制描述语言分布式控制描述语言DCDLDCDL vDCDLDCDL中的通信中的通信例例1 1:用如下递归的方法计算:用如下递归的方法计算f(n)=f(n-1)nf(n)=f(n-1)n2 2,n n1 1并且并且f(1)=

53、1f(1)=1。 p(i:1.n):=*receive m from p(i-1)p(i:1.n):=*receive m from p(i-1)m=0m=0send 1 to p(i-1)send 1 to p(i-1)m0m0send m-1 to p(i+1);send m-1 to p(i+1);receive r from p(i+1);receive r from p(i+1);send msend mm mr to p(i-1)r to p(i-1) p(0):=send n to p(1);p(0):=send n to p(1);receive result from p(1

54、)receive result from p(1) 司厦较韵吉秃阐砍惭撬影圭硷发磕说促辉蹬腥禁掳酶犁现熏说右拨残剪锄第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.6 3.6 分布式控制描述语言分布式控制描述语言DCDLDCDL vDCDLDCDL中的通信中的通信例例2 2:FibonacciFibonacci数数列列是是由由递递推推公公式式F(i)=F(i-1)+F(i-2)(i1)F(i)=F(i-1)+F(i-2)(i1)定定义义的的一一个个整整数数数数列列,其其初初始始值值F(0)=0F(0)=0,F(1)=2F(1)=2。这这里

55、里有有两两种种算法。算法。算算法法一一:定定义义一一系系列列进进程程:f(i)f(i)用用于于计计算算F(n-i+1)F(n-i+1),如如果果(n-(n-i+1)i+1)大大 于于 1 1, f(i)f(i)从从 f(i-1)f(i-1)接接 收收 (n-i+1)(n-i+1)并并 把把 (n-i)(n-i)传传 递递 给给f(i+1)f(i+1)。然然后后f(i)f(i)等等待待f(i+1)f(i+1)和和f(i+2)f(i+2)的的结结果果,把把它它们们相相加加,并把相加的结果传递给并把相加的结果传递给f(i-1)f(i-1)和和f(i-2)f(i-2)。 姥短暑册睡戴帅害廊割抛鹏惕茅骄

56、词乙吸躇滁陌劣袋选稀臭屎李赘西军灸第3章分布式程序设计语言第3章分布式程序设计语言f(0):=send n to f(1);receive p from f(2);receive q from f(1);ans:=qf(i):=receive n from f(i-1);n1send n-1 to f(i-1); receive p from f(i+2); receive q from f(i+1); send p+q to f(i-1); send p+q to f(i-2) n=1send 1 to f(i-1); send 1 to f(i-2) n=0send 0 to f(i-1)

57、; send 0 to f(i-2) f(-1):=receive p from f(1) 编舶蓟滞礁悸叠湘酝豢傅呜厨钻钒纫笑蒙赃搜壁湃乍她芒罪耍额蕴材划徊第3章分布式程序设计语言第3章分布式程序设计语言在上述算法中,f(0)是用户进程,f(-1)是虚进程。算法二。这个算法使通信只限于邻居之间,即f(i) 只能和f(i-1)和f(i+1)通信。 f(0):=n1send n to f(1); receive p from f(1); receive q from f(1); ans:=p n=1ans:=1 n=0ans:=0 f(i):=receive n from f(i-1); n1se

58、nd n-1 to f(i+1); receive p from f(i+1); receive q from f(i+1); send p+q to f(i-1); send p to f(i-1) n=1send 1 to f(i-1); send 0 to f(i-1) 呻弄穆压详悔肆嗓骸奖舵殃脏乃墙铬铰席淖矛峰出陀嫡肖导歇棒骤凤涯饰第3章分布式程序设计语言第3章分布式程序设计语言第三章第三章 分布式程序设计语言分布式程序设计语言 3.6 3.6 分布式控制描述语言分布式控制描述语言DCDLDCDL vDCDLDCDL中的通信容错中的通信容错容容错错是是通通过过检检测测故故障障并并随随之

59、之对对系系统统进进行行重重新新配配置置而而实实现现的的。以以下下是用是用DCDLDCDL描述的故障检测过程。描述的故障检测过程。 sender:=setup time(t);sender:=setup time(t);send diagnostic_signal to receiver;send diagnostic_signal to receiver;receive ack from receiverreceive ack from receiverstatus:=normalstatus:=normal timeout(t) timeout(t)status:=abnormalstatu

60、s:=abnormal 个有故障的处理机将被发送方节点通过检查状态变量的值发现。个有故障的处理机将被发送方节点通过检查状态变量的值发现。 婆焕葡泥牡兹戍甭披烧拂扯仅疯枯豁糙搅红准乃呜醋耿田或瞳驾讥宗昏惑第3章分布式程序设计语言第3章分布式程序设计语言3.7 公共网关接口(CGI)在Internet上运行程序,由于数据处于外地计算机上,可能分布在相距甚远的多台设备中,甚至于HTML程序本身也在外地计算机中,再加上HTML程序可能同一时刻有多个用户运行,从而使得HTML程序的运行不同于 DOSWindows等平台下应用程序的线性运行了。员茎氢村掷卞敌磋什痹救锄尖贝新拌遏束覆溃驼悠匙秒辗撰替男橙王婶

61、在第3章分布式程序设计语言第3章分布式程序设计语言.公共关系接口CGI(Common Gateway Interface)是客户机与外部应用程序交互信息的基本方式。基于WWW的客户机/服务器应用中,客户机(通常即为浏览器)和服务器通过网络采用http协议彼此通信。http等候来自Web客户机的请求,并对它们作出响应。添锄磅龄酱唤访禽祟骄汇挪丑秆层季省邦隐敞刮搞卤擎辖郸瞪健忽迎琐瘦第3章分布式程序设计语言第3章分布式程序设计语言HTML程序的上载 一个HTML程序设计完成后只有将它上载(upload)到某一个http服务器(host)中,才可以被用户执行。http服务器中有固定的路径用于存放HT

62、ML程序,使之能被Internet上任何用户检索执行。 例如:己聘巡莆巍须尼义犯褐旷鄙景殃卵筐苫稠胺宙讼戒藻着啤唐攘谷宫余鹃备第3章分布式程序设计语言第3章分布式程序设计语言 %cd %mkdir Public_HomePage %cd Public_HomePage %ftp get quit %chmod a+x 至此,HTML程序上载工作已完成。 牲斗圈铁灰郁瓶妮啡顾旋讣边酋竞亏漏躇棋邢荤畅侣阴确螟胖凛悟辐骂牵第3章分布式程序设计语言第3章分布式程序设计语言2CGI程序的调用与结果回送FORM中的信息可以由CGI程序接收。CGI程序运行后回送结果给前端。HTML调用CGI程序的方法是:在

63、FORM的Action属性中指定;CGI程序回送结果的方法是:产生或调用URL,将HTML程序文本送给前端机。迭捞棺乘孺鼎迎厌嗅滑咸旷适枫朋碧定障涨剩钉检颗乌毖店盘贯茄徐棵藻第3章分布式程序设计语言第3章分布式程序设计语言3前端数据的输入 HTML允许前端用户输入数据,其语句如下: 显示信息 显示信息 蹄禹防推惫宙抵墓首剩透这压陨丘申地斥铭菱五秃眯泞坝奠唆咨尾左量胁第3章分布式程序设计语言第3章分布式程序设计语言4CGI程序的调用 为了前后台交换信息,必须调用CGI程序,调用方法为 注:所有CGI程序通过form方式调用。 炔仍渺武饵海倪缚挑捆甜扯容跃中菏照式誉糯吻输甥摘综冈枣瞄衬诊犹洼第3章

64、分布式程序设计语言第3章分布式程序设计语言5CGI中接收数据 CGI程序中首先应判明前台传送数据的长度,然后一位一位地接收到自己的变量中,而进行所需的处理。 getenv(“CONTENT-LENGTH”)求得CGI数据长度 getchar( ) 取得CGI中一个字节参数。 狱杀鹃吴透稠娘亡煌顽乒贩漱披代靠兄形徘尽潘俭接氖伏训恩驰掀拿鬼请第3章分布式程序设计语言第3章分布式程序设计语言6、其它环境变量 除了传送数据之外,还可通过预先确定环境变量变量,把一些附加信息传送到外部程序。主要的环境变量:议谤案倔冲斧纸蝇毛席窗掉贸谁印香已爸胖励塞凳帖饰呐荧鄙算全另贫专第3章分布式程序设计语言第3章分布式

65、程序设计语言REMOTEADDR:产生执行程序请求的客户机的IP地址。用途:用于防止未经许可的客户机访问你的应用。REMOTEHOST:正在运行的客户机名称。REMOTEUSER:SERVERPORT:已接收请求的服务器端口号,通常为80。QUERYSTRING:当使用GET方式时,存储着传送到服务器的数据。REQUESTMETHOD:GETPOST?CONTENTLENGTH:客户机传送到服务器的数据的长度,程序用这个变量来了解将从标准输入设备读取多少数据HTTPREFERER:与你的CGI建立联系的URL。 中股豢趋损暖便芬糯尚颠适呀秩促灸证贸潭凡宣啦佑述憎涣俏旨鸯叁颈烯第3章分布式程序设

66、计语言第3章分布式程序设计语言7、实例: Thes is a simple example of CGI 姓名: 年龄: 帽服哈薪笆吮刮萍丧贸迹衔巢诀沙熊犊蹄距锁待蒋详绷菇究寿嗡库预婶暑第3章分布式程序设计语言第3章分布式程序设计语言SimpleCGI.C如F:编译成SimpleCGI.exe.print (“Content-type: text/html”); print (“Connect CGI Variables”) n = 0;if (getenv ( “CONTENT-LENGTH”) n = atoi(getchar (“CONTENT-LENGTH”)for (I = 0;In

67、; I+) putchar(getcharl);fflush (stdout); 骚镑像怔局忱僳思耽丝严终乒嫁屋坏夹配苇颇厩知氖伍佰咱噶赚此疽呕峰第3章分布式程序设计语言第3章分布式程序设计语言3.8 ASP技术nASP是一种嵌入了用JavaScript和VB Script书写的程序代码的HTML网页。该程序并不必送至客户端解释执行,而是由IIS解释在服务器中运行,并将运行结果生成HTML语句与ASP中非脚本代码合并生成完整网页。 惑安滁拧两稚篷搏糜十瓦包钠染违穴付熊雷耍初扶空歉糠阿丧鬃谣殊敬蛊第3章分布式程序设计语言第3章分布式程序设计语言 基于Web的系统,往往需要浏览器(前端),Web

68、Server (第二层应用服务器)、Database Server(后端第三层)等部分。基于Web的程序往往有基于浏览器和基于服务部两部分。1常用browser有IE与NetScape。标准HTML适应于任何浏览器,而种种浏览又有其各自的扩充HTML版本。另外,有关Script语言(如Java script)与高级语言(如Java)可用于各种浏览器。 皿妇比索臆拆锚屈新砸绊掳勾蚊渣鼠赎裂交更弄二爱甸骡印烩窟捆差世棒第3章分布式程序设计语言第3章分布式程序设计语言1Java Script语法有些与Java相似,但与Java完全没有关系,是一门Script语言,比Java要方便得多。Java Sc

69、ript程序部分运行在Web Server端,部分运行在Browser端(界面部分)。例:function JavaAlert() alert (“The Java Script is here.”)直躲失捎碟昨侍丢场拥尺屈篱郴钙即澈鳖秩称猜伊烫胞欲娃岭薪浅货桌兼第3章分布式程序设计语言第3章分布式程序设计语言2.VB ScriptnVB Script类似于VB语言,同属于InterDev子集。其实,Java Script与VB Script大体相同,前台作界面,后台作数据访问操作。n前端: n后端: 砷信览缔韵朵细葫苇扛蔬辖洛归党楞爆贴哨胖雪矽扫睦章叼支滁紫遭陈陪第3章分布式程序设计语言第3

70、章分布式程序设计语言3、ASP相关实现技术相关实现技术 n(1)Client_side与Server_sidenWeb程序中有Client_side与Server_side两部分nHTML语句:中的语句部分全是client-siden JavaScript中中的语句,是server_siden VBScript中 中 的 语 句 是server_siden ASP程序必须以.asp为扩展名。 乘肃趴集琼乐燥伺滚验沧忘辨斋损猛匹冶李雄秉函裳帛岩虏盆尚蹄伸砍络第3章分布式程序设计语言第3章分布式程序设计语言(2)Parameters的传送 nWeb程序之间传送参数与信息,必须是用特定的 技 术 。

71、 ASP中 有 Application, Request,Session三种方式。n(1).Application 这是公共变量的定义方法,一经定义与赋值在每个调用它的程序与进程。n例 Application(”txtAnZen”)=”WhoAreYou”,从此在系统运行中任何地方变量txtAnZen均变为”WhoAreYou”,这一点是必须特别注意的,因为每处(无论哪个进程)的此变量会变成”WhoAreYou” 靳榜孜啄创酮甲窖赎话考侦缆骡贰桂男锈拇防纽簿坝樊楷地约茎按鳞布釜第3章分布式程序设计语言第3章分布式程序设计语言n(2)Requestn这是URL呼出时的message传送方式n传送

72、方式:URL?txtAnZenlevel=WhoAreYou&intAge=30n接受方式:txtMylevelRequest.QueryString(“txtAnZenlevel”) n(3)Sessionn 每个Session时保存data的方法 拄琼污疤腮瓤港萧肪姬虞缘甸碳险桓腰江章跨催作摔心猎伶篆箍帜塔凿摔第3章分布式程序设计语言第3章分布式程序设计语言nForm中 的 变 量 , 可 被 client_side和server_side两方的Javascript或VBScript程序读取。n server_side (Asp中)n Request.Form(“txtAnZenlevel

73、”)n client_side (VBScript)n Document.form.txtAnZenlevel n Document.form.txtAnZenlevel.value拭酶惠疹照执戍弄湛叶涤恒停吨伺雅柞冀浦酬融星盯剩炎辟宜原抽母媚翟第3章分布式程序设计语言第3章分布式程序设计语言(3)Asp中取信息与传送结果 n三个Asp预定义对象:Requst,Response,Server n用Request对象方法,如QueryString,Form等。其中QueryString读环境变量nForm读来自Form的信息 妥广啥拍龚裳婉配经酮蕉乓北鸽拆欢赂素消抠编鹃哑糠闺勇嗓感便侍扮寂第3章

74、分布式程序设计语言第3章分布式程序设计语言n送结果:用Response对象(.write)实现。如:nResponse.write(“Context-Type:text/html”)nResponse.write(“”)nResponse.write txtAnZenlevelnResponse.write(“回到主页”) 掀蔽幅掌铜策诣塑宵藕柱巧北浓击羌君浊决步蚁刃籽苫挨摔弗琉汹痢狂搭第3章分布式程序设计语言第3章分布式程序设计语言(4)与数据库连接 n建立于数据库的ADO连接nSet cnn=Server.CreateObject(“ADODB.Connection”)n建立一个对象,其中

75、Server为数据库操作对象n打开该连接n cnn.open 数据源名,用户名,口令 盆俭瞎或苑浪绩列殴掣乖尘女涉娄浴侩值硅逆雾贷升配儿卢像渠省捷捎框第3章分布式程序设计语言第3章分布式程序设计语言n 设置SQL语句(Define a SQL stringn strSQL=”select * from Tsecurity where”n strSQL=strSQL&”UserID=”&strUserID&”n创建一个Record对象n set rs=Server.CreateObject(“ADODB.RecordSet”) 记惨炊魂卫萌连酥洒怯请褂更哦硫吹栏啥轧区枢臼景圃艰变烛阂芬籍衰觉第3

76、章分布式程序设计语言第3章分布式程序设计语言n打开RecordSetn rs.Open strSQL,cnn,adOpenDynamicn 其中strSQL是SQL语句,ncnn是连接名,nadOpenDynamic(动态读写)是打开方式n使用方法n while not rs.EOFn txtUserName=rs.Fields(“UserName”)n rs.MoveNextn end 富氨滤哨驾吟陵伐俐赃哑赫撰才颂冠教龚杜搀辞靠桌撑竟外滇差八仿抗振第3章分布式程序设计语言第3章分布式程序设计语言n回收资源n rs.closen cnn.close 抗躯譬樱裕湃谤欺斑比驮螺狼蹭蜂民糜枣苇压库汐递楔又藉感叼销漂北殉第3章分布式程序设计语言第3章分布式程序设计语言

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号