下一步的技术发展很难准确预测,我
们要在网络、分布式环境下
开发,需要掌握分布式计算机系统
的原理,也需要了解他们的实
现原理。
分布式操作系统是为分布式计算机
系统配置的一种操作系统。
分布式系统需要与集中式系统完全不同的软件。
分布式计算机系统
第一, 从硬件角度来讲,各个计算
机都是自治的;第二,从软件角度
来讲,用户将整个系统看作是一台
计算机。这两者都是必需的,缺一
不可。
分布式系统由许多独立的CPU组
成,它们在一起工作使得整个系统
看上去像一台计算机。
任务分布: 把一个任务分解成多个可并行执行的子任务,分散给各场点协同完成。
功能分布: 把系统的总功能划分成若干子功能,分配给各场点分别承担。
分布式系统的特征
1 资源共享
硬件资源、软件资源。
2 开放性
可伸缩性、可移植性、互操作性;
数据是可以交换的、对外接口是
公开的、系统提供统一的通信机
制、提供统一的用户界面。
3 并发性
同时工作没有冲突;
有冲突,通过相应算法解决;
并发控制;
4 容错性
两个基本方法,硬件冗余、软件
恢复(数据备份、日志);
5 透明性
实际上比其表面要微妙得多的含糊概念之一
种 类 |
含 义 |
位置透明 |
用户不知道资源位于何处 |
迁移透明 |
资源可以不改名地随意移动 |
复制透明 |
用户不知道有多少个拷贝存在 |
并发透明 |
多个用户可以自动的共享资源 |
并行透明 |
系统活动可以在用户没有感觉的情况下并行发生 |
分布式系统的优点
1 性能价格比高
2 速度
3 内在的分布性
3 可扩充性
5 可靠性
6 适用于多种环境
分布式系统的不足
1 管理复杂
2 性能和可靠性依赖于网络
3 保密性差
4 应用软件少
项目 |
描 述 |
软件 |
目前为分布式系统开发的软件还很少 |
网络 |
网络可能饱和和引起其它的问题 |
安全 |
容易造成对保密数据的访问 |
分布式系统的资源管理
1 全集中管理方式
一个资源由一个管理机制管理。
2 分担管理方式
一个资源虽由几个管理机制管理,但各分担一种管理职能。
3 轮流管理方式
一个资源可由几个管理机制管理,但轮流执行管理职责。
4 全分散管理方式
一个资源由多个管理机制在协商—致的原则下共同管理。
性能比较:
基本开销:连接系统中的各个站点要多少花费?
通信开销:从站点A发送信息到站点B需要多少时间?
可靠性:
分布式系统的拓扑结构
1 全互连结构
优点:各场点间消息传递快,可靠性较高。缺点:开销高。
2 部分互连结构
其开销比全互连结构低,但通信速度较全互连结构慢。可靠性也相对较低。
3 层次结构
通常情况下,其中的任何中间节点故障都可能将这种结构分割成若干不相交的子树。因此,可靠性较低。
4 星形结构
这种结构的基本开销与场点个数成正比,这种通信速度却是没有保障的,因为*场点可能变成瓶颈。
5 环形结构
基本开销较低,但通信代价可能较高。
6 总线结构
这类结构的开销同场点成正比,通信代价也很低。
7 立方体结构
计算机支持的协同工作系统
(CSCW,ComputerSupported
Cooperative Work),也是一种
分布式系统。
CSCW特点:
群体性、交互性、分布性、协同性。
CSCW具体类型:
(1) 电子邮件系统
(2) 电子布告栏系统(BBS, Bulletin BoardSystem)
(3) 群体决策支持系统
(4) 协同编辑系统
(5) 计算机会议系统
(6) 协同计算机开发环境
多机OS的基本结构
主从式 独立式 分布式
分布式OS
分布式计算机系统(Distributed Computing Systems)是由多个分散的计算机经互连网络连结而成的计算机系统。其中各个资源单元(物理或逻辑的)既相互协同又高度自治。能在全系统范围内实现资源管理,动态地进行任务分配或功能分配而且能够并行地运行分布式
程序。
分布式操作系统是为分布式计算机系统配置的操作系统。系统任务可以在系统中任何别的处理机上运行。并提供高度的并行性和有效地同步算法和通信机制,自动实行全系统范围的任务分配并自动调节各处理机的工作负载.为用户提供一个方便、友善的用机环境。
分布式系统与网络系统是有区别的。从操作系统的角度来看,网络操作系统是为计算机网络配置的操作系统,网络中的各台计算机配置各自的操作系统,而网络操作系统把它们有机地联系起来。
操作系统的形成和发展阶段:
1. 手工操作阶段
每个程序员都必须亲自动手操作计算机:装入卡片或纸带,按电钮,查看存储单元等。
2. 批量处理阶段
用户不用与计算机直接打交道,而是通过专门的操作员来完成作业的输入和输出。
3. 操作系统形成阶段
多道程序和分时系统的出现,标志着操作系统的正式形成。
1) 多道程序设计的定义
所谓多道程序设计,是指同时把若干个作业存放在内存中,并且同时处于执行过程中。但是在某时刻只能有一个程序占用CPU执行。
2) 分时系统
所谓分时系统,就是在一台计算机上,连接若干个终端,用户通过这些联机终端设备采用交互方式把他的程序和数据输入到计算机中,并同时控制程序的执行。
操作系统分类:
1. 单用户操作系统
在这种操作系统控制下,计算机系统串行地执行用户程序,即在执行完一个用户程序后
才接受另一个用户程序。一些微机上配置的操作系统大多数就属这种类型。
2. 批处理操作系统
在这种操作系统的控制下,计算机系统可以同时接受多个多用户程序,一批批地进行处
理。批处理操作系统一般都提供多道程序设计功能,允许多个程序同时装入内存执行。
3. 分时操作系统
分时操作系统又称多用户操作系统,在这种操作系统的控制下,多个用户可以通过各自
的终端同时使用一台计算机。分时操作系统有三个明显的特点:多路性,交互性和独占性。
4. 实时操体系统
实时操作系统是为实时计算机系统配置的一种操作系统,在这种操作系统的控制下,计
算机系统能及时地响应外部事件的请求,在规定的时间内尽快地完成对该事件的处理,并有
效地控制所有实时设备和实时任务协调地进行。在设计这类操作系统时,首先要考虑系统的
实时性和可靠性,其次才是效率。
5. 网络操作系统
网络操作系统是为计算机网络配置的操作系统。网络中的各台计算机配置有各自的操作系统,而网络操作系统把它们有机地联系起来,因此,它除了具有常规操作系统所应具备的存贮管理、处理机管理、设备管理、信息管理和作业管理等功能外,还具有以下网络管理功能:高效可靠地网络通信能力以及多种网络服务功能。
6. 分布式操作系统
分布式操作系统是为分布式计算机系统配置的操作系统。系统任务可以在系统中任何别的处理机上运行。并提供高度的并行性和有效地同步算法和通信机制,自动实行全系统范围的任务分配并自动调节各处理机的工作负载.为用户提供一个方便、友善的用机环境。
7. 多处理机操作系统
多处理机系统是由多台处理器组成的计算机系统。多处理机系统可分成两大类:基于
共享存储的多处理机系统和基于分布存储的多处理机系统。前者称为紧耦合多处理机系统,而后者称为松耦合多处理机系统。
多处理机系统也称为并行计算机系统。并行机上使用的操作系统称为并行操作系统。
分布式OS的控制策略
集中决策 分布决策
信息交换 合作
分布式OS设计中的关键问题(目标)
1 透明性 2 灵活性
3 可靠性
4 性能 5 可扩展性
分布式操作系统主要特点:
1 进程通信不能借助于公共存
储器,常采用信息传递方式;
2 系统中的资源分布于多个站
点,进程调度、资源分配、系
统管理必须满足分布式处理要
求,采用一致性、强健性 的
分布式算法;
3 适时地协调各站点的负载;
4 故障检测、恢复、系统重构
1 分布式系统,首先必须有一个单一的、全局的进程间的通信机制,从而使任何进程都可以和其它进程进行通信。
2 不同机器上,进程管理也相同。进程建立、撤消、启动、停止都相同。
3文件系统也必须看起来是相同的。同时,每个文件应该是在所有地方都是可见的,当然,这必须遵守保护和安全性约束的限制。需要一个全局的文件系统。
4 在系统的所有地方都使用相同的系统调用接口。
基于总线的多处理机
在CPU和总线之间增加一个高速缓冲存储器(cache memory),如图1-5所示。缓冲存储器保留着最近刚存取过的字。所有的内存访问请求都要经过它。如果请求的字在缓冲存储器中,缓冲存储器就会直接响应CPU,而不产生总线请求。如果缓冲存储器足够大的话,那么成功的可能性,称为命中率,将是很高的。而且每个CPU的总线通信量也会急剧下降,系统中也就能够容纳更多的CPU。通常,缓冲存储器的大小从64K到1M,命中率经常可以达到90%或更高。
Bus
图 基于总线的多处理机
Cache 的一致性问题;
第二章 分布式通信
2.1 消息传递
2.2 组通信
2.3 远程过程调用 RPC
单处理机系统中
共享存储器
分布式系统实现进程间通信注意的
问题:
1 无共享存储器,不能借助共享
变量的方法;
2 机器间消息传递的可靠性低于
机器内信息传递的可靠性;
3 系统内任意两台机器未必直接连
接,往往需要中转;
4 系统内的各台机器型号可能不同;
5 通信的实现与系统结构、通信线路
结构、通信介质的物理性能
等有密切关系。
进程间通信
进程间通信的实现方法:
可以是低级的,涉及系统调用,或者
通过语言级的支持实现
进程间通信方法主要有:
1 消息传递
2 管道
3 sockets
4 RPC
5 供享内存
对象之间的通信手段:
CORBA, DCOM
选择进程间通信方法主要考虑的问题
1 程序员对所选方法的熟悉程度
5 进程间通信机制的透明性,程序员
知道得细节越少,出错得机会
也就越少。
3 系统所支持的方法
4 考虑系统的扩充
5 支持进程的迁移,不同文件系统的
进程间通信
6 通信机制的标准化问题
7 通信机制的有效性
2.1 消息传递
消息传递,物理上复制要共享的数据
到另外一个进程的地址空间。
下列情况,一般不常用消息传递
1 两进程不共享内存空间
2 在不同的系统中
6 在同一系统中,每个进程有自己
的内存
消息通常是用消息包或帧的形式发送
的,通过OS提供的基本通信原语。
异步型 同步型
阻塞原语实现进程不再阻塞,一般有
2种方法:
1 轮询
利用测试原语,测试缓冲区的相关信
息(状态),忙等待。
2 中断
也可以在非阻塞原语种利用。
轮询一直不成功,或者一直无中断,
这样会无限阻塞下去。
要有计时器,缺省的设置,或者程序
员控制
阻塞send & receive
Procedure A
Begin
Instructions
… …
send (B, message)
// where B is the destination
// waiting for acknowledgment
// received send acknowledgment
next instructions
… …
End
Procedure B
Begin
Instructions
… …
receive (A, message)
// where A is the source
// waiting for message
// received message
next instructions
… …
End
消息传递(同步)适合于C/S模型
C/S模型的几个设计问题
1 寻址
2 阻塞和非阻塞原语
3 有缓冲和无缓冲原语
4 可靠和非可靠原语
管道
两进程间的通信通过内核在有限大
小的缓冲区上实现,这类原语通
过系统调用实现。当缓冲区满时,引
起阻塞。
Sockets
通过网络的通信,不是共享数据结
构或文件。
2.2 组通信
用途:1 具有冗余结构的系统
2 在分布式系统中查找
3 多副本的更新
4 各种通知
组通信的特性 1 原子性
2 定序
组通信最简单的实现方式就是不可靠
组播,即简单地向每个目标
发送一条消息。
可靠组播:一种实现方式是发送者向
一个组中所有成员发送消息,
然后等待每一个成员的回复。
2.3 远程过程调用 RPC
RPC使用过程调用实现远程通信,
在传统的过程化程序设计
语言环境中,它的语义类似于本地
过程调用的语义,因此,它
可向应用层用户提供良好的接口。
Client进程 ←→ Client’s Stub
←→ Server’s Stub ←→ Server进程
程序员不知道调用的是一个远程过
程,还是一个本地过程,这
需要有相应的支持机制,将一台计
算机上语言级调用自动转化
为另一台计算机上相应的语言级调
用,实现变量和结果的传送。
调用者阻塞,等待返回值,而不是
仅仅一个确认值。
与各种程序设计语言一样,对参数
的数目和数据类型有限制。
RPC与本地调用的区别
1 数据表示问题
如果RPC是在两种异构的机器上进
行的,不同机器数据表示可能
不同,包括机器的字长等。
2 指针
在不具备共享地址空间的情况下,
RPC不可能允许在网络范围内
传递指针。
3 故障
调用者和被调用者都可能在调用期
间发生故障。
对于故障,由于调用者无法知道到
底出现了那种情况,因此,
系统需要提供一些基本的保护机
制来确保RPC的正确效果。
不同RPC实现方案定义的这种
效果或RPC语义是有差别的。
以下是几种常用的RPC调用语义。
RPC调用语义
1 At- Most -Once (最多一次)
相同RPC的重复调用,服务器不处
理。
2 At- least -Once (至少一次)
RPC将被执行至少一次,可能多次。
3 Last -of-Many-Call (最近调用)
每个调用包含一个标识,client接收
最近调用者的返回值。
RPC系统的实现问题
1 RPC协议族
(1) 面向连接的
面向非连接的
(2) 选择标准的通用协议,还是
专门为RPC设计的协议
(3) 信包和报文的长度
2 确认
停等协议(stop and wait protocol)
爆发协议(blast protocol)
3 缓冲区 缓冲池
4 计时管理
失败情况下的PRC语义,
可能出现的问题及其解决方法:
1 Client无法定位Server
2 客户请求消息丢失
3 Server应答消息丢失
4 Server崩溃
5 Client崩溃
RPC存在的问题:
1 服务器必须被正确定位;
2 指针与复杂的数据结构难以传送;
3 全局变量很难使用;
4 很难有精确的RPC语义;
第三章 分布式协同处理
全局时间为进程和数据提供时间戳。
3.1 事件定序与时间戳
计算机上运行的应用程序只关心
事件发生的次序,而不是事件
发生的绝对时间,即只需要用计数
器的值去给事件打上相应的时间戳。
对于集中的物理时间:请求类和
广播类
难点:
request for time
--------------à
client time server
ß---------------
current time (delay)
有延迟,而且是不确定的,因为网
络故障,可能会传送多次。
Cristian
Berkeley算法
网络时间协议(NTP)
UTC 统一协调时间
时间的质量、精确性与时间提供者
的价格等相关;
物理时间:人的时间;
逻辑时钟:是一种单调增长的软
件计数器,对事件集进行部分
排序。
相对时间,逻辑上是一致的。
定序:
(1) 若两个事件发生在同一进程中,
则可用观察到的次序来
确定它们发生的次序;
(2) 无论何时在进程间传递消息,
发送消息的事件先于接收
同一消息的事件。
先决条件:两个事件之间,逻辑时
钟至少变一次,两个事件不会
精确地同时发生。
3.2 分布式互斥
要求:
(1) 安全性
(2) 可用性
(3) 定序
在单机系统中,使用信号量
(semaphores)、管程(monitors)
等来保护临界区。
S P(S) V(S)
Wait(s) Singal(s)
1 集中式算法
2 分布式算法
要求:系统中所有的事件都是全序的
当一个进程接受到另一个进程请
求消息(Request)时,
(1) 若接受者不在临界区中,也不想
进入临界区,它就向发送者送
Reply消息
(2) 已在 ,它就不
回答(推迟)
(3) 要进入 ,但还没
有进入,它就将自己的请求
消息(Request)时间戳与收到的时间
戳比较,若收到的小,回
Reply消息,否则,推迟
8
8 8 12
12
12
8 12 为时间戳
Reply Reply
Reply
当进程0完成时,进程0返回Reply
Reply
在产生请求冲突时,遵守按时间戳排序,小时间戳优先的规则。
每次进入临界区需要2(n-1)条消息, n为系统中的进程数目。
相对集中式算法,慢、复杂、贵、不健壮
3 令牌算法
系统中所有的进程可组成一个虚拟或逻辑环,每个进程要知道谁在
它的下一个位置。
算法:令牌环被初始化后,进程0首先获得令牌,这样令牌开始绕环运动,它从进程k传递k+1,以点到点方式若一个进程得到了它相邻进程传递来的令牌,但它并不想进入临界区,就将该令牌往下传递。
仅拥有令牌的进程才有权进入临界区。
每次进出需要的消息 进入前的延迟 问题
集中式 3 2 协调者崩溃
分布式 2(n-1) 2(n-1) 任一进程崩溃
令牌 1 到 ∞ 0到n-1 丢失令牌,进程崩溃
不定
3.3 选择算法
如果这个协调者进程由于它驻留
的处理机故障,而无法正常
工作(称为故障),系统只得通过
在另一个处理机上重新开始
一个新的协调者副本才能运行,确
定在何处重新开始一个新
的协调者算法,就称为选择算法。
Bully(欺负算法)
(1) Pi给所有比它优先数大的进程
发送消息;
(2) 若无进程响应,Pi获胜成为协
调者;
(2) 若有优先数比Pi大的进程响应
Pk,响应者Pk接管Pi的工作完成;
基于环结构的算法 (基于没有
令牌的环)
(1) 当任何一个进程发现协调者
进程不起作用时,构造一个包含
它自身进程号的消息给后继者;若后
继者失败,继续下一个;
(2) 消息到达了始发者的手中,始
发者接收者接收到包含它
自身进程号的消息后,将其转化为协
调者消息;
(3) 该消息将再一次绕环运行,向
所有进程通知谁是协调者;
具有最大优先数的进程,将它作为
新的协调者;
评价分布式同步互斥算法标准:
1 响应时间和吞吐量
充分利用系统的分布性,获得高的吞吐量和小的响应时间。
2 容错性
具有幸免于故障的能力。
3 开销大小
算法需要的一些额外开销,消息的数目和大小等。
4 收敛和公平
请求进入临界段的进程终将进入,在临界段执行的进程终将离开临界段。
并且对各进程公平。
5 可扩充性
容易加入新的结点和新的进程。
6 确定性
一定能保证同步、互斥,还是可能保证,如果不是确定的,就是概率性的。
7 恢复
对错误恢复的能力如何。
8 实用性
对其使用作了多少限制。
9 可理解性
如果一个算法是简单的,则很容易给出规范的正确证明。
简单是很重要的,包括:算法的实现、测试、维护、修改等等。