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等技术内容,立即学习

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

9.1 Maven项目管理(❤❤❤❤)

9.1 Maven项目管理 1. Maven介绍2. 创建Maven项目2.1 创建2.2 结构分析3. Maven依赖管理3.1 简介3.2 设置下载镜像仓库4. 本地仓库与中央仓库5. Maven生命周期6. Maven插件技术1. Maven介绍

钡铼 楼宇暖通网关之 BACnet网关在空气源热泵智能控制系统中的应用介绍

前言 在刚刚过去的2023年,空气源热泵市场依然火爆,全线市场销量递增,各种新品层出不穷,市场认可度持续攀升,在整个采暖市场,空气源热泵已然成为当红明星。 热泵组管道比较复杂,传感器分布比较分…

路飞项目--02

补充:axios封装 # 普通使用:安装 ,导入使用 const filmListreactive({result:[]}) axios.get().then() async function load(){let responseawait axios.get()filmList.resultresponse.data.results } # 封装示例:请求发出去之前…

(蓝桥杯每日一题)love

问题描述 马上就要到七夕情人节了,小蓝在这天想要心爱得男神表白,于是她写下了一个长度为n仅由小写字母组成的字符串。 她想要使这个字符串有 1314个 love 子序列但是马虎的小蓝却忘记了当前已经有多少个子序列为 love。 请你帮小蓝计算出当前字符串有多…

【llm 使用llama 小案例】

huggingfacehttps://huggingface.co/meta-llama from transformers import AutoTokenizer, LlamaForCausalLMPATH_TO_CONVERTED_WEIGHTS PATH_TO_CONVERTED_TOKENIZER # 一般和模型地址一样model LlamaForCausalLM.from_pretrained(PATH_TO_CONVERTED_WEIGHTS) tokenize…

pyvisa 打包

pyvisa 打包之后,错误提示: D:\dwp_backup\python study\communication_instrument_visa\dist>"D:\dwp_backup\python study\communication_instrument_visa\dist\EMI_Test_ok.exe" Traceback (most recent call last): File "EMI_…

Java和SpringBoot学习路线图

看了一下油管博主Amigoscode的相关视频,提到了Java和SpringBoot的学习路线,相关视频地址为: How To Master Java - Java for Beginners RoadmapSpring Boot Roadmap - How To Master Spring Boot 如下图所示: 当然关于Java和Spr…

fastjson-BCEL不出网打法原理分析

FastJson反序列化漏洞 与原生的 Java 反序列化的区别在于,FastJson 反序列化并未使用 readObject 方法,而是由 FastJson 自定一套反序列化的过程。通过在反序列化的过程中自动调用类属性的 setter 方法和 getter 方法,将JSON 字符串还原成对…

鸿蒙开发系列教程(五)--ArkTS语言:组件开发

1、基础组件 组件API文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V2/84_u58f0_u660e_u5f0f_u5f00_u53d1_u8303_u5f0f_uff09-0000001427744776-V2 查看组件API 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 容…

状态管理库之 mobx

一文快速上手 mobx! 一、概述 mobx 是一个简单的可拓展的状态管理库,无样本代码风格简约不推荐使用装饰器语法可以运行在任何支持 es5 的环境中,包含浏览器和 node 二、核心概念 2.1 observable 被 mobx 跟踪的状态 2.2 action 通过某个…

【leetcode】回溯总结

本文内容来自于代码随想录https://www.programmercarl.com/ 思想 一棵树中的纵向遍历结束回到上一层的过程,比如: 这个过程通常回伴随恢复现场的过程。 模板 void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择:本层集…

如何在Docker下部署MinIO存储服务通过Buckets实现文件的远程上传

📑前言 本文主要是Linux下通过Docker部署MinIO存储服务实现远程上传的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 &#…

Netty-Netty源码分析流程图

netty服务端流程图 补充

线性表--顺序表

目录 1.什么是顺序表 2.动态顺序表实现 2.1动态顺序表结构体 2.2初始化 2.3打印验证函数 2.4判断是否扩容,按需扩容 2.5头插/尾插 2.6头删/尾删 2.7指定位置插入数据/指定位置删除数据 3.动态顺序表代码 1.什么是顺序表 线性表是n个具有相同特性的数据元素的…

Jmeter的文件参数化:CSV数据文件设置和_CSVRead函数

一、CSV数据文件设置 1、简介 CSV数据文件配置(CSV Data Set Config)可以将CSV文件中数据读入自定义变量中 Jmeter中CSV数据文件配置的界面如下图所示: 其中: (1)文件编码 文件的编码格式,与所…

SpringBoot项目整合MybatisPlus并使用SQLite作为数据库

文章目录 SQLite介绍搭建项目创建项目修改pom.xml SQLite查看SQLite是否安装创建数据库创建数据表IDEA连接SQLitenavicat连接SQLite数据库 后端增删改查接口实现MybatisX生成代码不会生成看这个UserUserMapperUserMapper.xml controller创建配置文件application.yaml启动类Incr…

halcon胶水过少检测

简单算法识别胶水不足的情况. dev_set_draw (‘margin’) dev_set_line_width (3) dev_set_color (‘green’) dev_get_window (WindowHandle) set_system (‘filename_encoding’, ‘utf8’) list_files (‘胶水污染残缺’, [‘files’,‘follow_links’], ImageFiles) tuple…

AI短视频制作:创意与技术的完美结合

文章目录 一、充分了解AI技术的应用范围和优势二、创意策划,确定作品主题和风格三、素材收集,丰富作品内容四、特效制作,提升作品视觉效果五、配音处理,增强作品表现力六、作品发布,扩大作品传播范围《AI短视频制作一本…

【数据结构】可持久化线段树(主席树)

文章目录 接下来是一道例题再放一道标记永久化主席树再加一道主席树在线处理 主席树 即为 可持久化线段树,是一种可以记录每一个修改版本的数据结构。 难以进行区间的修改操作 主席树存储的信息 struct Node {int l, r; // 左结点和右结点int cnt; // 区间内有多…

1.php开发-个人博客项目文章功能显示数据库操作数据接收

(2022-day12) #知识点 1-php入门,语法,提交 2-mysql 3-HTMLcss ​ 演示案例 博客-文章阅读功能初步实现 实现功能: 前端文章导航,点入内容显示,更改ID显示不同内容 实现步骤&#xff1…