【Linux】进程的调度算法

目录

1. 先来先服务算法

2. 短进程优先算法

3. 最高响应比优先算法

4. 时间片轮转算法

5. 多级反馈队列算法


调度算法指的是根据系统的资源分配策略所规定的资源分配算法。

对于不同的系统和系统目标,通常采用不同的调度算法。

1. 先来先服务算法

  • 先来先服务算法(FCFS: First Come, First Served
    • 是一种依据进程进入就绪状态的先后顺序排列的算法
    • 当进程进入等待或者结束状态时,就绪队列中的下一个进程占用 CPU

优点

  • 易于理解且实现简单

缺点

  • 平均等待时间波动较大
    • 周转时间:进程从初始化到结束(包含等待时间)的总时间
    • 短进程可能排在长进程后面,假如有三个进程,计算时间分别为 P1(12),P2(3),P3(3),任务的到达顺序为 P1,P2,P3,那么周转时间就是 (12 + 15 + 18) / 3 = 15
    • 若任务的到达顺序为 P2,P3,P1,则周转时间为 (3 + 6 + 18) / 3 = 9。
    • 可见平均等待时间波动较大
  • I/O 资源和 CPU 资源的利用率较低
    • CPU 密集型进程会导致 I/O 设备闲置时,I/O 密集型进程也等待

2. 短进程优先算法

  • 短进程优先算法(SPN:Shortest Process First
    • 是一种选择就绪队列中执行时间最短的进程占用 CPU 进入运行状态的算法,其中 就绪队列按照预期的执行时间来排序,该算法具有最优平均周转时间。

SPN 算法的可抢占改进:短剩余时间优先算法(SRT

  • 假设一个正在执行的进程的预期执行时间比较长,其剩余的执行时间大于某个将要执行的进程的预期时间时,允许该预期时间短的进程抢先执行。

缺点:

  • 可能导致饥饿(连续的短进程流会使得长进程无法获得 CPU 资源)
  • 需要预知未来
    • 如何预估下一个 CPU 计算的持续时间?
    • 简单的解决方法:询问用户  用历史的执行时间来预估未来的执行时间

3. 最高响应比优先算法

  • 最高响应比优先算法(HRRN:Highest Response Ratio Next
    • 是一种选择就绪队列中响应比 R 值最高的进程的算法。
    • 响应比 R 定义如下:R = (w + s) / s
      • ​​​​​​​其中 w 表示等待时间,s 表示执行时间,等待时间越长,R 值越高。
      • 这解决了短进程优先算法中连续的短进程流会使得长进程无法获得 CPU 资源。

4. 时间片轮转算法

  • 时间片轮转算法(RR:Round-Robin
    • 是一种让就绪队列上的每个进程只运行一个时间片的算法。
    • 当时间片结束时,按照 FCFS 算法切换到下一个就绪进程。

缺点:

  • 额外的上下文切换
  • 时间片太大,导致等待时间过长,极限情况退化成 FCFS
  • 时间片太小,导致反映迅速,产生大量上下文切换,而大量上下文切换开销会影响到系统吞吐量

5. 多级反馈队列算法

  • 多级反馈队列算法(MLFQ:Multilevel Feedback Queue
    • 是一种进程可以在不同队列间移动的多级队列算法,其实质是多种算法的集成。
    • 时间片大小随着优先级别增加而增加,若进程在当前的时间片还没有完成,则降到下一个优先级。
    • CPU 密集型进程(时间片大)的优先级下降很快,I/O 密集型进程(时间片小)会停留在高优先级。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值