zoukankan      html  css  js  c++  java
  • 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型进程更友好
  • 相关阅读:
    【面积并】 Atlantis
    【动态前k大 贪心】 Gone Fishing
    【复杂枚举】 library
    【双端队列bfs 网格图建图】拯救大兵瑞恩
    【奇偶传递关系 边带权】 奇偶游戏
    【权值并查集】 supermarket
    CF w4d3 A. Pythagorean Theorem II
    CF w4d2 C. Purification
    CF w4d2 B. Road Construction
    CF w4d2 A. Cakeminator
  • 原文地址:https://www.cnblogs.com/tiancai/p/8204009.html
Copyright © 2011-2022 走看看