CHS_01.2.2.1+调度的概念、层次

CHS_01.2.2.1+调度的概念、层次

  • 调度的概念、层次
    • 知识总览
    • 调度的基本概念
    • 调度的三个层次——高级调度![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/6957fdec179841f69a0508914145da36.png)
    • 调度的三个层次——低级调度
    • 调度的三个层次——中级调度
    • 补充知识:进程的挂起态与七状态模型
  • 三层调度的联系、对比
  • 知识回顾

调度的概念、层次

我们会学习处理及调度的基本概念和几个调度的层次 分别为高级调度 中级调度和低级调度 其中由中级调度 也就是内存调度
我们会引出补充一个课本上没有太多提机的知识点就是进程的挂起态 并且会介绍一个进程状态的七状态模型 之后我们还会介绍三个调度层次的联系和对比

知识总览

在这里插入图片描述

那么 首先来看一下什么是调度 其实调度这个概念和我们的生活离得并不遥远

调度的基本概念

在这里插入图片描述

比如说 在我们去银行的时候 这个银行他可能只有几个窗口可以为客户服务

那么这些客户到底应该先为谁服务呢 银行一般采用的就是先到先服务的这种这种原则

那如果说此时有一个vip客户啊 这个客户在这个银行里存了几个小目标 就是存了几个亿 那么这个vip客户可能就会被银行优先的服务 他的优先级更高

再看另外一个场景 早上咱们起床的时候 可能每个宿舍只有一个卫生间 但是大家都想成为这个坐在王座上的男人 那么每个人都想使用 但是有的人说我使我想要使用三分钟 有的人要十分钟 有的人要一分钟 还有一个人他也需要使用三分钟那 但是

在经过商量之后就决定了一种使用这个资源的一个原则 就是时间使用的短的可以让它先使用 而时间长的就后使用 如果说时间长度相同的 那么就先进入这个队列 先排队的就可以先使用 所以大家经过商量之后就决

一定用1234这样的顺序来使用卫生间这个资源 所以其实所谓的调度它就是指
当我们有一堆东西 一堆任务要处理的时候 由于当前的资源有限 那么这些事情没办法同时的被处理
那这个时候 我们就需要按照某种规则比如说先到先服务 或者说时间短的优先 这样各种这样的规则来决定
我们要用什么样的顺序来处理这些任务 这就是所谓的调度研究的问题

好的 那来看一下在我们程序运行的整个生命周期内 什么时候会发生调度的情况

调度的三个层次——高级调度在这里插入图片描述

第一种调度叫做高级调度 又叫做作业调度 所以我们这需要补充作业的概念

那作业的概念其实在之前的讲解中获得或少是提过的 那所谓的作业其实指的就是
某一个具体的任务
大家在书里面会看到这样的描述 就是说用户向操作系统提交了一个作业

那这句话其实你可以理解为 就是用户让操作系统帮他启动某一个特定的程序
然后这个程序是来处理某一个具体的任务的 所以这就是作业的概念
好 那我们知道

我们要启动一个程序 那这个程序相关的数据肯定是要从外存放到内存里面 但是我们的内存资源又是有限的

所以有时候如果内存已经满了 内存资源不足的话 那么我们给操作系统提交的

这些作业 或者说我们想系统帮我们启动的这些个程序 有可能没办法马上把它们放到内存马上启动
所以在这个时候 操作系统就会进行所谓的高级调度 或者也可以称之为作业调度

操作系统会按照作业调度相关的规则从这个所谓的作业后备对列里边
选择一个作业 先把它调入内存 并且会为这个作业建立与它相对应的进程 也就是建立一个pcb
所以这就是所谓高级调度
或者说作业调度要做的事情 如果说当前用户提交了很多作业 那这个时候需要由操作系统来决定到底要先调入哪个作业

那每个作业在整个生命周期内只会掉入一次 掉入的时候会建立pcb

当作业完成 或者说这个任务完成之后 作业会被调出 这个时候才会撤销与之对应的pcb

调度的三个层次——低级调度

在这里插入图片描述

好 那只是高级调度的概念 接下来看低级调度 又可以叫进程调度 或者叫处理机调度

因为我们内存里面其实同时会存在很多很多个进程 但是我们系统当中的cpu资源又是有限的

所以 操作系统也需要制定某一种策略 从我们的进程就绪对列当中挑选出一个进程
把处理机资源分配给他那 多到程序并发执行这件事肯定需要用到进程调度

所以 进程调度是操作系统当中最基本的一种调度 并且进程调度的频率是很高的

因为只有高频率的进程调度才可以让各个进程很快速的轮流的上cpu执行

这样才可以让用户在宏观上看好像各个进程是同时执行那样好 那只是低级调度

调度的三个层次——中级调度

在这里插入图片描述

那最后再来看中级调度 刚才我们说过 计算机当中有可能会出现这种内存资源不足的情况

内存里面同时会存在多个进程的数据 那如果说内存不足的话 其实我们可以让某一些不太紧急 不太重要的进程

先把这些进程的数据 把它从内存调出外存 那如果说一个进程的数据从内存放到了外存里边 那这个进程此时就处于挂起状态

操作系统会把这些处于挂起状态的进程 他们的pcb组织成一个对列 叫做挂起对列

其实就类似于我们之前学习过的就绪队列 阻塞队列好 那此时如果说已经有空闲的内存资源了 那操作系统是不是又需要

通过某一种调度策略来决定到底要先把哪个进程的数据 先把它调回内存

那这个就是所谓的中级调度 管的事情 又叫做内存调度 不知道大家在平时用手机的时候有没有这样的体验

就是有时候你切换程序或者说切换进程的时候 有的时候你切换你会发现那个进程

切换的很快 而有的时候那个进程切换的又很慢 那有一种可能的原因就是

当你的这个进程切换的很快的时候 那这个进程的数据有可能是放在内存里面的
而你发现切换进程很卡很慢的时候 有可能是因为你那个进程的数据它之前
已经不在你的手机内存里了 而是被系统掉到外存当中
所以当你切换这个进程的时候

系统发现这个进程现在非运行不可了 那他会临时的把这个进程相关的数据从外存在读回内存

然后 只有他读回内存之后 这个进程才可以顺利的运行 因此你会感受到有那么一丝丝的卡顿

其实卡顿的过程就是系统在进行中级调度 他选中了你的那个进程 让他回内存来运行

那显然在进程运行的生命周期内有可能会多次调出 多次调入 所以中级调度发生的频率肯定要比高级调度要更高

好的 那这就是调度的三个层次 高级调度 中级调度和低级调度 那么 既然提到了挂起状态 我们再来补充一个和挂起状态相关的七状态模型

补充知识:进程的挂起态与七状态模型

在这里插入图片描述

其实挂起状态又可以进一步的细分为就绪挂起和阻塞挂起两种状态 咱们之前已经学了进程的五状态模型 这也是408里要求掌握的一个一个进程的状态模型
那么在引入了就绪挂起和阻塞挂起两种状态之后 一个处于就绪态的进程 如果说此时这个系统的负载比较高 内存空间已经不够用了 那么他有可能会把一个处于就绪态的进程

把它放到 把它暂时调到外存当中 然后这个进程就进入了一个就绪挂起的状态

意识到内存空间空闲 或者说这个进程又需要继续执行 那么这个进程又会被激活 把它的数据 相应的数据又挪回内存当中

这样的话 一个就绪挂起的进程又回到了就绪态 除此之外 一个处于阻塞态的进程也可以被挂起

相应的 也可以再重新的被调入内存 然后进行激活 重新回到阻塞态

而有的操作系统有可能会使一个处于阻塞挂起的进程 当它等待的阻塞事件发生的时候

这个进程就会直接进入到一个就绪挂起的状态 然后之后当他再被重新被调回内存的时候 是直接回到就绪态 而不是回到阻塞态

而有的时候 一个进程当它处于运行态 运行结束之后 可能这个进程下处理机的时候就会被直接放到外存当中 让它进入就绪挂起的状态

而有的时候 一个处于创建态的进程 当它创建结束之后 创建完pcb之后 有可能出现内存空间不够的情况 那这种情况下有可能处于创建态的进程 之后会先进入到一个就绪挂起的一个状态 那么这就是所谓的七状态模型 那大家需要注意的是挂起和

阻塞的区别这两种状态是都是暂时不能获得cpu服务的两种状态 但是区别在于处于挂起态的进程,进程印是放在外存里的

而处于阻塞态的进程 它的进程其实还在内存当中 而有的操作系统也有可能会把这些处于就绪挂起和阻塞挂起的这些进程分为两个不同的挂起对列

啊 当然 也有的操作系统还会根据这个阻塞的原因不同 再把阻塞挂起的这些进程再细分为多个队列

那么这就是七状态模型 大家也需要注意一下 我们再来整理一下三层调度的联系和对比

三层调度的联系、对比

在这里插入图片描述

这三层调度分别要做什么 相信刚才的讲解应该已经比较细了 这儿就不再展开 那么高级调度和中级调度 这两层调度是发生在外存和内存之间的调度 区别在于高级调度 它是面向作业的调度 一个作业在刚开始会被调入一次 被调出一次 并且作业调入

的时候 会会为这个作业建立相应的p cb 也就是建立他相应的进程而中级调度

内存调度 它是面向进程的一种调度 它是把暂时不会运行的进程相关的进程映象相关的一些数据 把它调到外存 然后之后通过

中级调度再次再把这些进程的数据从外存调回内存 而低级调度 它是内存和cpu之间的一个调度

对于这三层调度的发生频率来说 他们的发生频率依次是从低到高的

而这三种调度对进程状态的影响是高级调度 他有可能会使一个进程从无到创建态 最后当他创建完了pcb 创建完毕之后 还会把这个进程放入到就绪队列里 让他进入就绪态

所以他对进程状态的影响是这个样子 而内存调度 它会使一个处于挂起态的进程重新回到就绪态

而如果说挂起 它又细分为阻塞挂起和就绪挂起的话 那么也可以说它可以使一个处于阻塞挂起的进程重新回到阻色态

而低级调度也就是进程调度 它是选择一个处于就绪态的进程 让它进入运行态 投入处理机开始运行 所以 这是这三种调度对进程状态的影响 那么我们再来简单回顾一下

知识回顾

在这里插入图片描述

这三种调度的后面一种名称 这三个名称才是在咱们的考题当中最高频 最容易出现的一种名称 所以这个大家需要注意

另外呢 我们需要理解三层调度的联系和对比 大家在脑子里再回忆一下 对比一下

那么我们还通过中级调度 引出了一个咱们书里没有具体介绍的一个知识点 就是所谓的挂起态 并且介绍了和挂起态相关的七状态模型 这两个知识点 其实在考试当中也是有可能被考到的

特别是自己命题的一些学校 那么最后我们需要注意的是 咱们在介绍这几种三层调度的时候 都是说他们都是按照某种规则

那么 呃 这个课当中 我们主要学习的是作业调度和进程调度相关的这些所谓的规则

而这个就是咱们之后要研究的调度算法的问题 好的 那么这就是这个小节的全部内容

推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/336106.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Wheeltec小车的开发实录(1)

sudo mount -t nfs 192.168.58.101:/home/wheeltec/wheeltec_robot /mnt 报错 mount: /mnt: bad option; for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.<type> helper program. 解决办法 主机和从机都要安装 nfs-utils 安装nfs-utils su…

Android Termux技能大揭秘:安装MySQL并实现公网远程连接

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、Cpolar杂谈 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 安装MariaDB二. 安装cpolar内网穿透工具三. 创建安全隧道映射mysql四. 公网…

25计算机考研408专业课复习计划

点击蓝字&#xff0c;关注我们 今天要分享的是25计算机考研408专业课复习计划。 以下内容供大家参考&#xff0c;大家要根据自己的复习情况进行适当调整。 统考与自命题 统考科目是指计算机学科专业基础综合&#xff08;408&#xff09;&#xff0c;满分150分&#xff0c;试…

tomcat原理模拟和tomcat优化

1、tomcat实现原理 servlet 没有主方法main&#xff0c;依赖tomcat才能运行&#xff0c;因为tomcat 有主方法main&#xff0c;由java编写 servlet中doGet和doPost方法属于非静态方法&#xff0c;只能依托new对象存在&#xff0c;tomcat无法new出来对象&#xff0c;因此tomcat…

NLP论文阅读记录 - 2021 | WOS 使用预训练的序列到序列模型进行土耳其语抽象文本摘要

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.相关工作2.1 预训练的序列到序列模型2.2 抽象文本摘要 三.本文方法3.1 总结为两阶段学习3.1.1 基础系统 3.2 重构文本摘要 四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结…

一文读懂JavaScript DOM节点操作(JavaScript DOM节点操作详解)

一、什么是节点 二、节点类型 1、元素节点 2、属性节点 3、文本节点 4、节点类型、名字、值表格 三、通过文档对象方法获取节点 1、通过id属性获取节点 2、通过标签名字获取节点 3、通过类名获取节点 4、通过name属性获取节点 四、通过层级关系获取节点 1、子节点 …

【Flink-CDC】Flink CDC 介绍和原理概述

【Flink-CDC】Flink CDC 介绍和原理概述 1&#xff09;基于查询的 CDC 和基于日志的 CDC2&#xff09;Flink CDC3&#xff09;Flink CDC原理简述4&#xff09;基于 Flink SQL CDC 的数据同步方案实践4.1.案例 1 : Flink SQL CDC JDBC Connector4.2.案例 2 : CDC Streaming ETL…

从 Context 看 Go 设计模式:接口、封装和并发控制

文章目录 Context 的基本结构Context 的实现和传递机制为什么 Context 不直接传递指针案例&#xff1a;DataStore结论 在 Go 语言中&#xff0c; context 包是并发编程的核心&#xff0c;用于传递取消信号和请求范围的值。但其传值机制&#xff0c;特别是为什么不通过指针传递…

【大数据分析与挖掘技术】概述

目录 一、数据挖掘简介 &#xff08;一&#xff09;数据挖掘对象 &#xff08;二&#xff09;数据挖掘流程 &#xff08;三&#xff09;数据挖掘的分析方法 &#xff08;四&#xff09;经典算法 二、Mahout &#xff08;一&#xff09;Mahout简介 &#xff08;二&#…

CVE-2023-46226 Apache iotdb远程代码执行漏洞

项目介绍 Apache IoTDB 是针对时间序列数据收集、存储与分析一体化的数据管理引擎。它具有体量轻、性能高、易使用的特点&#xff0c;完美对接 Hadoop 与 Spark 生态&#xff0c;适用于工业物联网应用中海量时间序列数据高速写入和复杂分析查询的需求。 项目地址 https://io…

【INTEL(ALTERA)】F-tile 参考时钟和系统 PLL 时钟英特尔® FPGA IP无法锁定在特定频率?

说明 由于在英特尔 Quartus Prime Pro Edition 软件 22.2 及更早版本中存在一个问题&#xff0c;您可能会观察到 F-tile 参考时钟和系统 PLL 时钟英特尔 FPGA IP无法锁定&#xff1a; 999.9 MHz&#xff0c;参考时钟频率设置为 323.2 MHz。506.88 MHz&#xff0c;参考时钟频率…

Windows系统使用手册

点击前往查看&#x1f517;我的博客文章目录 Windows系统使用手册 文章目录 Windows系统使用手册Windows10解决大小核调度问题Windows系统安装软件Windows系统Typora快捷键Windows系统压缩包方式安装redisWindows安装dockerWindows系统的docker设置阿里源Windows系统下使用doc…

Ubuntu系统pycharm以及annaconda的安装配置笔记以及问题集锦(更新中)

Ubuntu 22.04系统pycharm以及annaconda的安装配置笔记以及问题集锦 pycharm安装 安装完之后桌面上并没有生成图标 后面每次启动pycharm都要到它的安装路径下的bin文件夹下&#xff0c; cd Downloads/pycharm-2018.1.4/bin然后使用sh命令启动脚本程序来打开pycharm sh pycha…

01 MyBatisPlus快速入门

1. MyBatis-Plus快速入门 版本 3.5.31并非另起炉灶 , 而是MyBatis的增强 , 使用之前依然要导入MyBatis的依赖 , 且之前MyBatis的所有功能依然可以使用.局限性是仅限于单表操作, 对于多表仍需要手写 项目结构&#xff1a; 先导入依赖&#xff0c;比之前多了一个mybatis-plus…

动态规划汇总

作者推荐 视频算法专题 简介 动态规划&#xff08;Dynamic Programming&#xff0c;DP&#xff09;是运筹学的一个分支&#xff0c;是求解决策过程最优化的过程。每次决策依赖于当前状态&#xff0c;又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的&#x…

《WebKit 技术内幕》之五(2): HTML解释器和DOM 模型

2.HTML 解释器 2.1 解释过程 HTML 解释器的工作就是将网络或者本地磁盘获取的 HTML 网页和资源从字节流解释成 DOM 树结构。 这一过程中&#xff0c;WebKit 内部对网页内容在各个阶段的结构表示。 WebKit 中这一过程如下&#xff1a;首先是字节流&#xff0c;经过解码之…

力扣每日一练(24-1-20)

大脑里的第一想法是排列组合&#xff0c;直接给出超级准确的最优解。 但不适用&#xff0c;hhh 只要连续的n个元素大于或者等于target就可以了 题目比自己想象的要好解决 解法是使用滑动窗口算法。这个算法的基本思想是维护一个窗口&#xff0c;使得窗口内的元素总和大于等于目…

消除游戏(寒假每日一题+模拟、优化)

题目 在一个字符串 S 中&#xff0c;如果 SiSi−1 且 Si≠Si1&#xff0c;则称 Si和 Si1 为边缘字符。 如果 Si≠Si−1 且 SiSi1&#xff0c;则 Si−1 和 Si 也称为边缘字符。 其它的字符都不是边缘字符。 对于一个给定的串 S&#xff0c;一次操作可以一次性删除该串中的所…

【c++笔记】用c++解决一系列质数问题!

质数是c语言和c中比较常见的数学问题&#xff0c;本篇文章将带你走进有关质数的一系列基础问题&#xff0c;其中包含常见的思路总结&#xff0c;本篇文章过后&#xff0c;将会持续更新c算法系列&#xff0c;感兴趣的话麻烦点个关注吧&#xff01; 希望能给您带来帮助&#xff…

STM32标准库开发—MPU6050详细介绍

MPU6050简介 3轴IMU即只有3轴陀螺仪的IMU&#xff0c;其因为只有一个3轴陀螺仪&#xff0c;所以只能感知载体roll&#xff08;滚转&#xff09;、pitch&#xff08;俯仰&#xff09;、yawl&#xff08;偏航&#xff09;共3个自由度的姿态信息。 6轴IMU在3轴IMU的基础上加装了3轴…