吐血整理!操作系统【处理机调度】

2024-02-16 12:04

本文主要是介绍吐血整理!操作系统【处理机调度】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

在这里插入图片描述

🌈个人主页:godspeed_lucip
🔥 系列专栏:OS从基础到进阶


  • 1 基本概念
    • 1.1 总览
    • 1.2 什么是调度
      • 1.2.1 调度
      • 1.2.2 处理机调度
    • 1.3 调度的三个层次
      • 1.3.1 高级调度
      • 1.3.2 中级调度(内存调度)
      • 1.3.3 低级调度(进程调度)
    • 1.4 七状态模型
    • 1.5 三层调度的联系与对比
    • 1.6 总结
  • 2 方式与过程
    • 2.1 总览
    • 2.2 进程调度的时机
      • 2.2.1 需要进行调度的情况
      • 2.2.2 不能进行调度的情况
    • 2.3 临界区
      • 2.3.1 临界资源
      • 2.3.2 临界区
      • 2.3.3 分类
    • 2.4 进程调度的方式
      • 2.4.1 分类
      • 2.4.2 方式
    • 2.5 总结
  • 3 处理机调度算法(非抢占式)
    • 3.1 总览
    • 3.2 调度算法的评价指标
      • 3.2.1 CPU利用率
      • 3.2.2 系统吞吐量
      • 3.2.3 周转时间
      • 3.2.4 带权周转时间
      • 3.2.5 等待时间
      • 3.2.6 响应时间
    • 3.3 调度算法的学习思路
    • 3.4 调度算法
      • 3.4.1 先来先服务(FCFS,First Come first Serve)
      • 3.4.2 短作业优先(SJF,Shortest Job First)
      • 3.4.3 高响应比优先(HRRN,Highest Response Ratio Next)
    • 3.5 总结
  • 4 处理机调度算法(抢占式)
    • 4.1 总览
    • 4.2 各算法
      • 4.2.1 时间片轮转(RR,Round-Robin)
      • 4.2.2 优先级调度算法
      • 4.2.3 多级反馈队列算法
    • 4.3 总结
  • 5 总结


1 基本概念

1.1 总览

image1

1.2 什么是调度

1.2.1 调度

image2

1.2.2 处理机调度

image3

1.3 调度的三个层次

1.3.1 高级调度

(1)是针对作业的调度,传统批处理机系统中作业是必须全部执行完才可以结束的
(2)概念
image4

1.3.2 中级调度(内存调度)

(1)操作系统会将暂时不可以运行的进程调至外存等待(虚拟存储技术),知道进程重新具备了运行条件或内存有空闲时再重新调入内存。这样做可以提高内存利用率、系统吞吐量。此时的进程所处的状态为挂起状态。
(2)PCB不会一起调到外存,依然在内存中,操作系统将被挂起的PCB放入挂起队列中
(3)解释
image5

1.3.3 低级调度(进程调度)

image6

1.4 七状态模型

image7

1.5 三层调度的联系与对比

image8

1.6 总结

image9

2 方式与过程

2.1 总览

image1

2.2 进程调度的时机

2.2.1 需要进行调度的情况

image2

2.2.2 不能进行调度的情况

image3

2.3 临界区

2.3.1 临界资源

一个时间段内只允许一个进程使用的资源。各进程需要互斥的访问临界资源

2.3.2 临界区

访问临界资源的那段代码

2.3.3 分类

(1)内核程序临界区
① 一般用于访问某种数据结构,比如由各就绪进程的PCB组成的就绪队列。
② 在访问内核程序临界区期间不可以进行调度与切换,否则容易造成系统的错误。
image4
(2)普通临界区:
① 可以在访问普通临界区时进行调度与切换。
②比如,当一个进程占用了打印机这种速度很慢的I/O设备,假如此时不进行调度,则进程在等待IO处理完成的期间CPU会一直处于空闲状态,
image5

2.4 进程调度的方式

2.4.1 分类

image6

2.4.2 方式

image7

2.5 总结

image8

3 处理机调度算法(非抢占式)

3.1 总览

image1
image2

3.2 调度算法的评价指标

3.2.1 CPU利用率

image3

3.2.2 系统吞吐量

image4

3.2.3 周转时间

image5

3.2.4 带权周转时间

image6

3.2.5 等待时间

image7

3.2.6 响应时间

image8

3.3 调度算法的学习思路

image9

3.4 调度算法

3.4.1 先来先服务(FCFS,First Come first Serve)

image10

3.4.2 短作业优先(SJF,Shortest Job First)

(1)短作业优先调度
image11

(2)最短剩余时间优先算法
image12

(3)注意几个小细节
image13

(4)短作业优先
image14

3.4.3 高响应比优先(HRRN,Highest Response Ratio Next)

(1)概述

image15
(2)总结
image16

4. 注意
image17

3.5 总结

image18

image19

4 处理机调度算法(抢占式)

4.1 总览

image1

4.2 各算法

4.2.1 时间片轮转(RR,Round-Robin)

image2
(1)调度过程详解
以下表为例:
image3
①假设时间片大小为2
image4
image5
image6
最终结果
image7

②假设时间片大小为5
image8
最终结果:
image9
(2)注意
image10

4.2.2 优先级调度算法

image11
(1)非抢占式的优先级调度算法例题
image12
(2)抢占式的优先级调度算法例题
image13

(3)补充
image14
(4)如何合理的设置进程的优先级?
image15
①为什么要偏好I/O型进程呢?
image16

(5)对于动态优先级,什么时候该去调整呢
image17

4.2.3 多级反馈队列算法

image18
(1)算法步骤
image19

4.3 总结

image20

5 总结

操作系统,如默默守护的守夜者,无声地管理硬件与软件的交流,为计算机创造和谐秩序。

它是无形的引导者,让复杂的任务变得井然有序,为用户提供无忧体验。

操作系统的巧妙设计,让计算机变得更加智能高效,让人与科技之间的交流更加顺畅。

在每一次启动中,它如信任的伙伴,带领我们进入数字世界的奇妙旅程。

渴望挑战操作系统的学习路径和掌握进阶技术?不妨点击下方链接,一同探讨更多操作系统的奇迹吧。我们推出了引领趋势的💻OS专栏:《OS从基础到进阶》 ,旨在深度探索OS的实际应用和创新。🌐🔍

在这里插入图片描述

在这里插入图片描述

这篇关于吐血整理!操作系统【处理机调度】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/714477

相关文章

Java中的xxl-job调度器线程池工作机制

《Java中的xxl-job调度器线程池工作机制》xxl-job通过快慢线程池分离短时与长时任务,动态降级超时任务至慢池,结合异步触发和资源隔离机制,提升高频调度的性能与稳定性,支撑高并发场景下的可靠... 目录⚙️ 一、调度器线程池的核心设计 二、线程池的工作流程 三、线程池配置参数与优化 四、总结:线程

Python自动化批量重命名与整理文件系统

《Python自动化批量重命名与整理文件系统》这篇文章主要为大家详细介绍了如何使用Python实现一个强大的文件批量重命名与整理工具,帮助开发者自动化这一繁琐过程,有需要的小伙伴可以了解下... 目录简介环境准备项目功能概述代码详细解析1. 导入必要的库2. 配置参数设置3. 创建日志系统4. 安全文件名处

MySQL 迁移至 Doris 最佳实践方案(最新整理)

《MySQL迁移至Doris最佳实践方案(最新整理)》本文将深入剖析三种经过实践验证的MySQL迁移至Doris的最佳方案,涵盖全量迁移、增量同步、混合迁移以及基于CDC(ChangeData... 目录一、China编程JDBC Catalog 联邦查询方案(适合跨库实时查询)1. 方案概述2. 环境要求3.

SpringSecurity整合redission序列化问题小结(最新整理)

《SpringSecurity整合redission序列化问题小结(最新整理)》文章详解SpringSecurity整合Redisson时的序列化问题,指出需排除官方Jackson依赖,通过自定义反序... 目录1. 前言2. Redission配置2.1 RedissonProperties2.2 Red

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

Javaee多线程之进程和线程之间的区别和联系(最新整理)

《Javaee多线程之进程和线程之间的区别和联系(最新整理)》进程是资源分配单位,线程是调度执行单位,共享资源更高效,创建线程五种方式:继承Thread、Runnable接口、匿名类、lambda,r... 目录进程和线程进程线程进程和线程的区别创建线程的五种写法继承Thread,重写run实现Runnab

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

Python变量与数据类型全解析(最新整理)

《Python变量与数据类型全解析(最新整理)》文章介绍Python变量作为数据载体,命名需遵循字母数字下划线规则,不可数字开头,大小写敏感,避免关键字,本文给大家介绍Python变量与数据类型全解析... 目录1、变量变量命名规范python数据类型1、基本数据类型数值类型(Number):布尔类型(bo

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis