博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
现代操作系统读书笔记--第8章 多处理系统
阅读量:3735 次
发布时间:2019-05-22

本文共 3400 字,大约阅读时间需要 11 分钟。

获得高速度的方法:1.使时钟走得更快(散热问题) 2.大规模使用并行计算机

电子部件之间的通信归根到底是在它们之间传送信息
三种模型
这里写图片描述

8.1 多处理机

两个或更多的CPU全部共享访问一个公用的RAM,运行在任何一个CPU上的程序都看到一个普通的虚拟地址空间。
通信基础:一个CPU向存储器写入数据而另一个读取这些数据
8.1.1 多处理机硬件
UMA每个处理机读出每个存储字的速度是一样的, NUMA不一样
1.基于总线的UMA多处理机体系结构
这里写图片描述
高速缓存一致性协议
2. 使用交叉开关的UMA多处理机(非阻塞)
这里写图片描述
3.使用多级交换网络的UMA多处理机(阻塞)
这里写图片描述
多级交换网络:omega网络
有几个比特位就有几级开关
这里写图片描述
4. NUMA多处理机
访问本地存储器模块快于访问远程存储器模块。
主要特性:
这里写图片描述
NC-NUMA(无高速缓存的)、CC-NUMA(有高速缓存的)
基于目录的多处理机(CC-NUMA)
这里写图片描述
5.多核芯片
摩尔定律
CPU可能不共享高速缓存但是都共享内存。
窥探:保持高速缓存一致
多核芯片时常被称为片级多处理机(CMP)与总线多处理机的区别:(1)CMP使用共享高速缓存 (2) 容错
片上系统:除了多个主CPU,还有若干个专用核。
6.众核芯片
CPU数目更多的
保持缓存一致性的问题:一致性堡垒
适用于众核编程的模型:消息传递和分布式内存。
图形处理单元(GPU)最常见的众核:擅长大量并行小规模计算,而不擅长串行任务,很难对其进行编程。
7.异构多核
在一块芯片上封装了不同类型的处理器
8.在多核上编程
当前的编程语言不适合高度并行的程序,大规模服务器集群下,需要大量处理器核的任务的。

8.1.2 多处理机操作系统类型

静态地把存储器划分成和CPU一样多地各个部分,共享操作系统代码
这里写图片描述
有四个潜在的问题
所以该模型很少使用
2.主从多处理机
操作系统的一个副本在CPU1上,其他从属CPU运行用户进程
这里写图片描述
问题:主CPU容易过载
3.对称多处理机
SMP:在存储器中有操作系统的一个副本,任何CPU都可以运行它。
这里写图片描述
问题:多个CPU同时运行操作系统 大内核锁:任一时刻只有一个CPU可运行操作系统。
操作系统容易过载 把操作系统分割成互不影响的临界区。

8.1.3 多处理机同步

任何实用的互斥信号量协议的核心都是一条特殊指令,如TSL,该指令允许检测一个存储字并以一种不可见的操作设置
这里写图片描述
TSL必须首先锁住总线,防止其他CPU访问它,然后进行存储器的读写访问,再解锁总线
TSL使用了自旋锁,高速缓存也不能很好地消除总线竞争问题。
减少总线流量方法:消除在请求一侧的所有由TSL引起的写操作、以太网二进制回退算法、让每个打算获得互斥信号量的CPU都拥有各自用于测试的私有锁变量
这里写图片描述
自旋和切换
自旋:CPU保持等待直到能够访问就绪链表
切换:CPU切换至另一线程而不是等待
使用哪种视情况而定。

8.1.4 多处理机调度

对于调度,线程是内核线程还是用户线程至关重要,若线程对内核不可见,用户线程的调度还是基于进程,而内核线程是基于线程的。
其他问题:接下来运行的线程是哪一个、线程的相关性(独立的和分组的)
1.分时
处理独立线程的算法:为就绪线程维护一个系统级的数据结构,对应不同优先级的链表集合。
这里写图片描述
智能调度、亲和调度、两级调度算法

2.空间共享

在多个CPU上同时调度多个线程称为空间共享
在任意时刻,全部CPU被静态地划分成若干个分区,每个分区都运行一个进程中地线程。
这里写图片描述
3.群调度
既可以调度时间又可以调度空间地算法
协同调度
这里写图片描述

8.2 多计算机

耦合计算机,不共享存储器,每台计算机有自己地存储器。
获得高性能的秘密是巧妙地设计互连网络以及接口卡。
这里写图片描述
8.2.1 多计算机硬件
1.互连技术
直径:任意两个节点之间的最长路路径
超立方体直径较小但是牺牲了扇出数量和大量连接数量
两种交换机制:(1) 存储转发包交换
这里写图片描述
(2)电路交换
2.网络接口
这里写图片描述
网络处理器

8.2.2 低层通信软件

1. 节点至网络接口通信
使用板上的DMA芯片直接将它们从RAM复制到板上,采用一类将页面钉住和释放的系统调用。

2.远程直接内存访问

降低延迟,一些网络接口支持远程直接内存访问技术(RMDA)

8.2.3 用户层通信软件

CPU实现通信的两种:消息传送暴露给用户进程和对用户隐藏
1.发送和接受
send和receive函数
2.阻塞调用和非阻塞调用
这里写图片描述
非同步的缺点:直到信息被送出发送者才能修改信息缓冲区,进程在传输过程中重写信息后果很可怕
解决方案:(1) 让内核复制这个信息到内部的内核缓冲区,然后让进程继续 (2)让消息发送之后中断发送者,告知缓冲区又可以使用了 (3)让缓冲区

发送端的选择:

(1)阻塞发送
(2)带有复制操作的非阻塞发送
(3)带有中断操作的非阻塞发送
(4)写时复制

弹出式线程、主动消息

8.2.4 远程过程调用

消息传递模型的缺陷:构造所有通信的范式都是输入输出
远程过程调用(RPC):允许程序调用位于其他CPU中的过程,发出调用的过程为客户机,被调用的过程为服务器。
客户端存根、服务器端存根
这里写图片描述
实现相关的问题
1.指针参数问题
2.矢量对存根不可见
3.参数类型不是总能够推导出来
4.全局矢量

8.2.5 分布式共享存储器

这里写图片描述
DSM
这里写图片描述
1.复制
(1)复制只读页面
(2)不仅复制只读页面,而且复制所有的页面
2.伪共享
DSM页面较大
优点:减少了传输次数
缺点:阻塞其他进程、伪共享
这里写图片描述
3. 实现顺序一致性
可写页面的复制是关键

8.2.6 多计算机调度

多处理机所有进程在同一个存储器中,多计算机每个节点有其自己的存储器和进程集合
多处理机调度与多计算机的算法有所不同

8.2.7 负载平衡

处理器分配算法:怎样以最有效的方式把进程分配到各个节点。

1.图论确定算法

以最小的网络流量完成分配工作
在特定的限制条件下,寻找一个将图分割为k个互不相连的子图的方法,寻找紧耦合的蔟,并且与其他的蔟有较少的交互
这里写图片描述
2.发送者发起的分布式启发算法
负载较重的节点试图甩掉超额的工作
这里写图片描述

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

只要一个进程结束,系统就检查是否有足够的工作可做。

或者两种算法结合起来。

8.3 分布式系统

每个节点都有自己的私有存储器,整个系统中都有自己的私有存储器。
对比
这里写图片描述
中间件:面对不同硬件和操作系统实现统一性。
这里写图片描述

8.3.1 网络硬件

网络类型:LAN(局域网)、WAN(广域网)
1.以太网
最早使用插入式分接头,许多计算机连接到同一根电缆上。冲突问题用二进制指数回退算法解决
利用桥连解决最大电缆
用交换机避免碰撞问题
这里写图片描述

2.因特网

Internet包括了两类主机:主机和路由器
这里写图片描述

8.3.2 网络服务和协议

1.网络服务
面向连接和不面向连接两种服务
服务质量
面向连接的服务两种变种:消息序列和字节流
不可靠的无连接服务:数据报服务
请求应答服务
这里写图片描述

  1. 网络协议
    用于特定计算机通信的规则集合称为协议
    协议栈
    分布式系统关键协议:TCP、IP
    利用DNS代替复杂的IP地址
    这里写图片描述

8.3.3 基于文件的中间件

使一个分布式系统看起来像一个巨大的、超链接的集合
web页面、超链接、web浏览器、URL
这里写图片描述

8.3.4 基于文件系统的中间件

使一个分布式系统看起来像是一个大型文件系统
1.传输模式
上传/下载模式VS远程访问模式
这里写图片描述
2.目录层次
问题:是否所有的用户都拥有该目录层次的相同视图。
这里写图片描述

3.命名透明性

位置透明性:路径名没有隐含文件所在的位置的信息。
位置独立性:文件移动时文件的名称不会随之改变。
文件和目录命名的方式:
这里写图片描述
4.文件共享的语义
顺序一致性:系统强调所有的系统调用有序,而且所有的处理器都看到相同的顺序。
这里写图片描述
会话语义:在一个打开文件上所进行的修改,最初仅对进行这些操作的进程是可见的,只有在该文件关闭之后,这些修改才对其他进程可见。

8.3.5 基于对象的中间件

指的是基于运行时刻的对象而不是语言级的对象
CORBA
ORB、IDL、对象适配器
这里写图片描述

8.3.6 基于协作的中间件

1.Linda
元组空间
四种操作:out、in、read、eval

2.发布/订阅

每个进程可以是一个信息生产者、消费者或两者都是
这里写图片描述

8.4 有关多处理机系统的研究

8.5 小结

你可能感兴趣的文章
C# 使用 WebBrowser 实现 HTML 转图片功能
查看>>
【asp.net core 系列】14 .net core 中的IOC
查看>>
.NET进行客户端Web开发又一利器 - Ant Design Blazor
查看>>
基于 abp vNext 和 .NET Core 开发博客项目 - 终结篇之发布项目
查看>>
【C#学习之旅】一、数据类型
查看>>
基于 abp vNext 和 .NET Core 开发博客项目 - 再说Swagger,分组、描述、小绿锁
查看>>
【C#】CsvHelper 使用手册
查看>>
Dotnet core使用JWT认证授权最佳实践(一)
查看>>
WPF 圆型布局(测量过程)
查看>>
[Asp.Net Core] Blazor Server Side 项目实践 - 切换页面时保留状态
查看>>
DLL/OCX文件的注册与数据执行保护DEP
查看>>
你真正了解public、internal、protected、private吗?不妨幽默一些
查看>>
记一次Task抛异常,调用线程处理而引发的一些随想
查看>>
五、C#入门—流程控制
查看>>
C# WebClient调用WebService
查看>>
《[深入浅出 C#] (第3版)》 - 学习笔记
查看>>
为 .net 生态贡献力量——制作并上传 nuget 包(内有独家彩蛋)
查看>>
“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”的解决方案
查看>>
给微软的日志框架写一个基于委托的日志提供者
查看>>
Redis集群搭建~Redis-x64-3.2.100版本
查看>>