现代操作系统-多处理机系统(分布式)
多处理机系统:主要是为了提高计算能力,满足对一些工业问题的计算,比如天气预测,围绕机翼的气流建模,世界经济模拟等。主要有三种模型:
分别是
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和存储,但是耦合度更为松散,分布式系统的节点可能分布在全世界范围,而多计算机只是分布在一个房间中。而且多计算机节点运行同样的操作系统,共享一个文件系统。而分布式系统则可以运行不同的操作系统和文件系统。
分布式面对不同硬件和操作系统实现某种统一管理的途径是,在操作系统顶部添加一层软件,称为中间件,如下图所示:
从某种意义上说,中间件就像分布式系统的操作系统。