通常在使用多级队列调度算法时,进程进入系统时被永久地分配到某个队列。例如,如果前台和后台进程分别具有单独队列,那么进程并不从一个队列移到另一个队列,这是因为进程不会改变前台或后台的性质。这种设置的优点是调度开销低,缺点是不够灵活。

相反,多级反馈队列调度算法允许进程在队列之间迁移。这种想法是,根据不同 CPU 执行的特点来区分进程。如果进程使用过多的 CPU 时间,那么它会被移到更低的优先级队列。这种方案将 I/O 密集型和交互进程放在更高优先级队列上。 此外,在较低优先级队列中等待过长的进程会被移到更高优先级队列。这种形式的老化可阻止饥饿的发生。

图 1 多级反馈队列

例如,一个多级反馈队列的调度程序有三个队列,从 0 到 2(图 1)。调度程序首先执行队列 0 内的所有进程。只有当队列 0 为空时,它才能执行队列 1 内的进程。类似地,只有队列 0 和 1 都为空时,队列 2 的进程才能执行。到达队列 1 的进程会抢占队列 2 的进程。同样,到达队列 0 的进程会抢占队列 1 的进程。

每个进程在进入就绪队列后,就被添加到队列 0 内。队列 0 内的每个进程都有 8ms 的时间片。如果一个进程不能在这一时间片内完成,那么它就被移到队列 1 的尾部。如果队列 0 为空,队列 1 头部的进程会得到一个 16ms 的时间片。如果它不能完成,那么将被抢占,并添加到队列 2。只有当队列 0 和 1 为空时,队列 2 内的进程才可根据 FCFS 来运行。

这种调度算法将给那些 CPU 执行不超过 8ms 的进程最高优先级。这类进程可以很快得到 CPU,完成 CPU 执行,并且处理下个 I/O 执行。

所需超过 8ms 但不超过 24ms 的进程也会很快得以服务,但是它们的优先级要低一点。长进程会自动沉入队列 2,队列 0 和 1 不用的 CPU 周期按 FCFS 顺序来服务。

通常,多级反馈队列调度程序可由下列参数来定义:

队列数量。

每个队列的调度算法。

用以确定何时升级到更高优先级队列的方法。

用以确定何时降级到更低优先级队列的方法。

用以确定进程在需要服务时将会进入哪个队列的方法。

多级反馈队列调度程序的定义使其成为最通用的 CPU 调度算法。通过配置,它能适应所设计的特定系统。遗憾的是,由于需要一些方法来选择参数以定义最佳的调度程序,所以它也是最复杂的算法。

linux多级反馈队列的实现,多级反馈队列调度算法详解相关推荐

  1. linux中流设备_[快速上手Linux设备驱动]之块设备驱动流程详解一

    [快速上手Linux设备驱动]之块设备驱动流程详解一 walfred已经在[快速上手Linux设备驱动]之我看字符设备驱动一 文中详细讲解了linux下字符设备驱动,并紧接着用四篇文章描述了Linux ...

  2. 处理机调度算法详解----作业调度

    处理机调度算法详解----作业调度 ​ 在之前的理论篇中,我们也介绍了处理机调度的层次,不同的操作系统也会根据自己的设计目标来配置不同层次的调度算法,并且因为调度算法众多,如果全部糅杂在一起来讲,会让 ...

  3. Linux下boost库的编译、安装详解

    1.下载源文件 去官网下载:http://www.boost.org/ 这里下载最新版本 wget https://dl.bintray.com/boostorg/release/1.64.0/sou ...

  4. Linux下的tar归档及解压缩功能详解

    Linux下的tar归档及解压缩功能详解 一.Linux下解压缩工具 二.gzip工具的使用方法 三.其他解压缩工具 一.Linux下解压缩工具 二.gzip工具的使用方法 三.其他解压缩工具 一.L ...

  5. 【Linux】19.Linux环境变量名LD_LIBRARY_PATH 和 ldd命令详解

    Linux环境变量名LD_LIBRARY_PATH 和 ldd命令详解 参考链接: https://www.jianshu.com/p/a62e1d327023 LD_LIBRARY_PATH中的LD ...

  6. 【转载】Linux命令-自动挂载文件/etc/fstab功能详解[转]

    博客园 首页 新随笔 联系 订阅 管理 随笔 - 322  文章 - 0  评论 - 19 Linux命令-自动挂载文件/etc/fstab功能详解[转]     一./etc/fstab文件的作用 ...

  7. linux为什么用tar压缩,linux下tar压缩和解压命令用法详解

    linux下tar压缩和解压命令用法详解 2017-03-25 14:06 分享人:老牛 将/usr/local/test目录下所有文件仅打包,不压缩到 /usr/local/auto_bak/目下 ...

  8. 详解FTP服务完成Linux和WIN10之间的信息传输(实验详解)

    详解FTP服务完成Linux和WIN10之间的信息传输(实验详解) 一.FTP简介 1. FTP服务--用来传输文件的协议 2.端口 3.数据连接模式 二.相关配置 1.安装FTP服务 2.设置匿名用 ...

  9. linux mk创建文件,Linux运维知识之Linux mkkickstart建立安装的组态文件命令详解

    本文主要向大家介绍了Linux运维知识之Linux mkkickstart建立安装的组态文件命令详解,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. 功能说明:建立安装的组态文件 ...

  10. linux 子域dns,linux下搭建DNS子域及相关授权详解

    linux下搭建DNS子域及相关授权详解forward功能是本地无法解析的域名,转发给指定DNS服务器 forward only; 所有无法解析的域名,都转发给指定DNS服务器,必须有解析结果 for ...

最新文章

  1. python数组改变维数
  2. 学完计算机之后的感受,计算机教学心得心得体会
  3. cent 8.0 安装tomcat 9.0_JDK-TOMCAT-MYSQL安装
  4. Spider_douyin
  5. 《树莓派Python编程入门与实战(第2版)》——1.7 排除树莓派的故障
  6. JavaScript 学习笔记(1)
  7. 【杂谈】数学,计算机视觉,图形图像处理
  8. mysql三:表操作
  9. 网友调侃特斯拉股价要冲向火星 马斯克:疯狂的时代
  10. 关于IE、Firefox、Opera页面呈现异同(转载)
  11. ScrollReveal-元素随页面滚动产生动画的js插件
  12. 支付宝APP支付里设置应用网关和授权回调地址是不必填的
  13. 2021考研数学二汤家凤接力题典1800【解答册】
  14. 工控蜜罐 Conpot 的进阶玩法
  15. 名悦集团:冬季汽车开暖风有哪些注意事项
  16. 【P5385】【Cnoi2019】须臾幻境(LCT)
  17. java计算机毕业设计共享充电宝管理系统演示录像2021源码+mysql数据库+系统+lw文档+部署
  18. 如何获取有价值的用户反馈?
  19. ANSYS FLUENT——最基本操作(以一个简单的案例为例)
  20. sql server 完全卸载后报错unknown\comopnents\.....\...... vertify that you have sufficient access to thatkey

热门文章

  1. 一步一步的微软Lync 2010综合标准服务器安装指南
  2. 办理离职手续流程的详细流程(离职交接的标准流程)
  3. lucene2.4 gong on
  4. 特征工程(七)—特征学习RBM
  5. winform开发心得
  6. [NGUI]NGUI自定义图集和自定义字体
  7. Oracle培训总结
  8. gaussDB数据库常用操作命令
  9. 基于Hyperledger Fabric实现药品溯源
  10. 软件设计师6:多媒体