现代操作系统-多处理机系统(分布式)

多处理机系统:主要是为了提高计算能力,满足对一些工业问题的计算,比如天气预测,围绕机翼的气流建模,世界经济模拟等。主要有三种模型:

分别是

1.共享存储器多处理机

2.消息传递多计算机

3.广域分布式系统

现代操作系统-多处理机系统(分布式)

对于第一种,所有cpu通过一个共享存储器通信。

第二种是许多cpu-存储器通过某种高速互联网网络连接在一起,每个存储器局部对应一个CPU,且只能被该CPU访问。这些CPU通过互联网发送消息通信。这种模型更容易构建,但是编程比较困难。

第三种所有计算机系统通过一个广域网连接起来,构造一个分布式系统。


下表是三种多处理机系统的比较

项目 多处理机 多计算机 分布式系统
节点配置 CPU CPU, RAM, 网络接口 完整的计算机
节点外设 全部共享 共享exc 每个节点全套外设
位置 同一机箱 同一房间 全球
节点间通信 共享RAM 专用互联 传统网络
操作系统 一个,共享 多个,相同的 可能都不同
文件系统 一个,相同     一个,相同 每个节点都有
管理 一个机构 一个机构 多个机构

接下来详细描述这三种模型。



一.多处理机

1.1 多处理机硬件

有些多处理机的每个存储器的速度是一样快的,这些机器称为UMA(统一存储器访问),相反,NUMA(非一致存储器访问)多处理机就没有这种特性。

a.基于总线的UMA多处理机体系结构

b.使用交叉开关的UMA多处理机

c.使用多级交换网络的UMA多处理机

d.NUMA处理机

e.多核芯片:将多个cpu放在同一芯片上(同一小硅片)。


二.多计算机

多处理机的缺点,构造困难,造价高昂。而多计算机容易构造,因为核心部件就是一台配有高性能网络接口卡的pc,用来连接多个计算机。

多计算机调度

每个节点都有自己的存储器和进程,因此可以应用任何本地调度算法。

负载平衡

一旦一个进程被指定给了某个计算节点,就不再有什么可控制的,因此哪个进程被指定给哪个节点的决策是很重要的。这与多处理机系统相反,在多处理机系统中所有进程都在同一个存储器上,可以随意调度到任何CPU上运行,因此值得考察怎样以有效的方式把进程分配到各个节点上。这种算法就是负载均衡

1.图论确定算法

进程对于CPU和存储器的需求是已知的,然后以最小的网络流量完成进程的分配工作。

2.发送者发起的分布式启发算法

当进程创建时,就运行在创建它的节点上,除非节点过载,然后会随机选择另一个节点并询问其负载情况,若该节点负载较低,则将新的进程送到该节点上。若负载较高,则寻找新的节点,若到最后所有节点负载都很大,则继续运行在本节点上。

3.接受者发起的分布式启发算法

只要有一个进程结束,系统检查是否有足够的工作可做,若没有,则随机选择某台机器并要求它提供工作。

算法的优点在于:在关键时刻,不会对系统增加额外的负担。上一个算法会在机器负载很大时,做了大量的探查工作,增加负载,而接受者发起算法,则不会这样,只会在工作少也就是负载小时,进行探查。



分布式系统

与多计算机相比,也是具有独立的CPU和存储,但是耦合度更为松散,分布式系统的节点可能分布在全世界范围,而多计算机只是分布在一个房间中。而且多计算机节点运行同样的操作系统,共享一个文件系统。而分布式系统则可以运行不同的操作系统和文件系统。

分布式面对不同硬件和操作系统实现某种统一管理的途径是,在操作系统顶部添加一层软件,称为中间件,如下图所示:

现代操作系统-多处理机系统(分布式)


从某种意义上说,中间件就像分布式系统的操作系统。