【操作系统】第十章-多处理机操作系统

十、多处理机操作系统

前言

计算机发展的历史请求地表明:提高计算机系统性能的主要途径有两条:一是提高构成计算机的元器件的运行速度,特别是处理器芯片的速度,而是改进计算机系统的体系结构,特别是在系统中引入多个处理器或多台计算机,以实现对信息的高度并行处理,达到提高系统吞吐量和可靠性的目的。

1.多处理机系统的基本概念

1.1 多处理机系统的引入

引入多处理机系统的原因大致如下:

  1. CPU的时钟频率问题
  2. 增加系统吞吐量
  3. 节省投资
  4. 提高系统可靠性

1.2 多处理机系统的类型

一般而言,可以从不同角度对多处理机系统的结构进行如下的分类:

  1. 紧密耦合MPS和松弛耦合MPS
  2. 对称多处理器系统和非对称多处理器系统

2.多处理机系统的结构

在采用共享存储器方式的多处理机系统中,若干个处理器可以共享访问一个公用的RAM,而这个RAM可以由多个不同的存储器模块组成。系统为运行在任何一个CPU上的程序提供了一个完整的虚拟地址空间视图。每个存储器地址单元均可被所有的CPU进行读写。对于这个性质,一方面可以方便地利用存储器单元实现处理机之间的通信;另一方面也必须在进程同步、资源管理及调度上,做出有别于单处理机系统的特殊处理。但是,由于程序或进程对不同存储器模块的读写速度可能存在的差异,形成了不同的多处理机体系结构:UMA多处理机结构和NUMA多处理机结构。

2.1 UMA多处理机系统的结构

所谓UMA(Uniform Memory Access),即统一内存访问(也称一致性内存访问)。在这种结构的多处理机系统中,各处理器单元(CPU)在功能和结构上都是相同的,在处理上没有主从之分,每个处理机可以访问不同模块的存储器单元,并且对于每个存储器单元的读写速度是相同的。实际上,根据处理机与存储器模块的连接方式的不同,可以具体分为以下三种结构:

  1. 基于单总线的SMP结构

    如下图(a)所示,在这种结果的系统中,把多个处理机与一个集中的存储器相连,所有处理器都通过公用总线访问同一个系统的物理存储器,每个处理机可以访问不同存储器模块中的单元,以及与其它处理机进行通信。这就意味着该系统只需要运行操作系统的一个拷贝,因此,为单处理器系统编写的应用程序可以直接移植到这种系统中运行。实际上,这种结构的SMP系统也被称为均匀存储器系统,即对于所有处理器来说,访问存储器中的任何地址所需的时间都是一致的。

    这种结构的缺点在于可伸缩性有限。系统中所有CPU对存储器的访问,都需要通过总线进行,多个CPU可能同时需要对总线进行访问,形成了对总线资源的争夺。随着CPU数目的增加,由于总线资源的瓶颈效应,对此进行相关协调和管理的难度急剧增加,从而限制了系统中CPU的数目。一般而言,在这种系统中,CPU的数目在4至20个之间。

    对上述的问题,可以通过为每个CPU配置一个高速缓存的方法解决。如下图(b)所示,这些高速缓存可以通过在CPU内部、处理机板、CPU附近等多种方式设置。这样,可以把每个CPU常用的或者即将用到的数据存放在其本地的高速缓存中,可以很大程度地减少该CPU对总线的访问频率,极大地减少总线上的数据流量,以支持更多的CPU。应该注意的是,在这里,高速缓存的交换和存储是以32字节或64字节块为单位,而不是单个字节。系统中高速缓存可以为所有CPU所共享,也可以为每一个CPU所独立拥有。

    在这里插入图片描述

  2. 使用多层总线的SMP结构

    对于单总线结构中存在的总线瓶颈问题的另一个解决方法,就是使用多层总线结构。在这种结构中,系统中所有的CPU不仅共享一个高速缓存,还有一个本地私有的存储器,如上图©所示。各CPU与本地的私有存储器、I/O设备通过本地总线连接,系统再使用系统总线将不同CPU的本地总线进行连接,并且将系统中的共享存储器连接在系统总线上。系统总线一般在通信主板中实现,各CPU使用本地总线访问其本地私有存储器,而通过系统总线访问共享存储器。

  3. 使用单级交叉开关的系统结构

    在这种结构中,利用电话交换系统中使用交叉开关(crossbar switch)的方法,如下图所示,将系统中所有的CPU与存储器结点,通过交叉开关阵列相互连接。每个交叉开关均为其中两个结点(CPU与存储器模块)之间提供一条专用连接通路,从而避免了在多个CPU之间因为要访问存储器模块所形成的对链路的争夺。而且,在任意两个结点(CPU与CPU)之间也都能找到一个交叉开关,在它们之间建立专用连接通路,方便CPU之间的通信。

    在这里插入图片描述

  4. 使用多级交换网络的系统结构

    如下图(a)是一个最简单的2×2交叉开关,它有两个输入和两个输出。送入任一输入的信息可以交换到任一输出线上。可以将这样的多级小交换开关分级链接起来,形成多级交叉开关网络,如下图(b)所示,图中的1A、2A、···、1B、···、3C等都是一个交叉开关级,在相邻级别的交叉开关之间设置固定的物理链接。处理机和存储器模块分别位于网络的两侧,每台处理机通过网络访问存储器模块,而且所有处理机的访问都是一样的,机会均等。

2.2 NUMA多处理机系统结构

  1. NUMA结构和特点

    所谓NUMA(Nonuniform-Memory-Access),即非统一内存访问(也称非一致存储访问)。在这种结构的多处理机系统中,其访问时间随存储字的位置不同而变化,系统中的公共存储期和分布在所有处理机的本地存储器共同构成了系统的全局地址空间,可被所有的处理机访问。

    在这里插入图片描述

    如上图所示,NUMA拥有多个处理机模块(也称为节点),各节点之间通过一条公用总线或互连模块进行连接和信息交互。每个节点又可以由多个处理机(CPU)组成,如四个奔腾微处理器,它们分别拥有各自独立的本地存储器、I/O槽口等,并通过一条局部总线与一个单独的主板上的共享存储器(也称群内共享存储器)链接。这样一个系统一般可以包含16到256个CPU。由此可见,因为通过互联网络会产生附加延迟,处理机访问本地存储器是最快的,但访问属于另一台处理机的远程存储器则比较慢。所有机器都有同等访问公共存储器(也称全局存储器)的权力,但是访问群内存储器的时间要比访问公共存储器短。对于机群间存储器的访问权,也可用不同的方法描述。

    NUMA结构的特点是:所有共享存储器在物理上是分布式的,在逻辑上是连续的,所有这些存储器的集合就是全局地址空间,系统中的每一个CPU都可以访问整个系统的内存,但访问时所使用的指令却不同;因此,在NUMA中,存储器一般分为三层:①本地存储器;②群内共享存储器;③全局共享存储器或其它节点存储器。显然,每一个CPU访问本地存储器的速度远远高于访问全局共享存储器或远程访问其它节点存储器(远地内存)的速度。

  2. CC-NUMA构造方法

    目前,对于构造大型的CC-NUMA多处理机系统,最常用的方法是采用基于目录的多处理机。其基本思想是:对于系统中每一个CPU所拥有的若干高速缓存单元,都以一定数量的单元为一组,构成一个高速缓存块,为每个CPU配置一张高速缓存块目录表(下简称目录表),对每一个高速缓存块的位置和状态进行记录和维护。每个CPU的每条访问存储器单元的指令都必须首先查询这张表,从中判断该存储器单元是否在目录表中,即其内容是否存在于某个高速缓存块中,并进行相应的操作。如将存储器单元内容移入高速缓存、读取高速缓存内容、变换高速缓存块节点,修改目录表等。

3.多处理机操作系统的特征与分类

3.1 多处理机操作系统的特征

  1. 并行性
  2. 分布性
  3. 机间的通信和同步性
  4. 可重构性

3.2 多处理机操作系统的功能

  1. 进程管理
  2. 存储器管理
  3. 文件管理
  4. 系统重构

3.3 多处理机操作系统的类型

  1. 主从式(master-slave)
    • 易于实现
    • 资源利用率低
    • 安全性较差
  2. 独立监督式(separate supervisor System)
    • 自主性强
    • 可靠性高
    • 实现复杂
    • 存储空间开销大
    • 处理机负载不平衡
  3. 浮动监督式(floating supervisor Control Mode)
    • 高灵活性
    • 高可靠性
    • 负载均衡
    • 实现复杂

4.进程同步

4.1 集中式与分布式同步方式

  1. 中心同步实体

    为实现进程之间的同步,系统中必须有相应的同步实体(Synchronizing Entity),如硬件锁、信号量以及进程等。如果同步实体满足下述两个条件,则称之为中心同步实体:

    (1) 具有唯一的名字,并且为彼此必须同步的所有进程所知道。

    (2) 在任何时刻,这些进程中的任何一个都可以访问该同步实体。

    在很多系统中,对中心同步实体采取容错技术,即当中心实体失效时,系统会立即选择一个新的中心同步实体投入运行。

  2. 集中式同步机构

    基于中心同步实体所构成的所有同步机构被称为集中式同步机构。相应的,其他同步机构则称为非集中同步机构。在单处理机系统中,为了同步多个进程对共享数据的访问,内核采用了一些同步机制,如硬件锁、信号量等。而对于多处理机系统而言,同样是为实现同步多个进程对共享数据的访问,则情况就变得更为复杂,不仅需要对一个处理机上的并发进程进行同步,还需对不同处理机上的进程进行同步,以保证多处理机系统能有条不紊地运行。为此,在多处理机系统中,又增加了一些如自旋锁、RCU锁、时间邮戳、事件计数以及中心进程等多种同步机制。

  3. 集中式与分布式同步算法

    在多处理机系统中,为实现进程同步,往往还需要有相应的同步算法支持同步机构,一般分为以下两种:

    (1) 集中式同步算法。集中式同步算法具有两个特征:①对于多个进程需要同时访问共享资源或进行通信时,仅由中心控制结点做出判定,选择一个进程执行;②判定所需要的全部信息都集中在中心控制结点。集中式同步算法的缺点在于:①可靠性差,由于中心控制结点的故障,会对系统造成灾难性的影响,对此,有的系统允许中心控制结点进行浮动,即当其出现故障时,系统立即选择一个新的结点作为中心控制结点;②易形成瓶颈。大量的资源共享和进程通信都是通过中心控制结点进行管理的,很容易使中心控制结点成为整个系统的瓶颈,严重影响到系统的相应速度和吞吐量。

    (2) 分布式同步算法。一个完全分布式同步算法具有以下特征:①所有结点具有相同的信息;②所有结点仅基于本地信息作出判断;③为了做出最后的判定,所有的结点担负相同的职责;④为了做出最后的判定,所有的结点要付出同样的工作量;⑤通常一个结点发生故障,不会导致整个系统的崩溃。事实上,完全分布式算法的应用很少,大多数同步算法都无法同时满足上述五点要求。

  4. 中心进程方式

    该方式是在系统中设置一个中心进程(或称为协调进程),该进程保存了所有用户的存取权限、冲突图等信息。每一个要求访问共享资源的进程,都先向中心进程发送一条请求消息,中心进程收到该请求后,便去查看冲突图,如果该请求不会引起死锁,便将该请求插入请求队列,否则退回该请求(rollback)。当轮到该请求使用共享资源时,中心进程便向请求进程发送一条回答消息,然后请求进程即可进入自己的临界区,访问共享资源。请求进程在退出临界区后,还需要向中心进程发送一条释放资源的消息,中心进程接收到该消息后,又可向下一个请求进程发送回答消息,允许它进入其临界区。在这种同步方式中,任何一个进程要进入其临界区,都需要请求、回答、释放三个消息。为了提高系统的可靠性,中心进程应可以浮动。

4.2 自旋锁(spin lock)

  1. 自旋锁的引入

    如前所述,在单CPU系统中,CPU在执行读—修改—写原语操作时,是具有原子性的,即在执行这些操作时不会被中断。保证原子性的基本方法是,在执行原语之前关中断,完成后再开中断。但是,在对称多处理机系统中,CPU在执行读—修改—写原语时,已不能再保证其操作的原子性。因为CPU所执行的读—修改—写原语操作通常都包含了若干条指令,因此需要执行多次总线操作。而在多处理机系统中,总线往往又是由多个处理机共享,它们是通过竞争来获取总线的。如果某CPU在执行原语的过程中由其它CPU争得了总线,就可能会导致该CPU与其他CPU对同一存储单元读—写操作的交叉,造成混乱。因此在多处理机系统中,还必须引入对总线实现互斥的机制。于是,自旋锁机制也就应运而生,并已大量应用于对总线资源的竞争。当然,自旋锁机制并不仅限于对总线资源的竞争。

  2. 实现对总线互斥访问的方法

    利用自旋锁实现对总线互斥访问的方法是:在总线上设置一个自旋锁,该锁最多只能被一个内核进程持有。当一个内核进程需要使用总线,对某个存储单元进行读写访问时,先请求自旋锁,以获得对总线的使用权。如果该锁被占用,那么这个进程就会一直进行“旋转”,循环测试锁的状态,直到自旋锁重新可用。如果锁未被占用,请求该锁的内核进程便能立刻得到它,并且继续执行,直到完成对指定存储单元的读写操作后,释放该锁。可见,自旋锁可以在任何时刻防止多个内核进程同时进入临界区,因此可有效地避免多处理机上并发运行的内核进程对总线资源的竞争。

  3. 自旋锁与信号量的主要差别

    自旋锁可避免调用进程阻塞。由于自旋锁使用者一般保持锁时间非常短,调用进程用“旋转”来取代进程切换。而我们知道进程切换需要花费一定开销,并且会使高速缓存失效,直接影响系统的性能,因此将自旋锁应用于对总线资源的竞争,其效率远高于信号量机制,且在多处理机环境中非常方便。

  4. 自旋锁的类型

    使用自旋锁的基本形式为:

    spin_lock(&lock);

    /*临界区代码;*/

    ……

    spin_unlock(&lock);

    常用的自旋锁有三种类型:

    • 普通自旋锁
    • 读写自旋锁
    • 大读者自旋锁

4.3 读—拷贝—修改锁

  1. 读—拷贝—修改锁(RCU)的引入

    如果写的时间非常长,严重影响到读进程的工作,我们需要改善这一情况,即使有些进程在写,读进程也可以去读,不会引起读进程的阻塞。其解决办法是改变写进程对文件(共享数据结构)进行修改(写)的方式。此即,当某个写进程要往某文件中写入数据时,它先读该文件,将文件的内容拷贝到一个副本上,以后只对副本上的内容进行修改。修改完成后,在适当时候再将修改完成后的文件全部写回去。

  2. RCU(Read-Copy-Update)锁

    RCU锁用来解决读者—写者问题。对于被RCU保护的共享文件(数据结构),无论读者和写者,都是以读的方式对其进行访问的,对于读者而言,不需要获得任何锁就可以访问它,对于写者而言,在访问它时,先制作该文件的一个副本,只对副本上的内容进行修改,然后使用一个回调(callback)机制,即向系统中一个称为垃圾收集器的机构注册一个回调函数。最后,在适当时机,由垃圾收集器调用写者注册的回调函数,把指向原来数据的指针重新指向新的被修改的数据,完成最后的数据释放或修改操作。

  3. 写回时机

    在RCU锁机构中,如何确定将修改后的内容写回的时机?显然,最好是在所有读者都已完成自己的读任务后再将修改后的文件写回。为此,每一个读者完成对共享文件的操作后,都必须向写者提供一个信号,表示它不再使用该数据结构。当所有的读者都已经发送信号时,便是所有引用该共享文件的CPU都已退出对该共享数据的操作之时,也就是写者可以将修改后的文件写回之时。对于写者而言,从对副本修改完成后,到执行真正的写修改,中间有一段延迟时间,称为写延迟期(grace period)。

  4. RCU锁的优点

    • 读者不会被阻塞。
    • 无需为共享文件(数据)设置同步机构。

4.4 二进制指数补偿算法和待锁CPU等待队列机构

  1. 二进制指数补偿算法

    多个CPU在对共享数据结构互斥访问时,如果该数据结构已被占用,就需要不断地对锁进行测试,造成总线流量的增大。二进制指数补偿算法的基本思想是:为每一个CPU对锁进行测试的TSL指令设置一个指令延迟执行时间,使该指令的下次执行是在该延迟执行时间设定的时间后进行,其延迟时间是按照一个TSL指令执行周期的二进制指数方式增加。当锁释放时,可能首先由延迟时间最小的CPU获得该锁。

  2. 待锁CPU等待队列机构

    如何及时发现锁空闲,另一种同步机构——锁等待队列机构很好地解决了这一问题。这种机构的核心思想是:为每一个CPU配置一个用于测试的私有锁变量和一个记录待锁CPU的待锁清单,存放在其私有的高速缓存中。当多个CPU需要互斥访问某个共享数据结构时,如果该数据结构已被占用,则为第一个未获得锁的CPU分配一个锁变量,并且将之附在占用该数据结构CPU的待锁清单末尾;再为第二个未获得锁的CPU也分配一个锁变量,并且将之附在待锁清单中第一个待锁CPU的后面;······;为第n个未获得锁的CPU分配一个其私有的锁变量,并且将之附在待锁清单中第n-1个CPU的后面,形成一个待锁CPU等待队列。当共享数据结构的占用者CPU退出临界区时,从其私有的高速缓存中查找待锁清单,并释放第一个CPU的私有锁变量,允许它进入临界区,第一个CPU操作完成后,也对其锁变量和第二个待锁CPU的锁变量进行释放,让第二个CPU进入其临界区,以此类推,直到第n个待锁CPU进入其临界区。

    在整个过程中,每一个待锁CPU都仅是在自己的高速缓存中,对其私有的锁变量进行不断的测试,不会对总线进行访问,减少了总线的流量。同时,一旦锁空闲,便由释放该锁的CPU通过修改其待锁清单中的下一个待锁CPU的锁变量的方法,及时通知下一个待锁CPU进入临界区,从而避免了资源空闲而造成的浪费。

4.5 定序机构

在多处理机系统和分布式系统中,有着许多的处理机或计算机系统,每个系统中都有自己的物理时钟。为了能对各系统中的所有特定事件进行排序,以保证各处理机上的进程能协调运行,在系统中应有定序机构。

  1. 时间邮戳定序机构(Timestamp Ording Mechanism)

    对时间邮戳定序机构最基本的要求是,在系统中应具有唯一的、由单一物理时钟驱动的物理时钟体系,确保个处理机时钟的严格同步。

  2. 事件计数(Event Counts)同步机构

    在这种同步机构中,使用了一个称为定序器(Sequencers)的整型量,为所有特定事件进行排序。定序器的初值为0,且为非减少的,对其仅能施加ticket(S)操作。当一个事件发生时,系统便为之分配一个称为编号(或标号)V的序号,然后使ticket自动加1,一系列的ticket操作形成了一个非负的、增加的整数序列,然后把打上标号的事件送至等待服务队列排队。与此同时,系统将所有已服务事件的标号保留,并形成一个称为事件计数E的栈。实际上,E是保存已出现的某特定类型事件编号计数的对象(Object),其初值为0,当前值是栈顶的标号。对于事件计数,有下面三种操作:

    (1) await(E, V)

    每当进程要进入临界区之前,先执行await操作,如果E<V,将执行进程插入到EQ队列,并重新调度;否则进程继续执行。await可定义如下:

    await(E, v) {
          
          
        if (E < V) {
          
          
            i=EP;
            stop();
            i->status = "block";
            i->sdata = EQ;
            insert(EQ, i);
            scheduler();
        }
        else continue;
    }
    

    (2) advance(E)

    每当进程退出临界区时,应执行advance(E)操作,使E值增1。如果EQ队列不空,则进一步检查队首进程的V值;若E=V,则唤醒该进程。advance(E)操作可描述如下:

    advance(eventcount E) {
          
          
        E = E+1;
        if (EQ<>NIL) {
          
          
            V = inspect(EQ, 1);
            if (E==V) wakeup(EQ, 1);
        }
    }
    

    一个进程执行临界区的操作序列为:

    await(E, V);
    Access the critical resources;
    advance(E);
    

    (3) read(E)

    返回E的当前值,提供给进程参考,以决定是否要转去处理其他事件。如果设计得当,允许await、read和advance这三个操作,在同一事件上并发执行,但对定序器必须互斥使用。

4.6 面包房算法

该算法的基本假定如下:

(1) 系统由N个结点组成,每个结点只有一个进程,仅负责控制一种临界资源,并处理那些同时到达的请求。

(2) 每个进程保持一个队列,用来记录本结点最近收到的消息,以及本结点自己产生的消息。

(3) 消息分为请求消息、应答消息和撤销消息三种,每个进程队列中的请求消息根据事件时序排序,队列初始为空。

(4) 进程Pi发送的请求消息形如request(Ti, i),其中Ti=Ci,是进程Pi发送此消息时对应的逻辑时钟值,i代表消息内容。

面包房算法描述如下:

(1) 当进程Pi请求资源时,它把请求消息request(Ti, i)排在自己的请求队列中,同时也把该消息发送给系统中的其他进程;

(2) 当进程Pj接收到外来消息request(Ti, i)后,发送回答消息reply(Tj, j),并把request(Ti, i)放入自己的请求队列。应当说明,若进程Pj在收到request(Ti, i)前已提出过对同一资源的访问请求,那么其时间戳应比(Ti, i)小。

(3) 若满足下述两个条件,则允许进程Pi访问该资源(即允许进入临界区):

  • Pi自身请求访问该资源的消息已处于请求队列的最前面;
  • Pi已收到从其他进程发来的回答消息,这些回答消息的时间戳均晚于(Ti, i)。

(4) 为了释放该资源,Pi从自己的队列中撤销请求消息,并发送一个打上时间戳的释放消息release给其他进程;

(5) 当进程Pj收到Pi的release消息后,它撤销自己队列中的原Pi的request(Ti, i)消息。

4.7 令牌环算法

该算法属于分布式同步算法,是将所有进程组成一个逻辑环(Logical Ring),系统中设置一个象征存取权力的令牌(Token),它是一种特定格式的报文,在进程所组成的逻辑环中,不断的循环传递,获得令牌的进程,才有权力进入临界区,访问共享资源。

5.多处理机系统的进程调度

在多处理机系统中,进程的调度与系统结构有关。例如,在同构型系统中,由于所有的处理机都是相同的,因而可将进程分配到任一处理机上运行;但对于非对称多处理机系统,则只能把进程分配到适合于它运行的处理机上去执行。

5.1 评价调度性能的若干因素

  1. 任务流时间
  2. 调度流时间
  3. 平均流
  4. 处理机利用率
  5. 加速比
  6. 吞吐率

5.2 进程分配方式

  1. 对称处理机系统中的进程分配方式

    (1) 静态分配(Static Assigenment)方式

    (2) 动态分配(Dynamic Assgenment)方式

  2. 非对称MPS中的进程分配方式

5.3 进程(线程)调度方式

  1. 自调度(Self-Scheduling)方式

    在多处理机系统中,自调度方式是最简单的一种调度方式。它是直接由单处理机环境下的调度方式演变而来的。在系统中设置有一个公共的进程或线程就绪队列,所有的处理器在空闲时,都可自己到该队列中取得一进程(或线程)来运行。在自调度方式中,可采用在单处理机环境下所用的调度算法,如先来先服务(FCFS)调度算法、最高优先权优先(FPF)调度算法和抢占式最高优先权优先调度算法等。

  2. 成组调度(Gang Scheduling)方式

    该方式将一个进程中的一组线程分配到一组处理器上去执行。在成组调度时,如何为应用程序分配处理器时间,可考虑采用以下两种方式:

    (1) 面向所有应用程序平均分配处理器时间

    (2) 面向所有线程平均分配处理机时间

  3. 专用处理机分配(Dedicated Processor Assigement)方式

    该方式是指在一个应用程序的执行期间,专门为该应用程序分配一组处理机,每一个线程一个处理机。这组处理机仅供该应用程序专用,直至该应用程序完成。这种调度方式常用于并发程度相当高的多处理机环境。

  4. 动态调度

    该调度方式允许进程在执行期间动态地改变其线程的数目。这样,操作系统和应用程序能够共同地进行调度决策。操作系统负责把处理机分配给作业,而每个作业负责将分配到的处理机再分配给自己的某一部分可运行任务。

5.3 死锁

  1. 死锁的类型

    在多处理机系统中,死锁可以分成资源死锁和通信死锁。前者是因为竞争系统中可重复使用的资源时,由于进程的推进顺序不当引起的。后者主要是在分布式系统中,由于处于不同结点中的进程,因发送和接收报文而竞争缓冲区引起的,如果出现既不能发送又不能接收的僵持状态,即发生了通信死锁。

  2. 死锁的检测和解除

    (1) 集中式检测

    (2) 分布式检测

6.网络操作系统

计算机网络是指通过数据通信系统把地理上分散的自主计算机系统连接起来,以达到数据通信和资源共享的目的的一种计算机系统。自主计算机是指具有独立处理能力的计算机。可见,计算机网络是在计算机技术和通信技术高度发展的基础上相结合的产物,是多个处理机通过通信线路互连而构成的松散耦合系统,通信系统为计算机之间的数据传送提供最重要的支持。

6.1 网络及网络体系结构

  1. 计算机网络的组成

    计算机网络从构造的物理结构而言,是通过包括星形、树形、公用总线形、环形和网状形等不同的拓扑结构,将地理上分散的计算机连接起来的网络。而从逻辑结构而言,计算机网络是由三个部分组成:

    (1) 通信子网:由分布在不同地点的、负责数据通信处理的通信控制处理机与通信线路互连构成,是计算机网络的基础部分,主要负责数据的传输及交换。

    (2) 资源子网:由负责数据处理的主计算机与终端构成,作为计算机网络中的信源和新宿,都连接在通信子网中的一个交换设备上,构成了建立在通信子网上的资源子网,负责进行数据处理。

    (3) 网络协议:为实现计算机网络中的数据交换而建立的规则、标准或约定的集合,是为了保证网络中源主机系统和目标主机系统保持高度一致的协同。

  2. 网络协议

    网络协议是一组控制数据交互过程的通信规则,规定了通信双方所交互数据(控制信息)的格式和时序。网络协议的三要素分别是:

    (1) 语义,解释控制信息每个部分的意义,规定了通信双方要发出的控制信息、执行的动作和返回的应答等;

    (2) 语法,规定通信双方彼此应该如何操作,即确定协议元素的格式,包括用户数据与控制信息的结构与格式,以及数据出现的顺序;

    (3) 时序,对事件发生顺序的详细说明,指出事件和速率匹配等。

  3. 互联网协议IP v4和IP v6

    (1) IP v4协议

    IP v4是早期在Internet上使用的网络互连协议,可利用它来实现网络互连,为此,IP v4协议应解决三个问题:①寻址,为了能在互连环境下唯一地标识网络中每一个(可寻址的)实体,应为这些实体赋予全局性标识符;②分段和重新组装,在不同的网络中,所规定的帧长度并不相同,例如在X.25网中优先选用的最大长度为128个字节,而在以太网中则为1518个字节,这样,当信息从以太网送入X.25网时,就应先进行分段,在由WAN把信息传送到目标LAN后,又应对它们进行重新组装;③源路由选择,为IP数据报的传输,选择最佳的传输路由。

    (2) IP v6协议

    IP v6协议继承了IP v4协议的一切优点,而针对其不足之处做了多方面的修改,使之能更好地满足当今Internet网络的需要。如扩大了地址空间,IP v4协议的规定地址长度为4个字节,而在IP v6协议中的地址长度已扩充到16个字节;又如增设了安全机制,在IP v6协议中引入了认证技术,以保证被确认的用户仅能去做已核准他执行的操作等。

  4. 传输层协议TCP和UDP

    (1) 传输控制协议TCP

    TCP提供了面向连接的、可靠的端-段通信机制。所谓可靠,是指即使网络层(通信子网)出现了差错,TCP协议仍能正确地控制连接的建立、数据的传输和链接的释放。此外,在进行正常的数据交换时也要有流量控制,即控制方发送数据的速度不应超过接收方接收数据的能力。

    (2) 用户数据报协议UDP

    如果所传输的数据并不那么重要,可考虑利用UDP协议来传输数据。该协议是一种无连接的、不可靠的协议。它无需在数据传送之前先建立端-端之间的链接,也就不要拆除链接。在数据传送过程中,无需对传送的数据进行差错检测。换而言之,它是以一种比较简单的方式来传送数据,因而有效地提高了传输速率。

  5. 网络体系结构

    为了简化对复杂的计算机网络的研究、设计和分析工作,一般把计算机网络功能分成若干层。层次结构就是指把一个复杂的系统设计问题分解成多个层次分明的局部问题,并规定每一层所必须完成的功能。

    计算机网络的体系结构就是这个计算机网络及其部件所应完成功能的精确定义,是针对计算机网络所执行的各种功能而设计的一种层次结构模型。同时也为不同的计算机系统之间的互连、互通和互操作提供相应的规范和标准(即协议)。网络体系结构是抽象的,而实现网络协议的技术是具体的。

    在开放系统互连参考模型OSI/RM(Open System Interconnection/Reference Model)的网络体系结构中,从最低物理层,到最高应用层供分为七层,如下图所示,各层的功能如下:

    在这里插入图片描述

    (1) 物理层(Physical Layer):是OSI的最低层,建立在通信介质的基础上,实现系统和通信介质的接口功能,为数据链路实体之间透明地传输比特流提供服务。

    (2) 数据链路层(Data Link Layer):是在相邻两系统的网络实体之间,建立、维持和释放数据链路连接,在两个相邻系统的网络实体之间实现透明的、可靠的信息传输服务。数据传输的基本单位是帧。

    (3) 网络层(Network Layer):网络层主要涉及通信子网及与主机的接口,提供建立、维持和释放网络连接的手段,以实现两个端系统中传输实体间的通信。传输的基本单位是分组(packet)。

    (4) 传输层(Transport Layer):为不同系统内的会晤实体间建立端-端(end-to-end)的透明、可靠的数据传输,执行端-端差错控制及顺序和流量控制,管理多路复用等。数据传输的基本单位是报文(message)。

    (5) 会晤层(Session Layer):为不同系统内的应用进程之间建立会晤链接。会晤层的作用是对基本的传输连接服务进行“增值”,以提供一个能满足多方面要求的会晤连接服务。

    (6) 表示层(Presentation Layer):向应用进程提供信息表示方式、对不同系统的表示方法进行转换,使在采用不同表示方式的应用实体之间能进行通信,并提供标准的应用接口和公用通信服务,如数据加密、正文压缩等。

    (7) 应用层(Application Layer):是OSI/RM中的最高层,它为应用程序访问OSI环境提供了手段,并直接为应用进程服务,其他各层也都通过应用层向应用程序提供服务。

    OSI参考模型层次划分的原则:①网络中各主机都具有相同的层次;②不同主机的同等层具有相同的功能;③同一主机内相邻层之间通过接口通信;④每层可以使用下层提供的服务,并向上层提供服务;⑤不同主机的同等层通过协议来实现同等层之间的通信。

6.2 网络操作系统及其分类

  1. 网络操作系统及其特征

    网络操作系统(Network Operating System)是在计算机网络环境下,对网络资源进行管理和控制,实现数据通信及对网络资源的共享,为用户提供与网络资源之间接口的一组软件和规程的集合。网络操作系统建立在网络中计算机各自不同的单机操作系统之上,为用户提供使用网络系统资源的桥梁。一般而言,网络操作系统具有下面5个特征。

    (1) 硬件独立性:系统可以运行于各种硬件平台之上。

    (2) 接口一致性:系统为网络中的共享资源提供一致性的接口,即对同一性质的资源采用统一的访问方式和接口。

    (3) 资源透明性:对网络中的资源统一管理,能够根据用户的要求,自动地分配和选择。

    (4) 系统可靠性:系统利用资源在地理上分散的优点,通过统一管理、分配和调度收到,确保了整个网络的安全可靠。

    (5) 执行并行性:系统不仅实现了在每个节点计算机中各道进程的并发执行,而且实现了网络中多个节点计算机上进程的并行执行。

  2. 网络操作系统的分类

    组建计算机网络的基本目的是共享资源,根据对共享资源不同的组织、控制和数据处理方式,从历史发展来看,计算机网络应用模式可分为主从模式、对等模式和基于服务器模式三类。其中的主从模式前面介绍过了,下面介绍其他两类。基于服务器模式又可分为专用文件服务器模式(也称工作站服务器模式)、客户机服务器模式和浏览器服务器模式。所以,对应地,将网络操作系统的工作模式也分为两大类共四种模式:

    (1) 对等模式(peer-to-peer model)

    (2) 工作站/服务器模式(Workstation/Server model)

    (3) 客户/服务器模式(Client/Server model)

    (4) 浏览器/服务器模式(Browser/server model)

6.3 网络操作系统的功能

  1. 数据通信

    (1) 连接的建立与拆除。

    (2) 报文的分解与组装。

    (3) 传输控制。

    (4) 流量控制。

    (5) 差错的检测与纠正。

  2. 应用互操作

    (1) 信息的互通性。

    (2) 信息的“互用性”。

  3. 网络管理

    (1) 网络管理的目标

    ①增强网络的可用性

    ②提高网络的运行质量,随时监测网络中的负荷及流量;

    ③提高网络的资源利用率,长期检测网络,对网络资源进行合理的调整;

    ④保障网络数据的安全性,采用多级安全保障机制;

    ⑤提高网络的社会和经济效益。

    (2) 网络管理的功能

    ①配置管理

    ②故障管理

    ③性能管理

    ④安全管理

    ⑤计费管理

7.分布式文件系统

7.1 分布式系统

  1. 分布式系统的特征

    分布式系统(distributed system),是基于软件实现的一种多处理机系统,是多个处理机通过通信线路互连而构成的松散耦合系统,系统的处理和控制功能分布在各个处理机上。换而言之,是利用软件系统方式构建在计算机网络之上的一种多处理机系统。

    (1) 分布性

    (2) 透明性

    (3) 统一性

    (4) 全局性

  2. 分布式系统的优点

    (1) 计算能力强

    (2) 易于实现共享

    (3) 方便通信

    (4) 可靠性高

    (5) 可扩展性好

  3. 分布式操作系统

    分布式操作系统是配置在分布式系统上的公用操作系统,以全局的方式对分布式系统中的所有资源进行统一管理,可以直接对系统中地理位置分散的各种物理和逻辑资源进行动态的分配和调度,有效地协调和控制各个任务的并行执行,协调和保持系统内的各个计算机间的信息传输及协作运行,并向用户提供一个统一的、方便的、透明的使用系统的界面和标准接口。

7.2 分布式文件系统的实现方式和基本要求

  1. DFS(分布式文件系统)的实现方式

    (1) 共享文件系统方式

    该方式也称专用服务器方式。类似于本地文件系统使用树形目录结构,管理本地计算机存储设备上的文件方式。共享文件系统方式也采用一个逻辑树的结构,对整个系统中的文件系统进行管理。系统采用客户/服务器模式,设置了若干个文件服务器,数据分别地存储在各个文件服务器上。用户可以忽略文件的实际物理位置,只需要按一定的逻辑关系,通过文件服务器上的服务进程,即可访问整个系统(或网络)的共享资源。文件服务器的分布和文件系统逻辑树的架构,对用户都是透明的,用户可以像访问本地文件一样访问分布在多个节点上的文件。

    (2) 共享磁盘方式

    该方式也称为无服务方式。在这种方式中,系统中没有专门的文件服务器,而是配置了一个共享磁盘(一般为高速磁盘),并将其与主机、客户机都连接在内部的高速网络(如光通道)上,主机和客户机都将共享磁盘作为他们的存储设备,直接以盘块方式读写磁盘上的文件,实现共享。

  2. 基本要求

    (1) 透明性

    (2) 高性能和高可靠性

    (3) 容错性

    (4) 安全性

    (5) 一致性

7.3 命名及共享语义

  1. 命名

    在DFS中,主要有三种命名方案:

    (1) 结合主机名和本地名对文件命名,保证在整个系统范围的唯一性。

    (2) 将若干台服务器中的远程目录,加载到客户机的本地目录中。

    (3) 全局统一命名。

  2. 共享语义

    对于DFS,需要保证多个客户机并发访问时的数据一致性,因此,当多个客户共享同一个文件时,必须对客户机和服务器之间的交互协议精确处理,即精确定义读和写的语义。

  3. 租赁协议

    租赁协议是一个比较具有代表性的一致性访问协议。当客户机向服务器发出一个读请求时,不仅收到所请求的数据,还会收到一个租赁凭据。该凭据附带一个有效期,保证服务器在该有效期内不会对客户机收到的数据进行更新。

7.4 远程文件访问和缓存

  1. 缓存和远程服务的比较

    (1) 使用缓存时,大量的远程访问可转化为本地的缓冲访问,因此而获得的服务速度与本地访问的一样快。

    (2) 使用缓存时,服务器的负载和网络通信量都减少了,扩充能力加强了。而在使用远程服务方法时,每次远程访问都是跨过网络处理的,明显增加了网络通信量和服务器负载,引起性能下降。

    (3) 缓存时,就网络总开销而言,与远程服务器针对个别请求一系列应答的传输开销相比,缓存采用以整个文件或文件的若干个页面这样的大批数据传输方式时,开销还是要低很多。

    (4) 缓存的主要缺点是一致性问题。在针对不经常写入的访问模式中,缓存方法是优越的;但在频繁写的情况下,用于解决一致性问题的机制反而导致在性能、网络通信量和服务器负载等方面的大量开销。

    (5) 在用缓存作为远程访问方法的系统中,仿真集中式系统的共享语义是很困难的。使用远程服务时,服务器将所有访问串行化,因此能够实现任何集中的共享语义。

    (6) 机器间的接口不同,远程服务方式仅仅是本地文件系统接口在网络上的扩展,机器间的接口就是本地客户机和文件系统之间的接口。而缓存方式中,数据是在服务器和客户机之间整体传输,机器间的接口与上级的用户接口是不同的。

  2. 缓存的粒度和位置

    (1) 缓存的粒度

    在DFS中,缓存的数据粒度(即数据单元)可以是文件的若干块,也可以是若干个文件,乃至整个文件系统。缓存的数据粒度越大,存储的数据就越多,则客户机较多的访问可通过缓存完成,一方面增加了访问速度,另一方面减少了通信的流量,降低了服务器的负载等。但是,缓存的数据越多,一次性传输的开销增大,另一方面,在写频繁的情况下,花费在保持数据一致性上的开销也增大。反之,粒度太小,降低了缓存的命中率,增加了通信开销,加大了服务器负载,降低了客户机的访问速度。

    (2) 缓存的位置

    在一个各自有主存和磁盘的客户-服务器系统中,有四个地方可以用来存储文件或存储部分文件:服务器磁盘、服务器主存、客户机磁盘或者客户机主存。

    存储所有文件最直接的位置是在服务器磁盘上,使用磁盘缓存最明显的优点就是可靠性不会因为系统的故障而丢失。

    利用主存作缓存器也有若干优点:首先,可支持无盘工作站;其次,速度快,从主存缓存中访问数据比磁盘缓存块;第三,方便构造单缓冲机制,服务器缓存器设在主存中,如果客户缓存也使用主存,就可以构造一个单缓冲机制,服务器和客户均可使用,协议简单,易实现。两种缓存地点强调的功能不一样,主存缓存器主要减少访问时间,磁盘缓存器主要提高可靠性和单个机器的自治性。

  3. 缓存的更新

    (1) 直接写,一旦数据写到缓存中,就把此数据写到服务器磁盘上,可靠性高。

    (2) 延迟写,一旦数据写到缓存中,等待一段时间再将其写到服务器磁盘上,但这样可能语义不清。

    (3) 驱逐时写,当被修改过的数据块将被从缓存中换出时,将数据块发送到服务器上。

    (4) 周期性写,周期地扫描缓存,把从上次扫描依赖已被修改过的块发送给服务器。

    (5) 关闭时写,当文件关闭时,把数据写回到服务器,与会话语义相对应。

  4. 数据一致性

    对于本地缓存的数据副本与服务器中的主副本,客户机需要进行有效性检查,判断它们是否一致后才能使用。如果不一致,则表明本地缓存的数据已经过时,那么这些数据就不能为客户机提供数据访问服务,需要进行更新。对于这样的检查,有两个基本方法:

    (1) 客户机发起:客户机与服务器联系,检查本地数据域服务器上的主副本是否一致。

    (2) 服务器发起:服务器为每个客户机记录其缓存的文件(或文件的某个部分),当服务器检测出可能不一致时,必须做出处理。

7.5 容错

  1. 无状态服务和有状态服务

    当客户机对远程文件进行访问时,有关被访问的文件、目录和客户机的信息等,在服务器端是否需要进行跟踪、检查和保存等处理,存在着两种策略:

    (1) 有状态服务(stateful file service):指一个服务器对某个客户机提供数据服务时,缓存了该客户机的有关信息。

    (2) 无状态服务(stateless file service):指当服务器对某个客户机提供数据服务时,没有缓存该客户机的有关信息。

  2. 容错性

    有关DFS的容错性环境,定义了三种文件属性:

    (1) 可恢复性,当对某个文件的操作失败,或由客户机终断此操作时,如果文件能转换到原来的一致性状态,则说明此文件是可恢复的;

    (2) 坚定性,如果当某个文件存储器奔溃或存储介质损坏时,某个文件能保证完好,则说明此文件是坚定的;

    (3) 可用性,如果无论何时一旦需要就可访问,甚至在某个机器和存储器崩溃,或者在发生通信失效的情况下,某个文件仍然可被访问,则称这种文件是可用的。

  3. 可用性与文件复制

    文件复制是保证可用性的一个冗余措施。这里的文件复制不是前面章节所讲的SFT三级容错技术中的磁盘镜像(同一台机器不同介质上的文件复制),而是在DFS系统不同节点的主机磁盘上的复制。

    通过对每个文件在多个服务器上的独立备份,增加系统的可靠性,这样当一个文件服务器出现问题时,仍允许通过其它文件服务器进行文件访问。另外,因为同一文件存在于多个文件服务器上,因此,当多个客户机并行发出文件访问请求时,还可以把这些请求进行分流,分发到这些服务器上,平衡了每个服务器的负载,避免了运行性能上的瓶颈。

猜你喜欢

转载自blog.csdn.net/m0_50833438/article/details/115247885
今日推荐