多处理机调度学习卡片

🔄

多处理机 vs 单处理机调度

多处理机 vs 单处理机调度

  • 单处理机调度:只需关注进程选择策略(如先来先服务、优先级调度等)
  • 多处理机调度:需要额外考虑两个维度:
    • 1. 进程选择策略
    • 2. CPU分配(决定进程在哪个处理机上运行)
🎯

核心目标

核心目标

  • 1. 负载均衡:均衡各CPU负载(避免某些CPU过载而其他CPU闲置)
  • 2. 处理机亲和性:尽量让进程在同一个CPU运行,利用CPU缓存提升效率

注意:负载均衡与亲和性可能冲突(如迁移进程均衡负载但牺牲亲和性)

👥

公共就绪队列

公共就绪队列

  • 实现方式:
    • 所有CPU共享同一个位于内核区的就绪队列
    • 每个CPU空闲时运行调度程序,从公共队列选择进程运行
    • 访问队列时需要上锁保证互斥
  • 优点:天然实现负载均衡
  • 缺点:
    • 进程可能频繁切换CPU,亲和性差
    • 需要锁机制保证互斥访问
  • 亲和性提升方式:
    • 软亲和:调度程序尽量保持进程在相同CPU运行(非强制)
    • 硬亲和:通过系统调用强制指定进程固定在某CPU运行
🔒

私有就绪队列

私有就绪队列

  • 实现方式:
    • 每个CPU维护自己的私有就绪队列
    • CPU空闲时只从自身队列选择进程运行
  • 负载均衡实现:
    • 推迁移:系统程序周期性检查各CPU负载,将高负载CPU的进程迁移到低负载CPU
    • 拉迁移:CPU自身发现负载过低时,主动从高负载CPU拉取进程
  • 优点:天然实现处理机亲和性
  • 缺点:需要额外机制(推/拉迁移)实现负载均衡
⚖️

方案对比

方案对比

  • 公共队列:
    • 优点:易负载均衡
    • 缺点:亲和性差
  • 私有队列:
    • 优点:天然亲和性好
    • 缺点:需要额外负载均衡机制

记忆技巧:

  • 软/硬亲和组合使用
  • 推拉迁移配合实现负载均衡