8.3 分布式计算
8.3.1 分布式系统概述
8.3.1.1 分布式系统的设计目标设计目标有四个:通信,资源共享,分布计算和可靠性 。
8.3.1.2 分布式操作系统的实现考虑
1) 数据迁移
2) 计算迁移
3) 进程迁移
4)分布式共享内存
5) 鲁棒性的实现
8.3.2 分布式进程管理
8.3.2.1 任务分割
8.3.2.2 支持分割计算
8.3.2.3 常规进程管理
8.3.2.4 调度
在分布式环境下 。 有两种主要的调度方式:
l 直接调度:由应用程序的程序员负责确定计算单元的执行位置 。
l 透明调度:应用程序的进程最初作为单进程在一台机器上运行 。 当计算单元被创建并准备运行时,由本机上的调度程序负责和其他的调度程序交互,以决定该计算单元的最佳执行位置 。
8.3.2.5进程的并行
由于计算的可调度单元在不同的机器上创建并执行,操作系统必须提供有效的方法在需要时同步它们的运行 。 这一领域的发展有两个主要方向:
l 直接同步:程序员利用操作系统提供的机制在需要时同步计算单元的执行 。
l 事务处理和并行控制:由服务器负责同步 。 因此,问题集中于服务器上操作单元的效果,而与客户端请求无关 。
1)同步
2) 事务处理相关消息流称为事务 —— 它是一连串的指令,这些指令或者全被执行,或者全都不执行 。 一个事务形成一个由微操作和组成成分间的交互操作构成的特殊集合 。
3)并发控制
8.3.3分布式环境下消息传递
消息就是由一个进程发送给另一个接受进程的信息块 。 它服务于以下两个目标:
l 通过消息机制,让一个进程和另一个进程共享信息;
l 实现消息发送方和接收方的同步 。
在网络体系中,为了把信息放入远程计算机上某个进程的地址空间,往往需要将信息的内容复制多次。图 8-14 在逻辑上简要列出一次发送信息的操作需要进行的复制。
8.3.3.1 消息传递接口
PVM(并行虚拟机)就是一种被广泛使用的消息传递接口
8.3.3.2 计算范型
客户机 /服务器模式是一种用来描述分布式计算的范型 ( 或说是组织模式 ) 。 任何特定的应用都可以使用这个范型将计算分解成两个部分:以被动方式工作的服务器端和以主动方式工作的客户端 。
客户端根据应用的需要输入数据并调用服务器端程序 。
8.3.4远程过程调用
8.3.4.1 RPC的工作原理
RPC是作为网络协议的一个集合来实现的。它允许一个过程调用不同机器上的另一个过程,调用时要给出参数的拷贝。
因此,RPC在与调用进程不同的地址空间执行。
8.3.4.2 RPC的实现
1) 通用组织结构
2) 根据本地调用为远程调用建模
3) 远程过程定位
4) stub 的产生
5) 网络支持
8.3.5 分布式内存管理
有两种类型的结构可以实现分布式内存:
l 多计算机:多处理器模式也可以说是,多计算机,,因为它使用多个不同的处理器,且每台处理器都可以访问机器的全部内存 。,多计算机,中,各台机器对内存的存取是不均匀的 ( 称为不均匀内存存取,nonuniform memory access),因为不同位置的内存的存取时间与处理器有关 。
l 计算机网络:它提供逻辑上的共享内存接口 。 这个接口使用以信息包为基础的网络来支持对内存块的存取 。
设计分布式内存系统时,需要考虑如下的基本问题:
l内存接口:网络方式下,需要为内存提供一个单独的接口吗? 或者,利用现有的主存接口存取远程内存?
l位置透明度:关于远程地址空间中的位置,一个进程可以了解到什么程度?
l共享单元:在地址空间中,共享单元应该是什么?
例如某个数据结构,页面,段,或者其他的单元 。
l命名管理:信息在输入输出时需要对共享单元命名 ( 以便唯一标志该单元 ) 。 这又该怎么处理,
或者说,它应该遵循什么规则?
l执行效率:假设有两个进程,并且它们的地址空间位于不同的机器 。 那么,采用哪种方法来存取远程共享内存效率更高呢?
8.3.5.1 远程内存
1) 内存接口
( 1) POSIX共享内存接口
( 2) Linda程序设计语言
2)内存单元的大小
3) 位置透明度
8.3.5.2 分布式虚拟内存
8.3.5.3 分布式对象