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

news2024/11/15 12:32:45

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.coloradmin.cn/o/1397806.html

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

相关文章

unity-声音与声效OLD

声音与声效 基本概念audio clipaudio listeneraudio source 基本操作如何创建音频源(背景音乐)如何在测试的时候关闭声音 常用代码一般流程如何在一个物体上播放多个音效如何在代码中延时播放多个声音如何在代码中停止音频的播放如何判断当前是否在播放音…

Web3解密:区块链技术如何颠覆传统互联网

随着区块链技术的崛起,Web3正逐渐成为新一代互联网的代名词。它不再依赖中心化的权威机构,而是通过去中心化、透明、安全的特性,为用户带来更为开放和公正的互联网体验。本文将深入解密Web3,揭示区块链技术如何颠覆传统互联网的基…

Linux搭建dns主从服务器

一、实验要求 配置Dns主从服务器,能够实现正常的正反向解析 二、知识点 1、DNS简介 DNS(Domain Name System)是互联网上的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。…

git提交代码到远端仓库的方法详解

一、何为git git就是版本控制器,就比如说你新建了一个git文件夹,里面用于存放你的C语言实习报告,现在要用git对该文件夹进行接管。当你修改了你的C语言实习报告点击保存之后,就用git的相关命令,提交给git,让…

ctfshow命令执行(web29-web52)

目录 web29 web30 web31 web32 web33 web34 web35 web36 web37 web38 web39 web40 web41 web42 web43 web44 web45 web46 web47 web48 web49 web50 web51 web52 web29 <?php error_reporting(0); if(isset($_GET[c])){$c $_GET[c];if(!preg_match…

go语言(十)---- 面向对象封装

面向对象的封装 package mainimport "fmt"type Hero struct {Name stringAd intLevel int }func (this Hero) Show(){fmt.Println("Name ", this.Name)fmt.Println("Ad ", this.Ad)fmt.Println("Level ", this.Level)}func (thi…

模型的 F1 分数

模型的 F1 分数是一个综合评估模型性能的指标&#xff0c;同时考虑了模型的精确率&#xff08;Precision&#xff09;和召回率&#xff08;Recall&#xff09;。F1 分数的计算公式为&#xff1a; 其中&#xff1a; Precision 是模型正确识别为正例的样本数量与所有被模型识别为…

PYG中torch_scatter, torch_sparse等pip安装包错解决

原安装命令&#xff1a; pip install pyg_lib torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.org/whl/torch- 1.13.0cu117.html报错&#xff1a; 正确安装命令&#xff1a; pip install --no-index pyg_lib torch_scatter torch_sparse …

JavaWeb:servlet+jsp+mybatis商品管理增删改查

文章目录 1、环境准备1.1、创建数据库1.2、创建项目导入依赖1.3、创建包1.4、创建实体类1.5、准备mybatis环境1.6、编写Mybatis工具类1.7、编写主页面 2、功能实现2.1、查询所有2.2、添加功能2.3、修改数据回显2.4、修改数据2.5、删除数据 1、环境准备 1.1、创建数据库 CREAT…

Python文件自动化处理

os模块 Python标准库和操作系统有关的操作创建、移动、复制文件和文件夹文件路径和名称处理 路径的操作 获取当前Python程序运行路径不同操作系统之间路径的表示方式 windows中采用反斜杠(\)作为文件夹之间的分隔符 Mac和Linux中采用斜杠(/)作为文件夹之间的分隔符 把文件…

【用队列实现栈】【用栈实现队列】Leetcode 232 225

【用队列实现栈】【用栈实现队列】Leetcode 232 225 队列的相关操作栈的相关操作用队列实现栈用栈实现队列 ---------------&#x1f388;&#x1f388;题目链接 用队列实现栈&#x1f388;&#x1f388;------------------- ---------------&#x1f388;&#x1f388;题目链…

React Store及store持久化的使用

1.安装 npm insatll react-redux npm install reduxjs/toolkit npm install redux-persist2. 使用React Toolkit创建counterStore并配置持久化 store/modules/counterStore.ts&#xff1a; import { createSlice } from reduxjs/toolkit// 定义状态类型 interface Action {…

4个值得使用的免费爬虫工具

在信息时代&#xff0c;数据的获取对于各行业都至关重要。而在数据采集的众多工具中&#xff0c;免费的爬虫软件成为许多用户的首选。本文将专心分享四款免费爬虫工具&#xff0c;突出介绍其中之一——147采集软件&#xff0c;为您揭示这些工具的优势和应用&#xff0c;助您在数…

使用Sqoop从Oracle数据库导入数据

在大数据领域&#xff0c;将数据从关系型数据库&#xff08;如Oracle&#xff09;导入到Hadoop生态系统是一项常见的任务。Sqoop是一个强大的工具&#xff0c;可以帮助轻松完成这项任务。本文将提供详细的指南&#xff0c;以及丰富的示例代码&#xff0c;帮助了解如何使用Sqoop…

什么是低代码(Low-Code)?低代码平台的适用人群

低代码平台是一种革命性的工具&#xff0c;它让非专业的开发人员也能轻松创建应用程序。通过直观的可视化界面和拖放功能&#xff0c;开发人员能够轻松地构建和部署应用程序&#xff0c;无需专业的编程知识。低代码平台的出现&#xff0c;降低了应用程序开发的门槛&#xff0c;…

对象存储, 开源MinIO docker-compose.yml 文件

文章目录 python SDK 文档地址&#xff1a;docker-compose.yml 文件控制台使用&#xff1a;应用服务中使用样例&#xff1a; python SDK 文档地址&#xff1a; https://min.io/docs/minio/linux/developers/python/API.html docker-compose.yml 文件 version: 3services:min…

自动化测试:5分钟了解Selenium以及如何提升自动化测试的效果

在快节奏的技术世界里&#xff0c;自动化测试已经成为确保 Web 应用程序质量和性能的重要手段。自动化测试不仅加快了测试过程&#xff0c;还提高了测试的重复性和准确性。Selenium&#xff0c;作为领先的自动化测试工具之一&#xff0c;为测试人员提供了强大的功能来模拟用户在…

站长为什么都说WordPress太复杂不会用要放弃?

网络上经常看到有站长说要放弃WordPress&#xff0c;理由各有不同&#xff0c;比如有些说WordPress太复杂不会用&#xff1b;有些说WordPress是国外建站系统&#xff0c;在国内用来搭建访问速度太慢&#xff1b;也有些说WordPress是针对谷歌优化的&#xff0c;不适合国内的搜索…

springboot知识04

1、集成swaggershiro放行 &#xff08;1&#xff09;导包 &#xff08;2&#xff09;SwaggerConfig&#xff08;公共&#xff09; package com.smart.community.common.swagger.config;import io.swagger.annotations.ApiOperation; import org.springframework.beans.facto…

C语言基础语法跟练 day4

41、牛牛有一个半径为 r 的球&#xff0c;他想知道这个球的体积。 #include <stdio.h> #include<math.h> int main() {float r;scanf("%f",&r);float v (4.0/3)*3.14*pow(r,3);printf("%.2f",v);return 0; } 42、小乐乐比较懒惰&#x…