【操作系统】10. 调度

1. 调度算法

First Come First Service (FIFO)


  • 如果进程在执行中阻塞,那么在队列中的下一个进程会得到 CPU
  • 举例来说,如果现在有三个进程,p1, p2, p3,假设我们事先知道它们的执行时间是 12, 3, 3。按照 FIFO算法:
    • 如果它们以 p1, p2, p3 的顺序到达,那么它们的执行顺序就是 p1, p2, p3,整个的平均周转时间 = (12 + (12 + 3) + (12 + 3 + 3)) / 3 = 15;
    • 如果它们以 p2, p3, p1 的顺序到达,那么它们的执行顺序就是 p2, p3, p1,整个的平均周转时间 =(3 + (3 + 3) + (3 + 3 + 12)) / 3 = 9;
    • 周转时间 = 等待时间+执行时间
  • 优点:简单
  • 缺点:平均等待时间波动较大;花费时间少的任务可能排在花费时间长的任务后面;

短任务优先


  • 按照预测的完成时间将任务入队列

  • 可以是抢占式和非抢占式:假设当前执行时间最短的进程正在执行的时候,来了一个执行时间更短的进程,那么就有两种处理方式:

    • 当前执行的进程继续执行,进来的更短的进程排入就绪队列的最前面,也就是非抢占式
    • 如果当前执行的进程的剩余时间大于新进的进程,那么当前进程将会从运行态进入就绪态,回到就绪队列相应的位置,新进的进程获得 CPU 执行。被称为 Shortest-Remaining-Time
  • 连续的短任务流会使长任务饥饿

  • 需要预知未来。就是需要知道进程的执行时间。

最高响应比优先


  • 短任务优先只考虑的进程的执行时间而没有考虑进程的等待时间

  • 综合考虑任务的执行时间和等待时间。

    • 相应比:R = (WaitingTime + ServiceTime) / ServiceTime
    • 选择相应比大的进程执行。等待时间越长,执行时间越短,对应的相应比就越大
  • 还是需要预知进程的执行时间

  • 缓解饥饿现象

Round Robin 轮循调度算法


  • 每个进程执行一个特定的时间片
  • 公平,但是平均等待时间较差

MLFQ 多级反馈队列


  • 设置多个就绪队列,每个就绪队列设有一定的优先级,进程在不同的队列中根据实际执行情况移动
  • CPU 密集性进程在每一个时间片后向低优先级调整 ;IO 密集性进程优先放入高优先级队列

Fair-share Scheduling 公平共享调度


  • 公平是第一要素

2. 实时调度

实时定义


  • 正确性依赖于时间和功能两方面的一种操作系统

性能指标


  • 时间约束的及时性(deadline)
  • 速度和平均性能相对不重要

强实时系统和弱实时系统


强实时系统:保证在规定时间内完成重要任务,必须完成
弱实时系统:尽量完成

你可能感兴趣的:(操作系统)