本文共 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.网络服务 面向连接和不面向连接两种服务 服务质量 面向连接的服务两种变种:消息序列和字节流 不可靠的无连接服务:数据报服务 请求应答服务8.3.3 基于文件的中间件
使一个分布式系统看起来像一个巨大的、超链接的集合 web页面、超链接、web浏览器、URL8.3.4 基于文件系统的中间件
使一个分布式系统看起来像是一个大型文件系统 1.传输模式 上传/下载模式VS远程访问模式 2.目录层次 问题:是否所有的用户都拥有该目录层次的相同视图。3.命名透明性
位置透明性:路径名没有隐含文件所在的位置的信息。 位置独立性:文件移动时文件的名称不会随之改变。 文件和目录命名的方式: 4.文件共享的语义 顺序一致性:系统强调所有的系统调用有序,而且所有的处理器都看到相同的顺序。 会话语义:在一个打开文件上所进行的修改,最初仅对进行这些操作的进程是可见的,只有在该文件关闭之后,这些修改才对其他进程可见。8.3.5 基于对象的中间件
指的是基于运行时刻的对象而不是语言级的对象 CORBA ORB、IDL、对象适配器8.3.6 基于协作的中间件
1.Linda 元组空间 四种操作:out、in、read、eval2.发布/订阅
每个进程可以是一个信息生产者、消费者或两者都是8.4 有关多处理机系统的研究
8.5 小结