第六章分布式程序设计 ·分布式程序设计的特点 ·分布式进程 ·分布式进程迁移
第六章 分布式程序设计 ⚫ 分布式程序设计的特点 ⚫ 分布式进程 ⚫ 分布式进程迁移
6.1分布式程序设计的特点 分布式程序设计的特点 在分布式计算机系统出现后,为了应用这种系统,在 七十年代后期提出了分布式程序设计的概念,即设计 运行于分布式计算机系统上的分布式程序 。 ● 分布式程序设计有三个特点:分布性、通信性和鲁棒 性。 一 个分布式程序由若干可以独立执行的程序模块组成,这些 程序模块分布子一个分布式计算机系统中若干台计算机上同 时执行。 分布于各台计算机上的程序模块是相互关联的,它们在执行 中需要交换数据(即通信)。只有通过通信,各程序模块才 能协调执行,以完成一个共同的计算任务 。 此外,进行分布式程序设计时,还常常要考虑鲁棒性,当某 几台计算机发生故障时,程序仍可以执行下去
6.1 分布式程序设计的特点 分布式程序设计的特点 ⚫ 在分布式计算机系统出现后,为了应用这种系统,在 七十年代后期提出了分布式程序设计的概念,即设计 运行于分布式计算机系统上的分布式程序。 ⚫ 分布式程序设计有三个特点:分布性、通信性和鲁棒 性。 ⚫ 一个分布式程序由若干可以独立执行的程序模块组成,这些 程序模块分布于一个分布式计算机系统中若干台计算机上同 时执行。 ⚫ 分布于各台计算机上的程序模块是相互关联的,它们在执行 中需要交换数据(即通信)。只有通过通信,各程序模块才 能协调执行,以完成一个共同的计算任务。 ⚫ 此外,进行分布式程序设计时,还常常要考虑鲁棒性,当某 几台计算机发生故障时,程序仍可以执行下去
6.1分布式程序设计的特点 分布式程序设计语言 。为了进行分布式程序设计,必须提供分布式程序设计 语言。 。分布式程序设计语言和其它程序设计语言的主要区别: 它具有程序分布和通信的功能。有时它还具有便于实 现鲁棒性的一些功能 一般来说,一种顺序程序设计语言或并发程序设计语 言,增加了分布和通信功能后,就可以成为分布式程 序设计语言了
6.1 分布式程序设计的特点 分布式程序设计语言 ⚫ 为了进行分布式程序设计,必须提供分布式程序设计 语言。 ⚫ 分布式程序设计语言和其它程序设计语言的主要区别: 它具有程序分布和通信的功能。有时它还具有便于实 现鲁棒性的一些功能。 ⚫ 一般来说,一种顺序程序设计语言或并发程序设计语 言,增加了分布和通信功能后,就可以成为分布式程 序设计语言了
6.1分布式程序设计的特点 分布式程序 。分布式功能可使程序分为若干个可独立执行的程序模块。 。这些程序模块的产生方式: 。可以在程序开始执行前就按要求分布于各台计算机上, ● 也可以在程序执行过程中逐个产生出来,即开始执行时只有一个 程序模块,它在执行中不断产生出新的程序模块,被产生的程序 模块在执行中又可以产生程序模块。 ● 由于不同的程序模块是在不同的计算机上执行的,故它们之间 不能有共享数据或公用变量。程序模块之间的数据交换只能依 靠通信。分布式程序设计的通信功能就是用来实现程序模块间 的数据交换的。 ·目前已有十几种分布式程序设计语言的建议
6.1 分布式程序设计的特点 分布式程序 ⚫ 分布式功能可使程序分为若干个可独立执行的程序模块。 ⚫ 这些程序模块的产生方式: ⚫ 可以在程序开始执行前就按要求分布于各台计算机上, ⚫ 也可以在程序执行过程中逐个产生出来,即开始执行时只有一个 程序模块,它在执行中不断产生出新的程序模块,被产生的程序 模块在执行中又可以产生程序模块。 ⚫ 由于不同的程序模块是在不同的计算机上执行的,故它们之间 不能有共享数据或公用变量。程序模块之间的数据交换只能依 靠通信。分布式程序设计的通信功能就是用来实现程序模块间 的数据交换的。 ⚫ 目前已有十几种分布式程序设计语言的建议
6.2分布式进程 基于Pascal的分布式程序设计语言 。汉森于1978年提出了分布式进程的概念。它将并发 PASCAL语言作了一些修改,并增加了分布式进程的概 念,从而构成了一个分布式程序设计语言。 分布式进程是分布于系统的若干台计算机上的进程, 它们之间没有公用变量。 一个程序是由数量固定的若干分布式进程组成,它们 同时被启动,并行地在各台计算机上执行
6.2 分布式进程 基于Pascal的分布式程序设计语言 ⚫ 汉森于1978年提出了分布式进程的概念。它将并发 PASCAL语言作了一些修改,并增加了分布式进程的概 念,从而构成了一个分布式程序设计语言。 ⚫ 分布式进程是分布于系统的若干台计算机上的进程, 它们之间没有公用变量。 ⚫ 一个程序是由数量固定的若干分布式进程组成,它们 同时被启动,并行地在各台计算机上执行
6.2分布式进程 进程定义 一个进程定义了自己的变量、公用过程和初始 语句序列: Process(进程名) ● 一个进程执行两类操作:执行初始语句序列和 由其它进程提出的外需求(即调用它定义的公 用过程)
6.2 分布式进程 进程定义 ⚫ 一个进程定义了自己的变量、公用过程和初始 语句序列: Process(进程名) ⚫ 一个进程执行两类操作:执行初始语句序列和 由其它进程提出的外需求(即调用它定义的公 用过程)
6.2分布式进程 分布式进程的执行 一个进程被启动后, 1)先执行初始语句序列,直至执行完毕。 2)在进程执行中因为等待某个条件而暂时不能执行下去时,如果 有外需求,它就执行相应的公用过程。当此过程执行完毕或执行 到等待某个条件而暂时不能继续执行时,它或者去执行初始语句 序列,或者执行另一个外需求的过程。 一个进程在执行初始语句序列或某个过程时,总是连续地执行下 去,除非它因为等待某个条件而暂时不能继续执行下去,或者它 向其它进程提出了过程调用。 当一个进程由于上述原因不能执行语句序列或某个过程时,它就 可以接收其它进程的需求,执行相应的一个过程。因此,一个进 程从执行某一个过程转向另一个过程,这不是由时钟来控制的, 而是由程序本身的执行来确定的
6.2 分布式进程 分布式进程的执行 ⚫ 一个进程被启动后, 1)先执行初始语句序列,直至执行完毕。 2)在进程执行中因为等待某个条件而暂时不能执行下去时,如果 有外需求,它就执行相应的公用过程。当此过程执行完毕或执行 到等待某个条件而暂时不能继续执行时,它或者去执行初始语句 序列,或者执行另一个外需求的过程。 ⚫ 一个进程在执行初始语句序列或某个过程时,总是连续地执行下 去,除非它因为等待某个条件而暂时不能继续执行下去,或者它 向其它进程提出了过程调用。 ⚫ 当一个进程由于上述原因不能执行语句序列或某个过程时,它就 可以接收其它进程的需求,执行相应的一个过程。因此,一个进 程从执行某一个过程转向另一个过程,这不是由时钟来控制的, 而是由程序本身的执行来确定的
因此,一个分布式进程的执行过程可用下图来 表示: 进程 进程 A 启动 启动 执行初始语句 序列↓ 等待条件 等待条件 C:一 c 它进程 它进程 调用 调用 执行被调用 执行被调用 过程 过程 调用它进程的 过程 它进程 条件C成立 调用 继续 执行被调用 执寺 过程 它进程被调用过程 执行完华 (a) 条件C成立 继续 执寺 (b) (a)简单情况 (b)复杂情况
⚫ 因此,一个分布式进程的执行过程可用下图来 表示: 执行初始语句 序列 进 程 A 启动 等待条件 C 它 进 程 调用 执行被调用 过程 条件C成立 继 续 执行 (a) (b) 进 程 A 启动 等待条件 C 它 进 程 调用 执行被调用 过程 条件C成立 继 续 执行 调 用它进 程的 过程 执行被调用 过程 它进程被调 用过程 执行完毕 它 进 程 调用 (a)简单情况 (b) 复杂情况
6.2分布式进程 过程的定义: 一个进程可以定义若干个过程。一个过程定义了它的 输入输出参量、局部变量和语句序列: ProC(#) ·当执行一个过程时,相应的语句序列就被执行
6.2 分布式进程 过程的定义: ⚫ 一个进程可以定义若干个过程。一个过程定义了它的 输入输出参量、局部变量和语句序列: Proc(#) ⚫ 当执行一个过程时,相应的语句序列就被执行
6.2分布式进程 过程的调用 一个进程可用call语句来调用另一个进程所定义的过程,例如 进程p可以用以下形式的call语句来调用进程Q定义的过程R: calQ.R(,变量) 在进程Q开始执行过程R时,call语句中表达式的值就赋给了输 入参量。当过程执行完毕后,输出参量的值就赋给了cll语句中 的变量 ·实现上述过程调用时, 1)调用进程先要将输入参量的值传给被调用者, 2)过程执行完毕后,被调用者要将输出参量的值送回给调用者。 所以,一次过程调用要两次通信才能实现
6.2 分布式进程 过程的调用 ⚫ 一个进程可用call语句来调用另一个进程所定义的过程,例如 ⚫ 进程p可以用以下形式的call语句来调用进程Q定义的过程R: call Q.R(,变量) ⚫ 在进程Q开始执行过程R时,call语句中表达式的值就赋给了输 入参量。当过程执行完毕后,输出参量的值就赋给了call语句中 的变量 ⚫ 实现上述过程调用时, 1)调用进程先要将输入参量的值传给被调用者, 2)过程执行完毕后,被调用者要将输出参量的值送回给调用者。 所以,一次过程调用要两次通信才能实现