高级操作系统.ppt
2023/4/3,1,高级操作系统Advanced Operating System,2023/4/3,2,第一章 分布式系统简介,分布式系统的诞生和定义分布式系统发展的动力分布式系统的目标分布式系统的优缺点计算机网络与分布式系统的关系分布式系统硬件分布式系统软件分布式系统的设计问题,2023/4/3,3,1.6 分布式系统硬件,1.6.1 分布式系统硬件分类 过去人们曾提出过各种不同的多CPU系统分类方案,但还没有一个得到广泛采用。被应用最多的分类法可能是弗林(flynn,1972)分类法,尽管它还相当不完善。弗林选择了两个他认为是最本质的特征既指令流数目和数据流数目作为分类依据:第一类:具有单一指令流、单一数据流的计算机称之为SISD,从个人计算机到大型机,所有传统的单处理器计算机(即只有一个CPU)均属此类。第二类:单指令流、多数据流SIMD。这一类是指只有一个指令单元的处理器阵列。指令单元取一条指令,然后控制多个数据单元并行地进行数据处理,每个数,2023/4/3,4,1.6 分布式系统硬件,据单元均有自己的数据。这种机器对多组数据的重复计算相当有用,例如64个独立向量的所有元素求和。某些超级计算机也属于SIMD(757向量机)。第三类:多指令流、单数据流MISD。目前,没有一个已知的计算机属于这一类。第四类:多指令流、多数据流MIMD。它是一组独立计算机的集合,每一个独立计算机都具有程序计数器、程序以及数据。所有的分布式系统都属于MIMD。所以,弗林分类法分类法对分布式系统来说并无太大意义。尽管弗林分类法已到此为止,但我们还可以更进一步分类。见图1-4:,2023/4/3,5,1.6 分布式系统硬件,紧偶合 松散偶合 图1-4 并行与分布式计算机系统的分类,并行和分布式计算机系统,具有共享存储器的多处理器系统,无共享存储器的多计算机系统,总线,开关,总线,开关,2023/4/3,6,1.6 分布式系统硬件,我们把所有MIMD分为两类:具有共享存储器的多处理器系统。没有共享存储器的多计算机系统。两者的区别在于:在一个多处理器计算机系统中,所有CPU共享一个单一的虚拟地址空间。如果一个CPU把值44写入地址1000中,那么,任何其它CPU从地址1000读出的值均是44。而在多计算机系统中,每台机器均有它私有的存储器。如果某个CPU把值44写入地址1000中,那么,另一个CPU从地址1000中读出的值将不是44。一个多计算机系统例子是由网络连接起来的一群计算机。,2023/4/3,7,1.6 分布式系统硬件,根据互连网络结构的不同,以上两个分类还可进一步细分:总线型:是指单一的主干线、总线、线缆或其它把所有机器连接起来的介质。有线电视便采用了这样的方案:架线公司沿街铺设线缆,一个分支线将用户的电视连接到主干线上。开关型:开关型不像有线电视那样具有单一的干线。机器与机器之间有专门的线路连接。它可以有许多种布线方式。信息沿着线路传输。由一个开关来选择信息的下一条出发线。世界上的公用电话系统就是这样组织的。,2023/4/3,8,1.6 分布式系统硬件,另一种分类:处理机是紧耦合的:信息从一台处理机发向另一台处理机的延迟是短暂的且数据传输率(每秒传输位的数目)较高,例如,两个在同一印刷线路板上由蚀刻在板上的线路连接在一起的CPU是紧耦合的。机器是松散耦合的:机器间发送信息的延迟较长且数据传输率较低,例如,由一个2400位/秒的调制解调器通过电话系统连接的两台计算机无疑是松散耦合的。一般来说,紧耦合系统更多地用于并行系统(用来解决单一的问题)而中等松散耦合系统(即局域网)主要用于分布式系统(用来解决多个相关性不大的问题)。,2023/4/3,9,1.6 分布式系统硬件,总之,多处理器系统比多计算机系统的耦合更紧密。因为它们能以存储器读写速度来交换数据,不过有些基于光纤的多计算机系统也能以存储器读写速度来交换数据。尽管“紧耦合”与“松散耦合”的界限并不是很明确,但他们仍不失为有用的概念。接下来,我们将详细讨论四种类型计算机系统即基于总线的多处理器系统、基于开关的多处理器系统、基于总线的多计算机系统以及基于开关的多计算机系统。,2023/4/3,10,1.6 分布式系统硬件,1.6.2 基于总线的多处理器 基于总线的多处理器系统是由多个连接在一根公共总线上的CPU以及单个存储器模块所组成。一个简单的例子就是使用一块高速的母板,在上面可插入CPU和存储器条。一条典型的总线有32或64条地址线、32或64条数据线以及32条或更多的控制线,这些线都是并行工作的。为了从存储器中读出一个字,CPU首先将所需字的地址放到地址总线上,然后在适当的控制线上设置一个信号以表示读。作为响应,存储器将对应地址中的内容放到数据线上以便CPU读入。写的过程与此类似。,2023/4/3,11,1.6 分布式系统硬件,1.6.2 基于总线的多处理器 由于只有一个存储器,如果当 CPU A往存储器中写入一个字而后 CPU B在一微妙后读出,则B将得到刚写入的值。这种特性称之为一致性,一致性在分布式统中具有非常重要的作用。基于总线的多处理器存在的问题:当有个CPU时,通常总线会过载而造成性能急剧下降。解决方法是在CPU和总线之间加一个高速缓存,如图1-5所示。高速缓存保存最常访问的数据。所有存储器的访问请求均经过缓存。如果所要访问的字在高速缓存中,则高速缓存响应CPU,无需进行总线请求。,2023/4/3,12,1.6 分布式系统硬件,CPU CPU 存储器 总线 图1-5 一个基于总线的多处理器,高速缓冲,高速缓冲,2023/4/3,13,1.6 分布式系统硬件,1.6.2 基于总线的多处理器 如果高速缓存足够大,那么,所要访问的字在高速缓存的可能性即命中率将会很高,而每个CPU的总线通信量将会大幅降低,这将允许更多的CPU连到总线上。通常高速缓存大小为到时,命中率将达到%以上。但是,高速缓存的引入也带来了一个严重的问题,假设有A和B两个CPU,分别将相同的字读入到各自的高速缓存中。然后A重写这个字。当B再次读这个字时,它从其高速缓存中得到是以前的值,而不是A刚刚写入的那个值。由于高速缓存的不一致性,使得系统编程变得相当困难。,2023/4/3,14,1.6 分布式系统硬件,1.6.2 基于总线的多处理器 一个解决办法:当在高速缓存中写入一个字时,同时也往存储器中写入。这样的高速缓存称之为通过高速缓存写。高速缓存读的成功不会引起总线通信,而高速缓存读的失效以及所有高速缓存写的成功和失败均会造成总线通信。所有的高速缓存都一直监视着总线,每当一个高速缓存发现它的一个单元在存储器中对应的单元被写时。它要么从高速缓存中去掉该单元,要么用新值更新这个高速缓存单元。这种高速缓存称为窃听高速缓存(snooping cache)。这种设计具有一致性并对程序员是透明的,所以,几乎所有基于总线的多处理器都采用与之相同或相似的结构。采用这种结构可以在一个单一总线上挂接32或64个CPU。,2023/4/3,15,1.6 分布式系统硬件,1.6.3 基于开关的多处理器系统 为了制造一个超过64个处理器的多处理器系统,需要其它的方法把CPU和存储器连接起来。一种方法就是把存储器分成模块并用交叉杆(crossbar)开关将它们与CPU相连接,如图1-6(a)所示。每个CPU和每一个存储模块均由一个交叉杆开关将其连接。每个交叉点都是一个由硬件控制开或关的小电子交叉点开关(crosspoint switch),当CPU要访问某个特定的存储模块时,连接它们的交叉点开关会立即合上,允许对存储模块的访问。优点:多个CPU可以同时访问存储模块。缺点:当两个CPU要同时访问相同的存储模块时,它们当中之一必须等待。如果有n个CPU和n个存储模块,2023/4/3,16,1.6 分布式系统硬件,存储器 CPU 存储器 CPU 交叉点开关 22 开关(a)(b)图1-6(a)一个交叉干开关(b)一个Omega 开关网络,2023/4/3,17,1.6 分布式系统硬件,2023/4/3,18,1.6 分布式系统硬件,1.6.3 基于开关的多处理器 则交叉点开关必须有n2个,当n较大时,交叉点的数目将急剧增加。所以,人们试图寻找一个需要更少开关的开关网络。多级互连网络(Multi-stage Interconnection Networks,简称MINs):An NN MIN consists of several columns(called stages)of switch elements(SEs)and links that connect the N outputs from a stage to the N inputs of the next stage in a certain pattern(22 SEs are commonly used).典型的多级互连网络就是NN Omega网络。,2023/4/3,19,1.6 分布式系统硬件,1.6.3 基于开关的多处理器 图1-6(b)是一个Omega网络。这个网络含有4个22开关,每一个开关有两个输入及两个输出。每个开关都可以设置成通过和交叉两种形式。当正确地设置开关时,每个CPU可以访问任意一个存储模块。开关设置仅需几纳秒或更短的时间。一般情况即N个CPU和N个存储模块,Omega网络需要logN开关级,每级有N/2个开关,总开关数为(NlogN)/2。虽然对于大N,开关总数要比N2少得多,但仍然相当庞大。Omega网络的问题:延迟-例如,对于N=1024,从CPU到存储模块共有10个开关级,再加上数据回来时的,2023/4/3,20,1.6 分布式系统硬件,1.6.3 基于开关的多处理器 10个开关级。假设CPU是速度为100MIPS的现代RISC芯片即指令执行时间为10纳秒,那么一个访问存储模块请求要在10纳秒内走完全部的20个开关级即开关时间必须为500皮秒(0.5纳秒)。整个多处理器系统要5120个500皮秒的开关。这需要付出昂贵的代价。总之,对于基于总线的多处理器系统,即使有窃听高速缓存,其总线容量也会受到最多只能接64个CPU的限制。超过这个限制就需要一个开关网络,大规模交叉杆开关相当的昂贵,而大规模的Omega网络不仅贵而且慢。所以建造一个大型紧耦合且共享存储器的多处理器系统是可行的,但是比较困难而且昂贵。,2023/4/3,21,1.6 分布式系统硬件,1.6.4 基于总线的多计算机系统 在一个无共享存储器的多计算机系统中。每个CPU都与自己的局部存储器直接相连。这一类系统所涉及的问题是CPU间的通讯。由于CPU之间的通信量要比CPU到存储器之间的通信量少几个数量级,所以,采用互连网络比较合适。图1-7中是一个基于总线的多计算机系统。它的拓扑结构与基于总线的多处理器很相似。由于通信量少,所以,不需要高速主干总线,一个速度较低的LAN就足够了。因此,图1-7实际上是LAN上的工作站集合而不是插在一个快速总线上的CPU集合。(CSMA/CD),2023/4/3,22,1.6 分布式系统硬件,工作站 工作站 工作站 局部存储器 局部存储器 局部存储器 CPU CPU CPU 网络 图1-7 一个由LAN上工作站组成的多计算机,2023/4/3,23,1.6 分布式系统硬件,1.6.5 基于开关的多计算机系统 目前,人们已提出了各种不同的互连网络。在这些互连网络中,每个CPU都可以直接访问自己的私有存储器而拒绝其它CPU访问自己的私有存储器。图1-8给出了两个常见的拓扑结构:网孔和超立方体。网孔比较规整且易于布线。最适合那些具有两维性质的问题,如图论或视觉。一个超立方体是一个n维立方体。图1-8(b)的超立方体是四维的。我们可以把它看成是由两个普通的立方体所组成。每个立方体有8个顶点和12条边。每个顶点代表一个CPU,每条边表示两个CPU之间的连接。两个立方体中对应的顶点被连接起来。,2023/4/3,24,1.6 分布式系统硬件,(a)(b)图1-8(a)网孔(b)超立方体,2023/4/3,25,1.6 分布式系统硬件,1.6.5 基于开关的多计算机 如果把这个4维超立方体扩展成5维超立方体,则只需将这两个4维超立方体的对应顶点连接起来即可,以此类推。对于一个n维的超立方体,每个CPU都与其它n个CPU相连。这样,布线复杂度将随维数的大小成对数增加。只有相邻的CPU才直接相连,许多信息在到达目的地前必须经过几个段。这样,最长路径也随维数的大小成对数增加。而网孔的最长路径将随CPU数目成平方根增加。目前,具有1024个CPU超级立方体的商业性应用已有多年。具有16,384个CPU的超立方体也应用了一段时间了。,2023/4/3,26,1.7 分布式系统软件,在分布式系统中,软件的重要性要远远高于硬件的重要性。呈现在用户面前的分布式系统以及用户对分布式系统的看法很大一部分都是取决于操作系统而不是硬件。操作系统远不象硬件那样清晰明了,因为,软件本身就是不明确的。尽管如此,我们仍将根据两个多CPU系统的划分分别定义两种软件(这里软件指得是操作系统)即松散耦合软件和紧耦合软件。松散耦合软件和紧耦合软件都可运行在松散耦合硬件和紧耦合硬件之上。,2023/4/3,27,1.7 分布式系统软件,1.7.1 网络操作系统 网络操作系统是运行在松散耦合硬件之上的松散耦合软件。它是用户和网络之间的一个接口,它除了应该具备通常操作系统所应具备的基本功能外,还应该具有联网功能,支持网络体系结构和各种网络通信协议,提供网络互连能力,支持有效可靠安全地数据传输。早期网络操作系统功能较为简单,仅提供基本的数据通信、文件和打印服务等。随着网络的规模化和复杂化,现代网络的功能不断扩展,性能大幅度提高,很多网络操作系统把通信协议作为内置功能来实现,提供与局域网和广域网的连接。Linux,2023/4/3,28,1.7 分布式系统软件,1.7.1 网络操作系统 网络操作系统的特征:硬件独立性:网络操作系统可以运行在不同的网络硬件上,可以通过网桥或路由器与别的网络连接;支持多用户:能同时支持多个用户对网络的访问,对信息资源提供完全的安全和保护功能;支持网络实用程序及其管理功能:系统备份、安全管理、容错和性能控制;支持多种客户端:如WindowsNT 可以支持MS-DOS、OS/2、Windows98、Windows for wrokgroup、UNIX 等多种客户端,极大地方便了网络用户的使用;,2023/4/3,29,1.7 分布式系统软件,1.7.1 网络操作系统提供目录服务:以单一逻辑的方式让用户访问所有网络服务和资源的技术;支持多种增值服务:如文件服务、打印服务、通信服务、数据库服务、W W W 服务等等;可操作性:允许多种操作系统和厂商的产品共享相同的网络电缆系统,且彼此可以连通访问。网络操作系统的三种类型:集中模式:是由分时操作系统加上网络功能演变而成的,系统的基本单元是一台主机和若干台与主机相连的终端构成,把多台主机连接起来就形成了网,2023/4/3,30,1.7 分布式系统软件,1.7.1 网络操作系统 络,而信息的处理和控制都是集中的,UNIX 系统是这类系统的典型例子;客户/服务器模式:网络中连接许多台计算机,其中,一部分计算机称为服务器,提供文件、打印、通信、数据库访问等功能,提供集中的资源管理和安全控制。而另外一些计算机称客户机,它向服务器请求服务,如文件下载和信息打印等。服务器通常配置高,运算能力强,有时还需要专职网络管理员维护。客户机与集中式网络中的终端不同的是,客户机有独立处理和计算能力,仅在需要某种服务时才向服务器发出请求。客户服务器模式在逻辑上,2023/4/3,31,1.7 分布式系统软件,是星形结构,以服务器为中心,服务器与各客户间采用点到点通信方式。对等模式:让网络中的每台计算机同时具有客户和服务器两种功能,既可以向其他机器提供服务,又可以向其他机器请求服务,而网络中没有中央控制手段。尽管所有的机器可以运行相同的网络操作系统,但这并不是必须的。如果客户和服务器运行不同的操作系统,那么,对于所有需要交换的信息,他们至少在信息的格式及意义上要保持一致。因此,每台机器具有高度的自治性并且对系统范围内的要求较少。,2023/4/3,32,1.7 分布式系统软件,1.7.2 分布式操作系统 网络操作系统是运行在松散耦合硬件上的松散耦合软件。除了共享资源以外,用户能够明显地知道系统有多少个服务器存在。每台计算机均运行自己的操作系统,做主人所要求做的事。分布式操作系统是在松散耦合(即多计算机)硬件上运行紧耦合软件。这样一个系统给用户制造了一个假象:整个计算机网络就象一个单一的分时系统一样,而不是各种机器的集合。这被称之为单系统映像。分布式操作系统实际上是一个在网络计算机集合上运行的系统,整个系统就象一个单一的虚拟处理器一样。用户不知道也不必知道系统有多个台计算机的存在。,2023/4/3,33,1.7 分布式系统软件,1.7.2 分布式操作系统分布式操作系统的特征:有一个统一的全局进程间通信机制来保证每一个进程可以与任意一个其它进程进行联系。不允许在不同机器上采用不同的通信机制或者对本地通信与远程通信采用不同的通信机制。有一个全局保护方案。仅把访问控制列表和UNIX的保护位以及各种能力堆砌在一起是形成不了单一的系统映像的。所有机器上的进程管理必须相同即进程的创建、撤消、运行和停止不能因机器而异。,2023/4/3,34,1.7 分布式系统软件,1.7.2 分布式操作系统所有机器上有统一的一组系统调用,并且这些调用必须适应分布式环境。所有机器上的文件系统也必须一样。在某些地方文件长度有11个字符的限制而在其它一些地方则没有,这种情况是不允许出现的。除了受保护及安全性限制以外,每个文件应在任何一个地方都是可访问的。系统中所有的CPU必须运行相同内核。这样做比较容易协调全局活动。,2023/4/3,35,1.7 分布式系统软件,1.7.2 分布式操作系统需要一个全局的文件系统。每个内核对自己的局部资源应有较大的控制权。例如,由于没有共享存储器,应该允许每个内核来管理它自己的存储器。再如,如果某个机器上需要换页,那么,应由该机器CPU的内核自己来进行换页。整个系统完全没有必要集中这个权力。同样,如果在某个CPU上有多个进程在运行,那么,也应该在该CPU上进行进程调度。,2023/4/3,36,1.7 分布式系统软件,1.7.3 多处理器分时操作系统 多处理器分时操作系统是在紧耦合硬件上运行的紧耦合软件。典型紧耦合硬件是多处理器计算机。它象UNIX分时系统那样运行,使用多个CPU而不是单个CPU。从用户的观点来看,32个30-MIPS CPU 的多处理器系统与单个的960-MIPS 的CPU没什么两样(这就是前面所讨论的单一系统映像)。此外,由于整个设计可以集中化,所以,多处理器系统的实现比较容易。但是,它需要一个单一的运行队列即系统中所有进程的列表,表中的进程是非阻塞的并处于就绪状态,运行队列是共享存储器中的一个数据结构。让我们来看一看图1-11中的一个例子。,2023/4/3,37,1.6 分布式系统硬件,共享存储器 E(就绪)D(就绪)CPU 1 CPU 2 CPU 3 C(运行)B(运行)进程A 进程B 进程C A(运行)运行队列:D,E 硬盘 高速缓存 高速缓存 高速缓存 操作系统 总线 图1-11.一个具有单运行队列的多处理器,2023/4/3,38,1.7 分布式系统软件,1.7.3 多处理器分时操作系统 该例子中有3个CPU和5个进程,这五个进程均在共享存储器中,其中三个正在运行:进程A在CPU 1上,进程B在CPU 2,进程C在CPU 3。其它两个进程D和E在运行队列中等待调度。假设进程B由于I/O而阻塞或用完了时间片。CPU 2将它挂起,并调度另一个进程投入运行。通常CPU 2将执行位于共享存储器中的操作系统代码。在保存所有B的寄存器之后,它将进入一个临界区运行一个调度程序调度另一个进程投入运行。由于调度程序作为一个临界区来运行以防止两个CPU调度同一个进程投入运行,所以,必须采用互斥机制。,2023/4/3,39,1.7 分布式系统软件,1.7.3 多处理器分时操作系统 一旦CPU 2获得对运行队列的互斥访问权,则它移去第一个项D,退出临界区并开始执行D。刚开始时执行速度较慢,因为CPU 2的高速缓存中装有共享存储器中进程B的内容。但稍后将被D的代码和数据所覆盖,因此,执行速度将会加快。由于所有的CPU都没有局部存储器,程序和数据都放在全局共享存储器中,所以,进程在哪个CPU上运行都无关紧要。如果一个运行时间较长的进程在结束前多次被调度,那么,平均来说,它在每个CPU上运行的时间是差不多的。CPU的选择所产生的影响就是性能好坏。例如,如果所有的CPU都在等待I/O而空,2023/4/3,40,1.7 分布式系统软件,1.7.3 多处理器分时操作系统 闲,此时有某个进程就绪,那么应该将该进程分配给它最近使用的那个CPU(假设其它进程一直没有使用过这个CPU)。这样分配可以提高一部分性能。原因是该进程在共享存储器中的内容已存储在这个被分配CPU的高速缓存中。如果在一个多处理器上的进程由于I/O而阻塞,那么,操作系统或者把它挂起或者让它等待。如果这个I/O可以在小于一个进程切换时间内完成,那么,让进程等待是比较合适的。某些系统的做法是让该进程继续占用CPU几个毫秒时间以希望I/O能很快结束,如果在时间片结束之前I/O还未结束,则进行进程的切换。如果大多数临界区都比较短,那么,采用这个方法可以避免费时的进程切换。,2023/4/3,41,1.8 分布式系统的设计问题,1.8.1 透明性 系统设计者如何使用户将机器的集合看成是一个老式的分时系统。实现这个目标的系统通常被称为是透明的系统。透明性可以在两个不同层次上实现:在高层次上的实现:将分布性对用户透明。例如,当一个UNIX用户键入make来重新编译一个目录中的许多文件时,它不必知道所有文件的编译是在不同机器上并行完成的,也不必知道该编译使用了多少个文件服务器。对用户来说唯一不同的是系统的性能变好了。命令由终端发出,结果返回终端,整个分布式系统看起来象一个单处理器系统。,2023/4/3,42,1.8 分布式系统的设计问题,1.8.1 透明性 在低层次上的实现:是对程序员的透明,尽管比较困难,但也不是做不到的。换句话说,系统调用接口可以设计成使多个处理器不可见。然而,对程序员的透明比对终端用户的透明要难得多。考虑一个由工作站构成的分布式系统。每台工作站均运行某个标准的操作系统。如果远程文件的访问是通过显式地建立网络连接到远程服务器上并发送信息给远程服务器来实现的,那么,这样的一个系统是不透明的。因为远程文件与本地文件的访问是不一样的。程序员知道它必须同系统中多个机器打交道,这是透明性所不允许的。,2023/4/3,43,1.8 分布式系统的设计问题,1.8.1 透明性 透明性的概念可以表现在分布式系统的许多方面:位置透明:是指在一个分布式系统中,用户不知道软硬件资源如CPU、打印机、文件及数据库的位置。资源的名字不能含有资源的位置。迁移透明:是指资源可以自由地移动而名字不用改变。复制透明性:用户不知道有多少个副本存在。并发透明:多个用户可以自动并发地共享资源。并行透明:程序可以在多台计算机上并行地执行而无须用户干预。,2023/4/3,44,1.8 分布式系统的设计问题,1.8.1 透明性 在透明性中,最复杂的是并行透明性,即分布式系统在用户看来是一个传统的单处理器分时系统。如果一个程序员知道他所用的分布式系统有1000台计算机并且要使用其中一部分来运行计算程序,那么,对他来说并行是不透明的。解决的办法是让编译器、运行系统和操作系统来合理地利用多个计算机的并行性而不是让用户自已来安排。不幸的是目前的水平要达到这一点还差得很远。实际上,目前程序员要用多个计算机来解决一个问题,那么他只能自已编程显示地使用多个计算机的并行性。因此,解决并行透明性是当前分布式系统设计者的主要工作。,2023/4/3,45,1.8 分布式系统的设计问题,1.8.2 灵活性 第二个重要设计问题是灵活性。对于分布式操作系统的结构,目前存在着两派。一派认为每台机器应运行一个传统的内核,由内核提供大多数的服务。另一派认为内核所提供的服务应尽可能的少,大量操作系统服务可从用户级服务器上获得。我们将它们分别被称之为大内核和微内核,如图1-14所示。目前大多数分布式系统都是采用大内核并辅以网络设备和集成的远程服务。大多数系统调用由内核执行所需的功能并将结果返回给用户进程。这些分布式系统基本上都是UNIX的扩展,因为UNIX本身具有一个大内核。,2023/4/3,46,1.6 分布式系统硬件,用户 用户 文件服务器 目录服务器 进程服务器 大内核 微内核 微内核 微内核 微内核 包括文件、目录 网络 和进程管理(a)(b)图1-14(a)大内核(b)微内核,2023/4/3,47,1.8 分布式系统的设计问题,1.8.2 灵活性 大多数采用微内核的分布式操作系统都必须从头开始设计。因为微内核提供的服务极少,所以更加灵活。通常它主要提供下面四个最基本的服务:1 进程间通信机制;2 存储管理;3 低层进程管理及调度;4 低层输入输出。微内核不提供文件系统、目录系统、全部的进程管理以及大量系统调用处理。它只提供这几个最基本服务的原因是这些服务若在别处提供会很困难或者代价较高。另一个原因是让微内核尽可能的小。,2023/4/3,48,1.8 分布式系统的设计问题,1.8.2 灵活性微内核的优点:高度模块化:操作系统服务通常由用户级服务器来提供,例如,为了查询名字、读取文件或获得其它服务,用户必须向指定的服务器发送一个消息,该服务器完成服务后返回结果。容易实现安装及调试新的服务:增加或改变某项服务无需关闭系统和引导新内核。正是由于这种增加、删除及修改服务的能力赋予了内核极大的灵活性。,2023/4/3,49,1.8 分布式系统的设计问题,1.8.2 灵活性 例如,在一个有多个文件服务器的分布式系统中,一个文件服务器支持MS-DOS文件服务而另一个支持UNIX文件服务。每一个程序都可以使用其中一个或两个。相反,在具有大内核系统中,由于文件系统建在内核,所以,用户别无选择的只能使用它。大内核的一个优点:性能好。由内核完成所需服务可能比向远程服务器发送消息要快的多。实际上大内核的这种优点并不存在。主要原因是在LAN上发送一个消息和接收一个应答所需的时间通常可忽略不计。因此,具有微内核的分布式系统方案将逐步占主导地位,大内核将最终消失或发展成微内核。,2023/4/3,50,1.8 分布式系统的设计问题,1.8.3可靠性 在分布式系统中,当某台机器出故障时,其它机器可接替它的工作。整个系统的可靠性是每台计算机可靠性的布尔或。例如,有四台文件服务器,每台不出错的概率为0.95,则全部同时出故障的概率是0.054=0.000006,所以,至少有一台服务器在工作的概率是0.999994。比任何单服务器要好得多。上述的结果是理论上的。实际上,由于目前分布式系统主要依靠一些正常工作的特定服务器,所以,它正常工作的概率更多的是布尔与而不是布尔或。,2023/4/3,51,1.8 分布式系统的设计问题,1.8.3可靠性可靠性包含着多个方面:可用性:指系统可用时间所占的比例。可用性可以通过设计来提高而不是采用大量关键部件同时工作来获得。改善可用性的办法是冗余:重要的硬件、软件应有备份,以便当其中一个发生故障时其它备份可以接替它继续工作。一个高度可靠的系统必须是高度可用的,但仅有这一点还不够,交付给系统的数据决不能丢失或被窜改。如果一个文件在多个服务器上冗余存储,那么,其所有的拷贝必须保持一致。一般来说,保存的拷贝越多,可用性越高,但发生不一致性的可能性越大。,2023/4/3,52,1.8 分布式系统的设计问题,1.8.3可靠性安全性:文件与其它资源必须被保护起来以免非授权的使用,虽然在单处理器系统中也有这个问题,但是在分布式系统中情况更为严重。在分布式系统中,当服务器收到一条请求消息时它没有一个简单的方法来确定该消息是谁发来的话。那么,该消息中的名字域或标识域都是不可信的,因为发送者可能在作弊。在这种情况下需要非常的谨慎。容错:如果一台服务器崩溃后迅速地重启动,服务器的崩溃有可能引起用户无法工作。如果服务器中含有重要的用户后继活动信息,那么,信息的恢复将十分重要。然而,信息的恢复是相当困难的。,2023/4/3,53,1.8 分布式系统的设计问题,1.8.4 性能 性能也是一个重要的设计问题。建立一个透明、灵活、可靠但非常慢的分布式系统并不能给用户带来任何好处。特别是,在一个分布式系统上运行一个应用程序不应比在单个处理器上运行该程序慢。遗憾地是,这说起来容易而做起来难。度量性能的方法:响应时间:吞吐率:利用率:网络容量消耗:,2023/4/3,54,1.8 分布式系统的设计问题,1.8.4 性能 提高性能的方法:减少通信量:通常,通信是相当慢的。为了使性能最佳化,人们常常不得不尽可能少的发送消息。虽然提高性能的最好方法是让多个处理器并行地运行应用程序,但这样做需要发送大量的消息。考虑计算粒度:在远程机器上运行一个小的计算例如两个整数相加是不值得的。因为通信开销远远超过了节省下来的几个CPU周期。另一方面,在远程机器上执行一个计算时间较长的作业也不值得。一般,2023/4/3,55,1.8 分布式系统的设计问题,1.8.4 性能 来说,对于那些具有许多小计算的任务,特别是那些小计算之间需要高度交互的作业,如果让其在通信速度相对较慢的分布式系统上运行,那么,系统的性能就比较差。我们将这类作业称之为具有细粒度的并行性。另一方面,那些具有大量大计算、交互率低以及数据少的作业(我们将其称之为具有粗粒度的并行性)比较适合在分布式系统上运行。,2023/4/3,56,1.8 分布式系统的设计问题,1.8.5 可扩放性 目前,大多数分布式系统都有几百个CPU。未来的系统其CPU的数目将会变得越来越大。那么,一个适用于200台机器的分布式算法对200,000,000台来说不一定适合。,