{"name":"多处理机系统","id":"操作系统-多处理机系统","content":"# 多处理机与分布式系统\n\n## 一、核心问题与第一性原理\n\n所有多处理机与分布式系统的设计，都在反复回答同一组根本问题：\n\n### 1. 三大不可回避的基本矛盾\n\n| 维度   | 根本问题            | 本质冲突          |\n| ---- | --------------- | ------------- |\n| 一致性  | 多个执行单元如何看到同一个世界 | 正确性 vs 并行性    |\n| 性能   | 并行是否真的带来加速      | 计算加速 vs 协调开销  |\n| 可扩展性 | 系统规模扩大时复杂度如何增长  | 局部优化 vs 全局复杂性 |\n\n> **核心结论**：\n> 所有体系结构差异，都是在这三者之间选择不同的平衡点。\n\n---\n\n## 二、并行系统的四条设计轴（统一抽象模型）\n\n所有并行/分布式系统都可以映射到以下四个抽象维度：\n\n1. **地址空间模型**：统一地址空间 vs 分离地址空间\n2. **通信方式**：共享内存 vs 消息传递\n3. **一致性实现者**：硬件 / 操作系统 / 程序员\n4. **延迟假设**：低且稳定 vs 高且不确定\n\n这四条轴构成了理解 UMA、NUMA、多核、DSM、多计算机的统一坐标系。\n\n---\n\n## 三、多处理机：共享内存假设下的扩展\n\n### 3.1 多处理机的定义（抽象层）\n\n**多处理机系统**：\n\n* 多个 CPU\n* **共享单一地址空间**\n* 通常依赖硬件维持内存一致性\n\n> 编程模型假设：内存是“共同可见”的。\n\n---\n\n### 3.2 UMA：统一存储访问的理想模型\n\n#### 本质特征\n\n* 任意 CPU 访问任意内存，延迟相同\n* 一致性主要由硬件缓存协议保证\n\n#### 架构演进逻辑\n\n1. 总线型 UMA：\n\n   * 优点：简单、直观\n   * 本质瓶颈：**共享总线 = 全局串行点**\n\n2. 交叉开关：\n\n   * 用硬件并行换性能\n   * 代价：复杂度 O(n²)\n\n3. 多级交换网络：\n\n   * 以层次化降低硬件复杂度\n   * 代价转移为路径竞争与延迟\n\n> **本质规律**：\n> UMA 的扩展极限由“全局共享”本身决定。\n\n---\n\n### 3.3 NUMA：对物理现实的妥协\n\n#### 为什么 NUMA 必然出现？\n\n* 物理距离无法被抽象掉\n* 存储器规模增长导致访问不均匀\n\n#### NUMA 的核心思想\n\n* **逻辑上共享，物理上分布**\n* 本地访问快，远程访问慢\n\n#### 编程与系统代价\n\n* 性能不再只由算法决定\n* 数据布局成为一等公民\n\n> NUMA 是**共享内存模型的最后一次扩展**。\n\n---\n\n### 3.4 多核、众核与异构：片上并行的极端化\n\n#### 多核（CMP）\n\n* 共享内存 + 缓存一致性\n* 问题集中在：一致性流量与能耗\n\n#### 众核（如 GPU）\n\n* 核心数量极多\n* 放弃通用一致性，追求吞吐\n* 本质：**SIMD/SIMT 数据并行机器**\n\n#### 异构多核\n\n* 不同指令集 / 能力核心共存\n* 本质矛盾：\n\n  * 性能效率 vs 编程复杂性\n\n---\n\n## 四、多处理机操作系统的组织哲学\n\n### 4.1 OS 组织的根本问题\n\n> **多个 CPU 如何安全、高效地共享一个操作系统？**\n\n---\n\n### 4.2 三种典型范式\n\n#### 1. 每 CPU 一份 OS\n\n* 优点：实现简单\n* 致命问题：\n\n  * 全局状态难以一致\n  * I/O 与缓存管理冲突\n\n#### 2. 主从模型\n\n* 本质：集中化控制\n* 问题：\n\n  * 单点瓶颈\n  * 扩展性差\n\n#### 3. 对称多处理（SMP）\n\n* 现代主流方案\n* 两种实现路径：\n\n  * 大内核锁（历史方案）\n  * 细粒度锁 / 子系统并行\n\n> **SMP 的核心挑战**：\n> 操作系统本身成为并发程序。\n\n---\n\n## 五、同步：限制并发不确定性的机制\n\n### 5.1 同步的第一性原理\n\n> 同步不是为了性能，而是为了**限制状态不确定性的传播**。\n\n---\n\n### 5.2 自旋、阻塞与现实折中\n\n* 自旋：\n\n  * 假设等待时间短\n  * 浪费算力换取低延迟\n\n* 阻塞：\n\n  * 节省 CPU\n  * 付出上下文切换代价\n\n* 工程现实：\n\n  * **自旋 + 阈值 + 阻塞** 的混合策略\n\n---\n\n## 六、调度：时间维度上的资源分配\n\n### 6.1 调度的抽象目标\n\n* 公平性\n* 吞吐量\n* 局部性\n\n> 调度本质是：**在时间轴上安排并行实体的相遇与错开**。\n\n---\n\n### 6.2 多处理机调度策略\n\n* 分时：线程为基本单位\n* 亲和性：减少缓存失效\n* 空间共享：强化通信局部性\n* 群调度：保证协同线程同时运行\n\n---\n\n## 七、范式断裂：从多处理机到多计算机\n\n### 7.1 根本性变化\n\n| 维度   | 多处理机 | 多计算机  |\n| ---- | ---- | ----- |\n| 地址空间 | 共享   | 分离    |\n| 通信   | 内存读写 | 消息    |\n| 延迟   | 低且稳定 | 高且不确定 |\n| 失败   | 异常   | 常态    |\n\n> **分布式系统不是“放大的多处理机”**。\n\n---\n\n## 八、通信：显式面对分离现实\n\n### 8.1 网络接口的本质角色\n\n* 速率匹配器\n* 异步缓冲器\n* 协议卸载器\n\n---\n\n### 8.2 零拷贝与 RDMA\n\n* 减少内存复制 = 减少不必要的抽象层\n* 本质目标：\n\n  * 降低通信路径长度\n\n---\n\n## 九、通信抽象：RPC 与 DSM\n\n### 9.1 RPC\n\n* 目标：隐藏网络\n* 代价：\n\n  * 表达能力受限\n  * 性能与失败语义复杂\n\n### 9.2 DSM\n\n* 目标：保留共享内存幻觉\n* 核心问题：\n\n  * 伪共享\n  * 一致性代价\n\n> DSM 的价值在于**教学与思想实验**，而非主流工程实践。\n\n---\n\n## 十、分布式调度与负载均衡\n\n### 10.1 调度的根本问题\n\n> 工作应该在哪里运行？\n\n### 10.2 典型思想\n\n* 全局建模（图论）：最优但昂贵\n* 发送者发起：系统繁忙时开销大\n* 接受者发起：系统空闲时更友好\n\n---\n\n## 十一、总结：长期稳定的认知结论\n\n1. 并行系统的复杂性主要来自**一致性管理**\n2. 扩展性问题无法被“更聪明的硬件”彻底解决\n3. 架构演进本质是：\n\n   * 从隐式共享 → 显式通信\n   * 从硬件保证 → 软件承担\n4. 优秀系统的标志：\n\n   * 清晰暴露代价\n   * 明确失败边界\n   * 允许局部最优而非全局幻想\n\n> **最终认知**：\n> 并行与分布式系统设计，是一门关于“承认现实约束”的工程哲学。\n\n---\n\n## 关联内容\n\n- [/软件工程/架构/系统设计/分布式/分布式系统.md](/软件工程/架构/系统设计/分布式/分布式系统.md) - 详细阐述了分布式系统的架构、中间件、存储系统等内容，与多处理机系统在设计理念上有诸多相通之处\n- [/软件工程/架构/系统设计/分布式/分布式一致性系统.md](/软件工程/架构/系统设计/分布式/分布式一致性系统.md) - 深入探讨了分布式一致性系统的本质、模型和实现机制，对理解多处理机系统中的缓存一致性有重要参考价值\n- [/软件工程/架构/系统设计/分布式/分布式一致性与协调机制.md](/软件工程/架构/系统设计/分布式/分布式一致性与协调机制.md) - 详细分析了分布式系统中的协调挑战和协调机制，包括分布式锁、Session管理等内容\n- [/计算机系统/程序结构和执行/存储器层次结构.md](/计算机系统/程序结构和执行/存储器层次结构.md) - 详细介绍了缓存一致性协议（如MESI）以及存储器层次结构，这对理解多处理机系统中的缓存一致性至关重要\n- [/操作系统/死锁.md](/操作系统/死锁.md) - 涵盖了多处理机系统中的同步和锁机制与死锁预防相关内容\n- [/软件工程/架构/系统设计/缓存.md](/软件工程/架构/系统设计/缓存.md) - 讨论了缓存一致性问题，与多处理机系统中的缓存一致性有相似之处\n- [/编程语言/JAVA/JAVA并发编程/基础概念.md](/编程语言/JAVA/JAVA并发编程/基础概念.md) - 涉及缓存一致性协议和内存可见性等概念\n- [/编程语言/并发模型.md](/编程语言/并发模型.md) - 探讨了并发编程中的状态一致性问题，与多处理机系统中的同步机制相关\n","metadata":"tags: ['操作系统', '分布式系统', '数据库']","hasMoreCommit":true,"totalCommits":16,"commitList":[{"date":"2026-02-12T14:07:03+08:00","author":"MY","message":"doc: 整理标签","hash":"290b3e8ad18f48832ac282290238d020fc030a88"},{"date":"2026-01-07T11:09:45+08:00","author":"MY","message":"docs(操作系统): 重构多处理机系统文档并移除截图文件","hash":"3852e5e777dfe8479406d95a15137453344d7964"},{"date":"2024-11-14T14:48:33+08:00","author":"MY","message":"📦操作系统","hash":"ada70dc25cbecbc90a16ef8d80d8dbe99e348414"},{"date":"2023-09-13T16:31:05+08:00","author":"MY","message":"📦IO","hash":"4d55fc1e6699d75db71a6082e18f36a4a89e8767"},{"date":"2022-06-14T16:05:20+08:00","author":"cjiping","message":"📦整理 零拷贝","hash":"e17e9f8a29c5a0dc08e77530a959a27b32e45e39"},{"date":"2022-03-30T15:06:21+08:00","author":"MY","message":"📦整理 分布式系统","hash":"9e1f51e184d8307bec41c726199bea3d0b5775c6"},{"date":"2021-01-10T15:56:50+08:00","author":"MY","message":"✏更新 书内跳转测试","hash":"24d08ce36d25389e43c4beb260398969292cc9fb"},{"date":"2021-01-06T17:11:13+08:00","author":"cjiping","message":"✏更新 操作系统 多处理机系统","hash":"7558235fc05e28e9bdae833a8031496c5c370bc3"},{"date":"2021-01-05T15:10:42+08:00","author":"cjiping","message":"✏更新 操作系统 多处理机系统","hash":"4986a19c4ace4d553a2cfc0ef56ed7b0f3d70465"},{"date":"2020-12-31T14:53:08+08:00","author":"cjiping","message":"✏更新 操作系统 多处理机系统","hash":"b9190514a92981e7255d6d145d3afd86adec9827"}],"createTime":"2019-07-06T11:55:58+08:00"}