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

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


前言

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

我的个人主页,欢迎来阅读我的其他文章
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

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

相关推荐
天若有情67324 分钟前
探秘 C++ 计数器类:从基础实现到高级应用
java·开发语言·c++
明天不下雨(牛客同名)39 分钟前
介绍一下 MVCC
java·服务器·数据库
春生野草42 分钟前
如何用JAVA手写一个Tomcat
java·开发语言·tomcat
爱coding的橙子1 小时前
每日算法刷题计划day13 5.22:leetcode不定长滑动窗口最短/最小1道题+求子数组个数越长越合法2道题,用时1h
算法·leetcode·职场和发展
编程绿豆侠1 小时前
力扣HOT100之二叉树: 437. 路径总和 III
算法·leetcode·哈希算法
小猪咪piggy1 小时前
【JavaEE】(1) 计算机如何工作
java
范纹杉想快点毕业2 小时前
Google C++ Style Guide 谷歌 C++编码风格指南,深入理解华为与谷歌的编程规范——C和C++实践指南
c语言·数据结构·c++·qt·算法
smileNicky2 小时前
SpringBoot系列之OpenAI API 创建智能博客评论助手
java·spring boot·后端
弥鸿2 小时前
MinIO的安装和使用
java·spring boot·java-ee·springcloud·javaee