多处理机简介

每个cpu都可同样访问

通过某种高速互联网络连接在一起, 每个存储器局部对应一个cpu, 且只能被该cpu访问,这些cpu 通过互联网络发送多字消息通信 易于构建, 编程难

通过广域网连接,如Internet,

多处理机是共享存储器多处理机的简称,多个cpu共享一个公用的RAM.

多处理机硬件

所以多处理机都具有每个cpu可访问全部存储器的性质,而有些多处理机有一些特性,

UMA(Uniform Memory Access)

读出每个存储器字的速度一样快

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

bus

基于交叉开关的UMA多处理机

基于多级交换的UMA多处理机

开关

原理 此开关检查module域来决定连入哪个存储器, 即连接x还是y

例如 Omega网络 n个cpu/存储器, 有 log2n级, 每级只需n/2个开关,

比较:

网络 开关数 是否阻塞
交叉开关 n2 不阻塞
Omega网络 n/2*log2n 阻塞

NUMA(nonuniform memory access)

特性:

基于文件的多处理机 基本思想: 维护一个数据库来记录告诉缓存行的位置及其状态. 当一个高速缓存行被引用时,就查询数据库找出高速缓存行的位置以及它的dirty记录,(是否被修改过),

多核芯片

每个核就是一个完整的 CPU , 可以共享内存, 但是 cache 不一定共享. 时常被成为 片级多处理机(Chip-level MultiProcessors, CMP).

与基于总线的多处理机和使用交换网络的多处理机的差别不大:

片上系统 (system on a chip) 芯片包含多个核,但是同时还包含若干个专业核, 比如视频与音频解码器, 加密芯片,网络接口等

多处理机操作系统类型

每个 CPU 都有自己的操作系统

优点: 共享操作系统代码

注意

主从多处理机

主从多处理机

问题 如果有很多 CPU , 主 CPU 会成为瓶颈, 速度慢

对称多处理机(Symmetric MultiProcessor, SMP)

消除了主从处理机的不对称性, 在存储器中有操作系统的一个副本, 但任何 CPU 都可以运行它.

这个模型动态平衡进程和存储器, 因为它只有一套操作系统数据表. 它存在的问题: 当两个或多个 CPU 同时运行操作系统代码时, 如请求同一个空闲存储器页面,这时应该使用互斥信号量(锁),使整个系统成为一大临界区. 这样在任一时刻只有一个 CPU 可运行操作系统

多处理机调度

调度对象: 单进程还是多进程, 线程是内核进程还是用户线程.

分时

单一数据结构调度

先讨论调度独立线程的情况, 如果有 CPU 空闲则选择优先级队列中的最优先线程到此 CPU

缺点:

亲和调度: 基本思想, 尽量使一个线程在它前一次运行过的 CPU 上运行,

空间共享

当线程之间以某种方式彼此相关时, 可以使用此方法. 假设一组相关的线程是一次性创建的, 创建时, 检查是否有足够的空闲 CPU, 有 则 各自获得专用的 CPU, 否则等待,

优点: 消除了多道程序设计, 从而消除上下文切换开销 缺点: 当CPU被阻塞或根本无事可做时时间被浪费了

群调度( Gang Scheduling)

基本思想

让一个进程的所有线程一起运行, 这样互相通信更方便,在一个时间片内可以发送和接收大量的消息.

调度方法

示例

参考资料

  1. 现代操作系统
  2. [Multi-Processor Systems UCLA](https://lasr.cs.ucla.edu/classes/111_fall16/readings/multiprocessor.html)