多处理机调度学习卡片
🔄
多处理机 vs 单处理机调度
多处理机 vs 单处理机调度
单处理机调度
:只需关注
进程选择策略
(如先来先服务、优先级调度等)
多处理机调度
:需要额外考虑两个维度:
1. 进程选择策略
2.
CPU分配
(决定进程在哪个处理机上运行)
🎯
核心目标
核心目标
1.
负载均衡
:均衡各CPU负载(避免某些CPU过载而其他CPU闲置)
2.
处理机亲和性
:尽量让进程在同一个CPU运行,利用CPU缓存提升效率
注意:
负载均衡与亲和性可能冲突(如迁移进程均衡负载但牺牲亲和性)
👥
公共就绪队列
公共就绪队列
实现方式:
所有CPU共享同一个位于内核区的就绪队列
每个CPU空闲时运行调度程序,从公共队列选择进程运行
访问队列时需要
上锁
保证互斥
优点:
天然实现
负载均衡
缺点:
进程可能频繁切换CPU,
亲和性差
需要锁机制保证互斥访问
亲和性提升方式:
软亲和
:调度程序尽量保持进程在相同CPU运行(非强制)
硬亲和
:通过系统调用强制指定进程固定在某CPU运行
🔒
私有就绪队列
私有就绪队列
实现方式:
每个CPU维护自己的
私有就绪队列
CPU空闲时只从自身队列选择进程运行
负载均衡实现:
推迁移
:系统程序周期性检查各CPU负载,将高负载CPU的进程迁移到低负载CPU
拉迁移
:CPU自身发现负载过低时,主动从高负载CPU拉取进程
优点:
天然实现
处理机亲和性
缺点:
需要额外机制(推/拉迁移)实现负载均衡
⚖️
方案对比
方案对比
公共队列:
优点:易
负载均衡
缺点:
亲和性差
私有队列:
优点:天然
亲和性好
缺点:需要额外
负载均衡机制
记忆技巧:
软/硬亲和组合使用
推拉迁移配合实现负载均衡