分布式复习大纲第三章

第三章 分布式进程(2学时)

内容:分布式进程概述,进程远程执行,进程迁移,分布式对象。
要求:复习进程与线程的概念,掌握分布式进程的概念,理解远程进程创建的机制与原理,以及进程迁移的策略与实现,掌握分布式对象的特点。

关于进程与线程的概念

进程:程序的一次执行,每个进程都有自己独立的一块内存空间。
线程:也被称为轻量级进程,一个进程可以有多个线程,多个线程共享一个进程虚拟空间。
进程是操作系统资源分配的基本单位,线程是CPU调度的基本单位

进程与程序的区别
程序是一个静态的指令集合
进程是一个正在系统中活动的指令集合

进程的地址空间

在这里插入图片描述

进程状态

在这里插入图片描述

进程的运行

每次创建一个进程时,操作系统必须为它创建一个完整的独立的地址空间并对它进行初始化,即:将数据段初始化,将程序的可执行代码复制到文本段(代码段)并设置程序计数器,建立堆栈并设置堆栈指针,设置内存管理部件(MMU)的寄存器和虚拟地址页表缓冲器(TLB)等。

在进程切换时,也存在很大的开销,除了保存CPU运行环境(寄存器值、程序计数器、堆栈指针)外,还必须修改内存管理单元的寄存器和虚拟地址页表。如果同时运行的进程数超过设计范围,还要将某些挂起的进程转移到磁盘存储器。

我们在虚拟地址空间中也可以开辟进程之间和进程与内存之间共享存储器曲语,共享存储器区域可用于以下目的:

  1. 简化代码库的调用。
  2. 利于数据共享和通信
  3. 方便系统调用和机外处理

线程

在这里插入图片描述

多线程的实现

在这里插入图片描述
那么我们接下来就来看一下着三种实现线程包的基本方法。

用户级线程

在这里插入图片描述

内核级线程

在这里插入图片描述

混合模式

在这里插入图片描述

多线程的应用

在这里插入图片描述

分布式进程创建

创建进程的支持设施分为两个独立的系统服务,即目标主机的选择执行环境的建立

目标主机的选择

新进程驻留主机的选择是进程分配的决策。一般来说,进程分配策略是新进程运行在创建该进程的源主机,还是考虑负载分担而选用其他主机。
为了负载分担,可以考虑以下策略:位置策略和传输策略

  1. 位置策略:确定哪个主机驻留新进程,这个决策是根据主机相对负载、机构结构以及其是否拥有特殊资源。
  2. 传输策略:确定是本地或远程主机适合新进程,本地主机是负载轻还是重。
    传输策略有两种启动方法:发送者启动和接收者启动。发送者启动是创建新进程的节点负责传输。接收者负责启动,是某个负载轻于一个负载阈值的节点启动传输,它将接收这个新进程。

执行环境建立

新进程运行主机选定后,便要为新进程建立一个执行环境,主要是地址空间。
有两种方法来规定和初始化新进程的地址空间:

  1. 用在地址空间是静态定义格式的场合,例如它只包含文本区域,数据堆区域和堆栈区域。在这种情况下,地址空间根据一张指定这些区域范围的表格来创建,地址空间由一个可执行文件进行初始化。
  2. UNIX fork语义的一般化,父进程地址空间的各个区域被其创建的子进程所继承。

进程远程执行

为什么需要进程远程执行?
有两种情况需要远程进程执行:

  1. 在资源匮乏的简单用户终端。如PDA,它需要在网络上获得需要的计算资源,以完成它的计算任务。
  2. 所谓的e-科学,如计算海洋模型,客户(计算机)需要在集群或者计算网格中寻找众多的计算节点完成这样复杂而费时的计算任务。

对进程远程执行的要求?

1.寻找管理机制: 应该有一个机构来传播空闲处理机的可用信息,或识别分布式系统中这种空闲处理机。
2. 进程的远程执行应该是透明的,它应该项在本地执行一样,而与位置无关。
3. 主人优先原则:进程远程执行抢占空闲节点(工作站),当它的拥有者要求使用时,应该停止远程执行,将工作站归还,实现主人有限原则。

逻辑机模型(远程执行位置无关模型)

在这个模型中,有两个部件:客户节点和远程服务节点。
客户节点上的代理进程负责远程服务节点上 远程进程执行 的初始化
远程服务节点执行客户机赋予的进程。

逻辑机模型跨越用户节点和两个远程服务节点。在一个逻辑机边界内保持文件系统、进程的父子关系和进程组的进程视图的一致,即:

  1. 远程进程必须能访问驻留在源计算机上的文件系统。
  2. 远程进程能接收逻辑机内任何进程发来的信号,也能将信号提供给逻辑机内任何进程。
  3. 进程组保持在逻辑机内。
  4. 基于树形的进程父子关系在逻辑机内必须得以保持。

在这里插入图片描述

远程执行的实现举例: REXEC(考试不涉及)

REXEC是一个分散的安全的集群远程执行环境,是在NOW集群和Mullennium Cluster工作经验基础上建立起来的。

REXEC结构
在这里插入图片描述在这里插入图片描述
REXEC的实现
在这里插入图片描述
在这里插入图片描述

进程迁移

进程迁移的概念
在这里插入图片描述
进程迁移的概念模型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
进程迁移机制
在这里插入图片描述
在这里插入图片描述

进程迁移策略:动态负载平衡

在这里插入图片描述
在这里插入图片描述
接下来,我们来介绍上图中的两个重要模块:信息管理模块和负载平衡模块
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

进程迁移的实现

状态信息和恢复
在这里插入图片描述
在这里插入图片描述
转发机制
在这里插入图片描述
接下来,我们以VDPC中访问本地文件操作的进程迁移为例,说明转发机制如何工作:
在这里插入图片描述
当进程A迁移时,与位置无关的进程状态和该进程以前迁移到目标处理机,系统同时在迁移进程的原始处理机派生一个伺服进程(A-伺服),并将迁移进程遗留在原始处理机上的与位置相关的进程状态(这里是迁移进程打开文件的状态信息)恢复到该伺服进程中。A-伺服进程在目标处理机上恢复后,当执行本地文件操作时,系统截获该系统调用,将其传送给A-伺服进程,并等待接受处理的结果。因为A-伺服进程保存有该迁移进程打开文件的状态包括文件读、写位置,因此该机制可以有效地保证进程远程执行地文件操作和本地执行结果一致。

通信恢复
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
迁移算法分类
在这里插入图片描述
迁移算法实例
在这里插入图片描述

分布式对象的特点

  1. 分布式对象处于网络何处、使用何种编程语言、编译器如何创建分布式对象以及它们运行在何种硬件和操作系统平台之上,对客户都是透明的
  2. 每个分布式对象都定义有清晰的访问接口,分布式对象之间只能通过这些预先定义的接口进行访问,这些接口构成连接客户程序与服务器程序的协议。
  3. 面向对象的多层客户/服务器计算模型组织各种分布式对象。任何分布式对象都可向其他对象提供服务,也可向它们请求服务,客户与服务器的角色划分是相对的或多层次的。
  4. 分布式对象具有动态性,它们可以在网络上移动。

猜你喜欢

转载自blog.csdn.net/idler123/article/details/121296295
今日推荐