计算机操作系统(十一)调度器/调度程序,闲逛调度与调度算法的评价指标

计算机操作系统(十一)调度器/调度程序,闲逛调度与调度算法的评价指标


前言

  • 在上一篇博客中,我们探讨了调度的概念与层次体系,以及进程调度的触发时机和进程调度方式。
  • 本篇博客将进一步深入剖析调度器(又称调度程序)、闲逛调度机制,同时解析调度算法的核心评价指标

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343

我的操作系统博客专栏
https://blog.csdn.net/2402_83322742/category_12916780.html?spm=1001.2014.3001.5482


一、调度程序

(一)什么是调度程序?

就像班主任给学生安排考试顺序一样,调度程序是操作系统里专门负责分配CPU资源的"管家" ,它的核心工作是决定接下来让哪个进程使用CPU。

(二)哪些情况会触发调度程序工作?

  1. 创建新进程
  • 比如你打开一个新的游戏软件,系统就会创建一个新进程。
  • 这时候调度程序需要考虑:是马上让新进程运行,还是让它排队等待?
  1. 进程退出

    当一个进程完成任务退出时,比如你关闭了正在看的视频软件,调度程序就会重新分配CPU资源,让其他等待的进程有机会运行。

  2. 运行进程阻塞

  • 当一个进程需要等待输入输出(比如等待用户键盘输入、读取文件数据),这时候进程会暂时"停住",调度程序就会让其他进程先运行。
  1. I/O中断发生
  • 比如打印机完成打印任务后向系统发送信号,这种突发的I/O事件会打断当前进程,触发调度程序重新选择下一个运行的进程

(三)两种调度策略的区别

  • 非抢占式调度(温柔的管家)

    只有当前进程主动"放手"(阻塞或退出)时,调度程序才会安排新进程。就像餐厅厨师必须做完当前顾客的菜,才会处理下一个订单,不会中途打断正在做的菜。

  • 抢占式调度(严格的管家)

    会定时打断当前进程(比如每10个时钟周期),强制切换任务。类似老师规定每个学生每10分钟必须交换一次做的题目,确保每个人都有机会练习,防止某个学生一直占用时间。

二、闲逛调度:

  • 当所有进程都在等待(比如都在阻塞状态),没有可运行的任务时,调度程序会启动一个特殊的"闲逛进程"

比如:

  • 电脑待机时,屏幕保护程序开始运行,此时CPU并没有完全空闲,而是在执行这个轻量级的闲逛进程。
  • 它的作用是让CPU保持运行状态,随时准备响应新的任务,就像商店里没有顾客时,店员会整理货架保持待命,而不是关门休息。

三、调度算法的评价指标:

(一)CPU利用率:

  • 定义:CPU真正在处理任务的时间占总时间的比例。
  • 例子:如果一天24小时里,CPU有20小时在处理程序,4小时在空闲,利用率就是20/24≈83.3%。
  • 目标:越高越好,但不能过度压榨(比如避免所有进程排队等待导致死机)。

(二)系统吞吐量:

  • 定义:单位时间内完成的进程数量。
  • 例子:餐厅一小时内完成100份套餐和完成50份套餐,前者吞吐量更高。调度算法好的系统,就像高效的餐厅,能更快处理更多任务。

(三)周转时间:

  • 定义 :从进程创建到完成的总时间。
    • 不带权周转时间:直接计算总耗时,比如外卖从下单(进程创建)到送达(完成)用了30分钟。
    • 带权周转时间:总耗时除以进程实际运行时间(考虑等待时间的影响)。比如外卖制作花了10分钟,等待配送花了20分钟,带权周转时间就是30/10=3(表示等待时间是运行时间的2倍)。
  • 目标:平均周转时间越小越好,让每个任务尽快完成。

(四)等待时间:

  • 定义:进程在就绪队列中等待被CPU处理的总时间(不包括运行时间)。
  • 例子:外卖在厨房排队等待厨师制作的时间,就是等待时间。调度算法差的系统,可能让外卖长时间排队,导致等待时间过长。

(五)响应时间:

  • 定义:从用户提交请求到系统首次响应的时间。
  • 例子:你点击鼠标打开网页,到浏览器开始显示第一个页面的时间,就是响应时间。即使最终完成需要较长时间,快速的首次响应也能让用户感觉系统更流畅。

以上就是对本次关于操作系统博客内容的总结,后续我们将深入探讨操作系统更多知识。

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343

我的操作系统博客专栏
https://blog.csdn.net/2402_83322742/category_12916780.html?spm=1001.2014.3001.5482

|--------------------|
| 非常感谢您的阅读,喜欢的话记得三连哦 |

相关推荐
熊文豪8 分钟前
探索CANN ops-nn:高性能哈希算子技术解读
算法·哈希算法·cann
熊猫_豆豆25 分钟前
YOLOP车道检测
人工智能·python·算法
rannn_11126 分钟前
【苍穹外卖|Day4】套餐页面开发(新增套餐、分页查询、删除套餐、修改套餐、起售停售)
java·spring boot·后端·学习
灵感菇_28 分钟前
Java HashMap全面解析
java·开发语言
qq_124987075330 分钟前
基于JavaWeb的大学生房屋租赁系统(源码+论文+部署+安装)
java·数据库·人工智能·spring boot·计算机视觉·毕业设计·计算机毕业设计
游戏开发爱好者835 分钟前
日常开发与测试的 App 测试方法、查看设备状态、实时日志、应用数据
android·ios·小程序·https·uni-app·iphone·webview
短剑重铸之日36 分钟前
《设计模式》第十一篇:总结
java·后端·设计模式·总结
王码码203540 分钟前
Flutter for OpenHarmony 实战之基础组件:第三十一篇 Chip 系列组件 — 灵活的标签化交互
android·flutter·交互·harmonyos
艾莉丝努力练剑40 分钟前
【Linux:文件】Ext系列文件系统(初阶)
大数据·linux·运维·服务器·c++·人工智能·算法
黑码哥1 小时前
ViewHolder设计模式深度剖析:iOS开发者掌握Android列表性能优化的实战指南
android·ios·性能优化·跨平台开发·viewholder