分布式系统
一、概念解释
1)同构型与异构型分布式系统
    同构型分布式系统:组成该系统的计算机的硬件和软件是相同的或非常相似的,同时组成该系统的计算机网络的硬件和软件也是相同的或非常相似的的分布式系统称为同构型分布式系统。
异构型分布式系统:组成该系统的计算机的硬件或软件是不同的,或者组成该系统的计算机网络的硬件或软件也是不同的分布式系统称为异构型分布式系统。 
2)紧密耦合与松散耦合分布式系统
        紧密耦合分布式系统:连接方式为内部总线或机器内互连网络;处理资源间距离为物理上分散,相距很近;处理资源为处理机;通信方式为共享存储器的分布式系统称为紧密耦合分布式系统。
松散耦合分布式系统:连接方式为通信网络;处理资源间距离为地理上分散,相距很远;处理资源为计算机系统;通信方式为报文交换的分布式系统称为松散耦合分布式系统。
3)中间件服务
        中间件服务:中间件服务为应用程序隐匿底层平台的异构性。许多中间件系统提供某种程度的全局服务集成,并且只为用户或应用程序提供使用这些服务的接口。       
4 阻塞原语与非阻塞原语
          阻塞原语:阻塞原语是阻塞性报文通信原语也称为同步原语。阻塞原语不立即将控制权返回给调用该原语的进程,也就是说send一直被阻塞直到发送的信息被接收方收到并得到接收方的应答。同样地,receive一直被阻塞,直到要接受的信息到达并被接收。
          非阻塞原语:非阻塞原语不提供任何形式的同步,非阻塞原语也称为异步原语。执行发送和接收时,控制权立即返回给进程并继续执行语句。然后,收到响应而产生一个中断,通知进程可以完成原语。
5 客户存根与服务器存根
          客户存根(client stub):客户代理。在客户上的进程需要访问服务器上的资源时,可以发出一条带有参数的RPC命令给客户存根,以委托它充当调用进程的代理。客户存根接收到RPC的命令后,便去执行本次的远程过程调用;客户存根与一个客户应用相联,它对于该客户就像一个服务器一样,它截取客户的远程调用命令后,利用通信网络向服务器发送服务请求,在返回时,它获取返回信息,并将结果返回给客户。
          服务器存根(sever stub):服务器代理。服务器存根与一个服务器相联,它对于服务器来说就像一个客户一样,在调用时,它接收到远程调用的请求后,产生一个本地调用来执行相应的远程过程,在返回时,它获取远程过程的返回结果,并形成返回消息发送给客户。
6)同步检查点和异步检查点。
        异步检查点:在异步检查点方式中,各进程独立地完成检查点,这种方
式对应用程序增加的开销较小,但会导致检查点文件数目不确定,恢复时容易出现多米诺效应等问题。
同步检查点:在同步检查点方式中,通过发送统一的控制信息。能够保证所做的检查点满足
全局一致性。所谓全局一致性检查点是指,在检查点集中,如果一个进程的检查点已经记录了一条消息的接收事件,那么这条消息的发送方的进程的检查点也记录了这条消息的发送事件。
二、说明下列问题
(1) 说明分布式系统的透明性表现以及影响透明性的主要因素
      分布式系统的透明性表现:
1)名字透明。名字透明指的是对象的命名在全局是唯一的,不管在什么地方访问该对象使用的名字都是一样的。这样一来,在系统中移动一个程序不影响它的正确性。
2) 位置透明。位置透明指的是资源的名字中不包含该资源的位置信息。这样一来,当该资源在系统中移动时,在资源名字保持不变的情况下,原有的程序都可正常运行。
3) 访问透明。用户不用区分本地资源还是远程资源,访问本地资源和访问远程资源的方法是一样的。
4) 迁移透明。迁移透明指的是用户不知道一个资源或者他的作业是否迁移到另外一个位置。迁移透明需要名字透明的支持。
5) 复制透明。复制透明允许文件或其他对象的多个副本同时在系统中存在,但是这种情况对用户是透明的,对对象的修改应同时作用在对象的所有副本上。
6) 并发和并行透明。多个进程可能并发或并行访问同一个资源,或一个进程同时使用多个资源,在此情况下不会产生相互干扰和破坏。
7) 失效透明。系统中的某一部分失效时,整个系统不会失效,仍可正常运行。
影响透明性的主要因素:系统的异构性,局部自治性,网络互连。
系统的异构性对透明性的影响:通过网络服务松散集成,共享不同语言的程序,在已有的多个系统上加入前端软件,使用透明的操作系统桥,聚合法。
          局部自治性对透明性的影响:资源控制方面,命名方面。
资源控制方面:由分布式系统连接的各机器是由不同的用户所操作,或由一个机关的不同部
门控制,希望在资源的使用上有较大的控制权。因此,必须有一种手段解决这个问题,在透明性和局部自治性之间进行折衷。
命名方面:即使同型号的机器,不同的用户也可能以不同的方式形成他们的目录,例如FORTRAN程序库在某个机器上使用某个名字,而在另一台机器上可能使用另一个名字,造成不透明。
网络互连对透明性的影响 :很多网络连接了不同厂商提供的不同系列的计算机,要实现透明性必须修改这些机器的软件,这是很不实际的。现在的网络一般是直接从早期网络结构发展来的,其最重要的功能是通信,并未考虑到分布计算。远程网络一般是很昂贵的资源,其特征是低带宽或高延迟,或者二者兼有,因此,很多人认为应当使这种资源的应用成为可见的(不透明的)
(2) 描述分布式系统的层次结构以及每层完成的主要功能
分布式系统的层次结构:
分布式系统由四层组成。第一层是由硬件或固件组成的硬核,第二层是分布式操作系统的内
核,第三层是分布式操作系统的服务层,第四层是和用户有关的应用层。
      第一层硬核完成的主要功能:
          硬件/固件层(硬核)。该层包括处理器、主存、I/O设备、键盘、终端以及用于数据采集和物理过程控制的各种硬件设备。主要完成数据采集和物理过程控制的功能。
      第二层是分布式操作系统的内核完成的主要功能:
            内核完成的最基本最重要的功能是进程通信(IPC),除此之外,还包括进程的同步机制、进程管理、存储管理和I/O管理等功能。
      第三层是分布式操作系统的服务层完成的主要功能:
            分布式操作系统的服务层作用是为各种广泛的应用提供一些基本的、共同的服务,包括实现基本的资源分配和复用。
      第四层是和用户有关的应用层完成的主要功能:
            应用层包括和各种应用有关的顾客服务进程。要考虑的主要问题有两方面:应用结构问题和语言问题。
(3) 简述远程过程调用机制的特点,设计和实现远程过程调用要考虑的主要问题有哪些?
      远程过程调用机制的特点:
          1)远程过程调用的形式和行为与单机环境下的过程调用的形式和行为类似,主要差别在于被调用的过程实际运行在一个与调用者所在场点不同的场点上。
2)从语义的角度,RPC允许进程使用简单的过程调用,通过网络与远程进程通信。因此,它可向应用层和用户提供良好的接口。
3RPC的服务器程序具有独立编程的特点,有利于系统扩充其服务功能。
4)从应用的角度,RPC基于过程的远程通信特点,为网络和分布式系统的应用提供灵活方便的通信功能。
5RPC的通信模型是基于客户-服务器通信模型的一种同步通信方式,它为客户提供远程
服务的过程抽象,其底层消息传递操作对客户是透明的。在RPC中,客户是请求服务的调用者,服务器是执行客户的请求而被调用的程序。
6)在进行远程过程调用时,虽然调用进程和被调用进程的过程分别处于不同的机器上,但调用进程可以采用与本地过程一样的方式来调用远程过程。
设计和实现远程过程调用主要考虑的问题包括以下方面: 
          参数类型。RPC中有三中参数传递类型:第一种是输入参数,这种参数只用于客户向服务器传递信息;第二种是输出参数,这种参数只用于服务器向客户传递信息,客户不能使用它向服务器发送信息;第三种既作输入又作输出的参数,客户能用这种类型的参数向服务器传递信息,服务器同样能用这个参数向客户传递信息。
数据类型的支持。数据类型的支持指的是在远程过程调用中哪些数据类型可以作为参数使用。同各种程序设计语言一样,RPC也有可能限制参数的复杂程度。一般的RPC对参数的个数进行了限制但允许使用较复杂的数据类型。例如只使用一个参数,但是参数可以是一个复杂的结构,这样以来,程序设计者可以通过比较方便的办法绕过这种限制
参数打包。为了进行有效的通信,参数和较大的数据结构需要进行打包,接收方能够正确地进行拆包和解压缩信息。打包和拆包的功能常用一个存根(stub)完成。
(4) 举例说明死锁的产生、解决办法以及预防策略
例子:进程A等待进程B的结果,进程B等待进程C的结果,进程C等待进程A的结果。
进程之间循环等待,形成有向圈产生了死锁。
死锁的产生的必备条件:
1)互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用毕释放。
2)请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。
3)不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由
自己释放。系统将一个资源的访问权分配给某一个进程后,系统不能强迫该进程放弃对该资源的控制权。
4)环路等待条件:指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{P0P1P2,···,Pn}中的P0正在等待一个P1占用的资源;P1正在等待P2占用的资源,……,Pn正在等待已被P0占用的资源。
死锁产生的原因有竞争资源引起进程死锁,进程推进顺序不当引起死锁。
死锁的解决办法:解决死锁常用的实施方法是撤销或挂起一些进程,以便回收一些资源,再将这些资源分配给已处于阻塞状态的进程,使之转为就绪状态,以继续运行。方法如下:
1)撤消陷于死锁的全部进程;
2)逐个撤消陷于死锁的进程,直到死锁不存在,;
进程通信方式
3)从陷于死锁的进程中逐个强迫放弃所占用的资源,直至死锁消失。
4)从另外一些进程那里强行剥夺足够数量的资源分配给死锁进程,以解除死锁状态。
死锁处理的方法:预防、避免、忽略和检测。
预防死锁。通过限制请求,保证四个死锁条件中至少有一个不能发生,从而预防死锁。
避免死锁。如果资源分配会导致一个安全的结果状态,就将资源动态地分配给进程。如果至少有一个执行序列使所有的进程都能完成运行,那么这个状态就是安全的。其潜在的问题是需要及时地收集到一致的全局状态信息,故对请求进程和可用资源的数量等信息要求太严格,检查安全性状态会涉及到大量进程和资源的计算,开销太昂贵。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。