CPU调度算法

批处理系统中的调度算法:

*需要考虑的因素:
1. 吞吐量
2. cpu利用率
3. 周转时间
4. 公平性*

1.先来先服务: FCFS:

  • 优点:实现简单
  • 缺点:可能造成周转时间长

2.最短作业优先 SJF(非抢占式)

  • 优点:平均周转时间最短
  • 缺点:不公平,短任务多时,长任务一直得不到执行,产生starvation。

3. 最短剩余时间优先 SRTN :Shortest Remainning Time Next

SJF的抢占式版本

4. 最短相应比优先 HRRN:highest response ratio next

  • 是一个综合考虑的算法
  • 调度时,先计算每个进程的响应比,之后总是选择响应比高的执行。

响应比R = 1+(等待时间/处理时间)

交互式系统中的调度算法

考虑主要因素:

  • 响应时间
  • 公平性

1.RR-round Robin (时间片轮转):

  • 目标:为改善短任务的平均响应时间
  • 主要思想:
    1.周期性切换
    2.每个进程分配一段时间片
    3.利用时钟中断进行进程切换

  • 如何选择合适长度的时间片:

    -时间片太长:
    1.如何每个进程的处理时间都小与时间片的长度,就会退化为FCFS
    2.延长短进程的响应时间

    -时间片太短:
    1.频繁的cpu切换浪费cpu

  • 优点:
    1.公平
    2.有利于交互式计算,响应时间短

  • 缺点
    1.由于进程切换,RR算法开销较大
    2.对于各个进程处理时间大致相同的情况不利,造成更大的平均处理时间。

mutilevel feedback (多级反馈队列)

  • unix BSD5.3 版本使用的调度算法
  • 是一个综合的调度算法

基本思想:

    • 设置多个就绪,第一级队列优先级最高
    • 优先级高,时间片越短,优先级越低,时间片越长。
    • 第一级队列为空时,开始调度第二级队列,以此类推
    • 各级队列使用RR算法调度
    • 当一个新创建进程就绪后,进入第一级队列
    • 进程用完时间片,放弃cup,就进入下一级队列
    • 由于阻塞而放弃cpu的进程,进入相应的等待队列,一旦等待的事件发生,就回到原来的就绪队列
    • 多级反馈队列对i/o型进程更友好
原文地址:https://www.cnblogs.com/tiancai/p/8204009.html