操作系统复习(十九)——多处理机操作系统

多处理机系统的基本概念

引入多处理及系统的原因:

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

多处理机系统的结构

UMA统一内存访问的多处理及系统结构(此结构系统下,各处理单元在功能和结构上是相同的,在处理上没有主从之分,每个处理器可以访问不同模块中的存储器单元,并且对每个存储器单元的读写速度相同):

  • 基于单总线的SMP结构
  • 使用多层总线的SMP结构
  • 使用单级交差开关的系统结构
  • 使用多级交换网络的系统结构

NUMA非统一内存访问的多处理机及系统结构(此结构系统下,其访问时间随存储字的位置不同而变化,系统中的公共存储器和分布在所有处理机的本地存储器共同构成了系统的全局地址空间)。

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

多处理机操作系统的特性:并行性,分布性,机间的通信和同步性以及可重构性。

多处理机操作系统的功能

  • 进程管理:进程同步、进程通信与进程调度。
  • 存储器管理:地址变换机构,访问冲突仲裁机构与数据一致性机制。
  • 文件管理:有三种方式,集中式、分布式、分散式。
  • 系统重构。

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

  1. 主从式:易于实现,但资源利用率低,安全性较差。
  2. 独立监督式:自主性强,可靠性强,但实现复杂。
  3. 浮动监督式:高灵活性、高可靠性、负载均衡,但实现复杂。

进程同步

**1.自旋锁:**自旋锁应该是Linux内核中使用最多的锁,其它锁很多都依赖自旋锁实现。一个自旋锁是一个互斥设备,只能有2个值:“上锁"和"解锁”。它常常实现为一个整数值中的一个单个位,想获取一个特殊锁的代码测试相关的位,如果锁是可用的,这个"上锁"位被置位并且代码继续进入临界区;相反,如果这个锁已经被别人获得,代码进入一个紧凑的循环中反复检查这个锁,直到它变为可用。这个循环就是自旋锁的"自旋"部分。选择自旋锁,自旋等待的代价应该要尽可能的小于线程调度的代价。即,使用自旋锁的一个重要规则是自旋锁必须一直是尽可能短时间的持有。
自旋锁存在的问题: 如果某个线程持有锁的时间过长,就会导致其它等待获取锁的线程进入循环等待,消耗CPU。使用不当会造成CPU使用率极高。
自旋锁类型:普通自旋锁,读写自旋锁与大读者自旋锁。
自旋锁的优点

  • 自旋锁不会使线程状态发生切换,一直处于用户态,即线程一直都是active的;不会使线程进入阻塞状态,减少了不必要的上下文切换,执行速度快。
  • 非自旋锁在获取不到锁的时候会进入阻塞状态,从而进入内核态,当获取到锁的时候需要从内核态恢复,需要线程上下文切换。 (线程被阻塞后便进入内核(Linux)调度状态,这个会导致系统在用户态与内核态之间来回切换,严重影响锁的性能)

自旋锁与信号量的主要差别在于:自旋锁可避免调用进程阻塞。自旋锁所保护的临界区一般都比较小。即如果对于被保护的共享资源仅在进程的上下文访问,或共有设备,或调用进程所保护的临界区较大时,应使用信号量进行保护。如果对于被保护的共享资源需要中断上下文访问,或调用进程所保护的临界区非常小,即对共享资源的访问时间非常短的情况下,应使用自旋锁进行保护。

2.读-拷贝-修改锁和二进制指数补偿算法
**读-拷贝-修改锁(RCU锁)**实际上是对读写锁的一种改进,同样是对读者线程和写者线程进行区别对待,只不过对待的方式是不同的。读写锁中只允许多个读者同时访问被保护的数据,但是在RCU中允许多个读者和多个写者同时访问被保护的资源。写者的同步开销则取决于使用的写者间同步机制,RCU并不对此进行支持。
RCU中,读者不需要使用锁,要访问资源尽管访问就好了。 RCU中,写者的同步开销比较大,要等到所有的读者都访问完成了才能够对被保护的资源进行更新。 写者修改数据前首先拷贝一个被修改元素的副本,然后在副本上进行修改,修改完毕后它向垃圾回收器注册一个回调函数以便在适当的时机执行真正的修改操作。
RCU锁的优点:读者不会被阻塞;无需为共享文件(数据)设置同步机构。

3.二进制指数补偿算法和待锁CPU等待队列机构
二进制指数补偿算法:为每一个CPU对锁进行测试的TSL指令设置一个指令延迟执行时间,使该指令的下次执行是在该延迟执行时间设定的时间之后执行,其延迟时间是按照一个TSL指令执行周期的二进制指数方式增加。
优点:可以明显降低总线上的数据流量。(一方面,可以将短时间内各CPU对锁的需求,在时间上进行不同程度的延迟,增加测试的成功率,减少各CPU对所得测试次数;另一方面,锁不空闲时,也很大程度减少了个CPU的测试指令的延迟测试的频率。)
缺点:锁被释放是,可能由于个CPU的测试指令的延迟时间未到,没有一个CPU会及时地对锁进行测试,即不能及时的发现锁的空闲,造成浪费。

待锁CPU等待队列机构:为每一个CPU配置一个用于测试的私有锁变量和一个记录待锁CPU的待锁清单,存放在其私有的高速缓存中。当多个CPU需要互斥访问某个共享数据结构式,如果该结构已被占用,则为第一个为获得锁的CPU分配一个锁变量,并且将之附在占用该共享数据的CPU的待锁清单末尾;为后续未获得锁的CPU执行同样的操作。

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

分布式文件系统

1. 分布式系统的特征
  分布式系统(distributed system),是基于软件实现的一种多处理机系统,是多个处理机通过通信线路互连而构成的松散耦合系统,系统的处理和控制功能分布在各个处理机上。换言之,是利用软件系统方式构建在计算机网络之上的一种多处理机系统。
  与多处理机系统(包括多处理机和多计算机等)相比,分布式系统的不同在于:① 分布式系统中的每个节点都是一台独立的计算机,并配置有完整的外部设备;② 分布式系统中节点的耦合程度更为分散,地理分布区域更加广阔;③ 分布式系统中的每个节点可以运行不同的操作系统,每个节点拥有自己的文件系统,除了本节点的管理外,还有其它多个机构对其实施管理。
  分布式系统应具有以下几个主要特征:(1) 分布性。(2) 透明性。(3) 同一性。(4) 全局性。
  
  分布式系统与集中式系统相比具有以下一些优点:
  (1) 计算能力强。
  (2) 易于实现共享。
  (3) 方便通信。
  (4) 可靠性高。
  (5) 可扩充性好。
  
  分布式操作系统是配置在分布式系统上的公用操作系统,以全局的方式对分布式系统中的所有资源进行统一管理,可以直接对系统中地理位置分散的各种物理和逻辑资源进行动态的分配和调度,有效地协调和控制各个任务的并行执行,协调和保持系统内的各个计算机间的信息传输及协作运行,并向用户提供一个统一的、方便的、透明的使用系统的界面和标准接口。一个典型的例子是万维网(World Wide Web),在万维网中,所有的操作只通过一种界面——Web页面。
  分布式操作系统除了涵盖单机操作系统的主要功能外,还应该包括:
  (1) 通信管理功能。
  (2) 资源管理功能。
  (3) 进程管理功能。

2.分布式文件系统的实现方式和基本要求
DFS的实现方式一般分为以下两类:
  1) 共享文件系统方式(shared file system approach)
  该方式也称专用服务器方式。类似于本地文件系统使用树形目录结构,管理本地计算机存储设备上的文件方式。共享文件系统方式也采用一个逻辑树的结构,对整个系统中的文件系统进行管理。
  2) 共享磁盘方式(shared disk approach)
  该方式也称为无服务器方式。在这种方式中,系统中没有专门的文件服务器,而是配置了一个共享磁盘(一般为高速磁盘,如IBM SSA),并将其与主机、客户机都连接在内部的高速网络(如光通道)上,主机和客户机都将共享磁盘作为它们的存储设备,直接以盘块方式读写磁盘上的文件,实现共享。

相对于LFS,DFS除了大容量的要求外,还有很多基本要求:
  (1) 透明性。
  (2) 高性能和高可靠性。
  (3) 容错性。
  (4) 安全性。
  (5) 一致性。

3.命名及共享语义
  1. 命名
  如前面章节所述,对于OS管理的存储资源,文件系统通过抽象,屏蔽了对物理设备的操作以及资源管理的细节,并向用户提供统一的、对象化的访问接口。

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

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

4.远程文件访问和缓存
  1. 缓存和远程服务的比较
  (1) 使用缓存时,大量的远程访问可转为对本地的缓存访问,因此而获得的服务速度与本地访问的一样快。
  (2) 使用缓存时,服务器的负载和网络通信量都减少了,扩充能力加强了。而在使用远程服务方法时,每次远程访问都是跨过网络处理的,明显增加了网络通信量和服务器负载,引起性能下降。
  (3) 缓存时,就网络总开销而言,与远程服务针对个别请求一系列应答的传输开销相比,缓存采用以整个文件或文件的若干个页面这样的大批数据传输方式时,开销还是要低很多。
  (4) 缓存的主要缺点是一致性问题。在针对不经常写入的访问模式中,缓存方法是优越的;但在频繁写的情况下,用于解决一致性问题的机制反而导致在性能、网络通信量和服务器负载等方面的大量开销。
  (5) 在用缓存作为远程访问方法的系统中,仿真集中式系统的共享语义是很困难的。使用远程服务时,服务器将所有访问串行化,因此能够实现任何集中的共享语义。
  (6) 机器间的接口不同,远程服务方式仅仅是本地文件系统接口在网络上的扩展,机器间的接口就是本地客户机和文件系统之间的接口。而缓存方式中,数据是在服务器和客户机之间整体传输,机器间的接口与上级的用户接口是不同的。
  2. 缓存的粒度和位置
  1) 缓存的粒度
  在DFS中,缓存的数据粒度(即数据单元)可以是文件的若干块,也可以是若干个文件,乃至整个文件系统。
  2) 缓存的位置
  在一个各自有主存和磁盘的客户-服务器系统中,有四个地方可以用来存储文件或存储部分文件:服务器磁盘、服务器主存、客户机磁盘或者客户机主存。
  存储所有文件最直接的位置是在服务器磁盘上,使用磁盘缓存最明显的优点就是可靠性不会因为系统的故障而丢失。
  3. 缓存的更新
  对于缓存中更新的数据块,选择什么时间和方式将其写回服务器,对系统的性能和可靠性具有关键性的影响。
  4. 数据一致性
  对于本地缓存的数据副本与服务器中的主副本,客户机需要进行有效性检查,判断它们是否一致后才能使用。如果不一致,则表明本地缓存的数据已经过时,那么这些数据就不能为客户机提供数据访问服务,需要进行更新。

5.容错

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

2. 容错性
  有关DFS的容错性环境,定义了三种文件属性:
  (1) 可恢复性
  (2) 坚定性
  (3) 可用性

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

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值