我是靠谱客的博主 大方台灯,最近开发中收集的这篇文章主要介绍现代操作系统读书笔记--第8章 多处理系统,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

获得高速度的方法: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 小结

最后

以上就是大方台灯为你收集整理的现代操作系统读书笔记--第8章 多处理系统的全部内容,希望文章能够帮你解决现代操作系统读书笔记--第8章 多处理系统所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部