进程调度

学习

   阅读量:  
  • method

    • 周转时间(turnaround time):T 周转时间 = T 完成时间 −T 到达时间
    • 响应时间(response time):T 响应时间 = T 首次运行 −T 到达时间
  • FIFO(FCFS)

  • SJF(shortesrt job first)

    • 需要知道运行时间
    • non-preemptive
  • STCF(PSJF)

    • 需要知道运行时间
    • preemptive
  • RR

    • 公平调度
  • LOTTERY

    • 比例份额(patitional-share)/公平份额(fair-share)
    • 随机选择速度快,方便实现
    • 彩票的分配?
    • ticket currency
    • ticket transfer
    • ticket inflation
  • stride schedule

    • 根据彩票设置步长
    • 执行拥有最小行程的进程,保障进程进度基本相同
    • 需要维护全局状态来设置新进程的步长
  • O(1)

  • BFS

MLFQ(Multi-level Feedback Queue)

  • 规则 1:如果 A 的优先级 > B 的优先级,运行 A(不运行 B)。
  • 规则 2:如果 A 的优先级 = B 的优先级,轮转运行 A 和 B。
  • 规则 3:工作进入系统时,放在最高优先级(最上层队列)。
  • 规则 4:一旦工作用完了其在某一层中的时间配额(无论中间主动放弃了多少次CPU,进入堵塞),就降低其优先级(移入低一级队列)
    • 保证交互密集型任务高优先级
    • 避免愚弄调度进程
  • 规则 5:经过一段时间 S,就将系统中所有工作重新加入最高优先级队列。
    • 防止starvation

multiprocessor schedule

  • 缓存一致性(cache coherence)问题

    • 总线窥探(bus snooping)
  • 缓存亲和度(cache affinity)

    • 进程保持在同一个 CPU 上
  • 单队列多处理器调度(Single Queue Multiprocessor Scheduling,SQMS)

    • 缺乏可扩展性(scalability)。为了保证在多CPU 上正常运行,需要加锁(locking)
    • 缺少缓存亲和度(cache affinity)

image-20221024202521679

  • 多队列多处理器调度(Multi-Queue Multiprocessor Scheduling,MQMS)
    • 使用迁移(migration)来确保公平性

image-20221024202534013

CFS

img

  • MQMS
  • 时间复杂度O(1),空间复杂度较高
  • 随着任务的执行,它的运行时间增加,因此vruntime也会变大,它会在红黑树中向右移动
  • 计算密集型作业将运行很长时间,因此它将移到最右侧
  • I/O密集型作业会运行很短的时间,因此它只会稍微向右移动
  • 对于更重要的任务,也就是nice值较小的(一般是小于0),他们的移动速度相对慢很多。(相对于nice = 0的任务,nice每小一级,CPU usage就会多10%,“10% effect”)虚拟时钟的滴答声更慢。

O(1)

img

https://dreamgoing.github.io/linux%E8%BF%9B%E7%A8%8B%E8%B0%83%E5%BA%A6.html

https://zhuanlan.zhihu.com/p/372441187

https://zhuanlan.zhihu.com/p/33461281

Licensed under CC BY-NC-SA 4.0
最后更新于 Oct 29, 2022 00:45 +0800