CHS_04.2.2.3_2+调度器和闲逛进程

CHS_04.2.2.3_2+调度器和闲逛进程

  • 调度器/调度程序(scheduler)
  • 闲逛进程

调度器/调度程序(scheduler)

在这里插入图片描述

调度器 或者叫调度程序 很简单的一个概念 调度程序是操作系统内核的一个非常非常重要的一个程序模块

我们说一个进程会在就绪运行阻塞之间来回横跳那二和三这两个状态的转换

就是由调度程序来负责完成的操作系统的调度程序要决定这样的两个事 首先让谁去运行
这就涉及到这个调度程序 它采用的调度算法是什么
先来先服务 短作业优先 还是时间片轮转等等

那除了让谁运行之外 还需要决定运行多长时间 不同的进程可以给他分配不同的时间变大小

好 所以这就是操作系统的调度程序 反正就是用来管调度的当前运行的进程
要不要让他下处理机 如果他下了处理机 那么接下来就去对列里的这些进程要让谁上处理机运行 这就调度程序要管的一个事情

那之前我们讲过这样的一个知识点 叫做进程的调度时机 那现在我们也可以换一种说法 就是

什么样的事件会触发这个调度程序 他开始工作首先创建一个新进程的时候 这就绪对列是不是会发生改变

那是不是就有可能让这个新进程抢占当前正在运行的这个进程的一个cpu

所以创建新进程的时候 调度程序会出来工作一下 检查下要不要让这家伙上处理机好 那 除此之外 进程退出也会触发调度程序的工作

一个正在运行的进程 他此时决定自己终结自己 对吧 那他终结了自己 处理机不就空闲了吗 因此调度程序就得出来看一下

接下来让谁上处理机工作好 除此之外 一个正在运行的进程阻塞显然也需要调度程序出来看一下 对吧 接下来让谁上处理机

再者 发生i o中断的时候 有可能使得某些阻塞进程回到就绪态 那同样的原理 只要就绪队列一改变 那么调度程序就需要出来检查一下
这新就绪的进程应不应该让他上处理机运行 应不应该让他抢占
等等好另一点值得注意的是

如果我们采用的是非抢占式的调度策略 那么只有运行的进程阻塞
或者退出的时候 才会触发这个调度程序的工作
而如果采用的是抢占式的策略

那么 每个时钟中断或者每k个时钟中断都会触发调度程序出来检查工作

这个很好理解吧 如果是抢占式的高度策略 那就意味着只要就绪队列一改变 那就必须检查一下新旧区的进程 有没有可能抢占当前正在运行的这些进程

那这个检查的动作就是由时钟中断来触发的 每过一个时钟周期 或者每过k个时钟周期都例行的唤醒一下这个调度程序 让他来检查
此时就绪 对列有没有新进程到达 如果有 那么需不需要让他抢占当前正在运行的进程

而如果是非抢占式的调度策略 那只有当前运行的进程他主动放弃处理机的时候 才有必要唤醒这个调度程序 让他检查一下 对吧

平时 只要这个进程还在运行 那我们就没有必要频繁的唤醒这个调度程序 因此 非抢占式的这种调度策略

不会由时钟中断来唤醒调度程序好 这就是所谓的调度程序 你只需要知道它是干嘛的

以及什么时候这家伙会出来工作就可以了 那刚才我们说调度的时候 我们说的是进程的调度
在这里插入图片描述

如果一个系统 它支持的不只是进程 还支持线程 那么调度程序 它调度的对象就变成了线程

在不支持内核级线程的操作系统当中调度程序 它调度的对象依然是进程

而如果支持内核级线程 那么调度的处理对象就是内核级的线程 内核线程会作为调度的基本单位 而进程会作为资源分配的基本单位

好 那这就是所谓的调度程序 接下来看闲逛进程 这个知识点也很简单

闲逛进程

在这里插入图片描述

如果就绪队列当中没有其他的就绪进程的时候 调度程序他就会选中这个闲逛进程 让他上处理及运行

也就是说 实际的系统当中 cpu永远不可能空闲 即便没有其他的就绪进程
那么 至少还有一个闲逛进程 它是可以运行的 就跟你没事干的时候就喜欢抖腿一样

cpu没事干的时候也需要闲逛吗 好 那闲逛进程有这样的一些特性 首先 它的优先级在所有的就绪进程当中是最低的

但凡有其他的一个就绪进程 那肯定不会选择让他上处理运行 另外 我们在计组当中学过零地址的指令 对吧

那闲逛进程通常就要反复的执行一些零地址的指令 零地址的指令就意味着不需要仿存

甚至不需要去访问cpu里面的任何一个寄存器 因此 这种指令也会使得cpu的能耗比较低

让cpu在闲逛的时候更省电 更不耗能 另一方面 在执行完闲逛进程的每一条指令之后

它的这个指令周期的末尾也会例行的检查中断 那这个中断就可以周期性的唤醒调度程序

让调度程序来检查此时到底有没有其他的就绪进程 已经就绪 如果有的话 那么就让闲逛进程下处理机 让其他进程上处理机

好 那这就是闲逛进程 它是调度程序永远可以选择的一个备胎 不离不弃

知道他的作用以及知道他特性就行 这种考点大概率只会在选择题当中出现

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

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

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

相关文章

Java毕业设计-基于ssm的学生社团活动管理系统-第82期

获取源码资料,请移步从戎源码网:从戎源码网_专业的计算机毕业设计网站 项目介绍 基于ssm的学生社团活动管理系统:前端 jsp、jquery、ajax,后端 springmvc、spring、mybaties,角色分为管理员、学生、社团、用户&#…

Python with Office 054 - Work with Word - 7-9 插入图像 (3)

近日详细学习了寒冰老师的很好的书《让Python遇上Office》,总结了系列视频。 这个是其中的一集:如何在Word中插入图像,我会陆续分享其他的视频并加上相应说明 https://www.ixigua.com/7319498175104942643?logTage9d15418663166a05d10

母线槽是什么?需要进行实时监测吗?

母线(bus line)的定义:指用高导电率的铜(铜排)、铝质材料制成的,用以传输电能,具有汇集并且分配电力的产品。 母线槽(busway/busduct)的定义:由铜、铝母线柱…

【开源项目】经典开源项目数字孪生智慧楼宇,分享revit数据

智慧楼宇IBMS可视化运营平台,一个集综合态势、能耗管理、智慧安防和设备运维于一体的智慧管理中心。飞渡科技数字孪生平台集结构、系统、服务、管理及它们之间的最优化组合,使冰冷的混凝土结构演变为智慧化、高效率以及安全性更强的生活和工作空间。 在综…

【PyTorch】记一次卷积神经网络优化过程

记一次卷积神经网络优化过程 前言 在深度学习的世界中,图像分类任务是一个经典的问题,它涉及到识别给定图像中的对象类别。CIFAR-10数据集是一个常用的基准数据集,包含了10个类别的60000张32x32彩色图像。在上一篇博客中,我们已…

SpringBoot教务管理源码

技术框架: springboot mybatis layui shiro jquery react 运行环境: jdk8 mysql5.7 IntelliJ IDEA maven nginx 系统介绍: 教务管理系统是一个基于网络的在线管理平台 , 帮助学校管理教务系统, 用一个账号解决学校教…

央视:人工智能规模达5000亿元,企业超4400家,生成式AI发展进入快车道

2023年,对世界和中国来讲都是非常不平凡的一年。新一代信息技术,如5G、大数据和云计算,正在引领全球科技和产业变革的潮流。这些技术已经深深地融入了经济社会发展的各个领域,推动信息通信业实现了跨越式的发展。 1、AI助力产业发…

鸿蒙开发案列一

1、开发需求 案例app一打开是“Hello world” 界面,开发者点击“Hello world”变成“Hello ArkUI”’ 2、源代码 Entry Component struct Hello {State person_name: string Worldbuild() {Row() {Column() {Text(Hello this.person_name).fontSize(50).fontWei…

Linux环境docker安装Neo4j,以及Neo4j新手入门教学(超详细版本)

目录 1、 图数据库Neo4j简介1.1 什么是图数据库1.2 能解决什么痛点1.3 对比关系型数据库1.4 什么是Neo4j1.5 Neo4j的构建元素 2. 环境搭建2.1 安装Neo4j Community Server2.2 docker 安装Neo4j Community Server2.3 Neo4j Desktop安装 3. Neo4j - CQL使用3.1 Neo4j - CQL简介3.…

1130 - Host 182.244.45,94‘ is not allowed to connect to this MySQL server

1130 - Host 182.244.45,94’ is not allowed to connect to this MySQL server MySQL错误代码 1130 表明连接 MySQL 服务器的主机被拒绝。在这个错误消息中,你提到的是主机 “182.244.45.94”,但可能有一个小错误,IP 地址中的逗号应该是点&…

STK 特定问题建模(六)多跳(Multi-Hop)通信链路仿真(第二部分)

文章目录 简介二、星地收发机设计2.1 上行链路仿真2.2 转发链路仿真 简介 本篇对多跳通信链路进行仿真,对多跳链路可用性、链路质量、误码率等指标进行分析。 仿真考虑两艘地面船舶,一艘位于巴拿马运河区,另一艘位于霍尔木兹海峡&#xff0c…

sqlmap使用教程(3)-探测注入漏洞

1、探测GET参数 以下为探测DVWA靶场low级别的sql注入,以下提交方式为GET,问号(?)将分隔URL和传输的数据,而参数之间以&相连。--auth-credadmin:password --auth-typebasic (DVWA靶场需要登录&#xf…

011 变量

变量的定义 注意事项 作用域 类变量:定义在类中的变量,类的整个生命周期内可用实例变量:定义在类中的变量,类的实例可以使用局部变量:定义在方法中的变量,仅在方法内可以使用 class Dog{// 类变量static …

Android Dialog 显示不全的问题

前言:开发的时候发现一些运行到手机里的dialog显示不全,只显示一半左右 问了下chatgpt发现没有任何头绪,于是开始自己慢慢分析 显示去掉了原有的dialog的style发现问题解决了,但在原有基础上如何解决呢? 先看看xml&a…

shell脚本基础演练

简介 Shell脚本是一种用于自动化执行一系列命令的脚本语言。在Unix和类Unix系统中,常见的Shell包括Bash、Zsh、Sh等。下面我将简要讲解Shell脚本的基本结构和一些常用写法,并附上一些标准的例子。 基础示例 基本结构 #!/bin/bash # 注释: 这是一个简…

vue element MessageBox.prompt this.$prompt组件禁止显示右上角关闭按钮,取消按钮,及点击遮罩层关闭

vue element MessageBox.prompt this.$prompt组件禁止或取消显示右上角关闭按钮,取消按钮,及点击遮罩层关闭 实现效果: 实现代码 MessageBox.prompt(请先完成手机号绑定, 系统提示, {confirmButtonText: 提 交,showClose: false,closeOnClic…

快速了解工业交换机

工业交换机是专门为工业环境设计的数据通信设备。该设备的主要作用是满足工业控制系统对数据通信的要求,实现不同设备之间的数据传输和网络连接。工业交换机在适应恶劣环境、抗干扰和稳定性等方面表现更出色,相较于传统的商用交换机。 它的基本原理是利用…

php:规范小数位数,例:10.00展示为10,10.98展示为10.98

代码 <?php$value 10.98; // 原始的双精度类型值if ($value floor($value)) {$formattedValue number_format($value, 0); // 10.00 转换为 10echo $formattedValue;} else {$formattedValue number_format($value, 2); // 10.98 保持为 10.98echo $formattedValue;} …

Vue-33、Vue中为什么使用render函数

1、main.js //该文件是整个项目的入口文件 //引入Vue import Vue from vue //引入APP组件&#xff0c;他是所有组件的父组件 import App from ./App.vue //关闭Vue是生产提示 Vue.config.productionTip false; //创建Vue实例对象---vm new Vue({render: h > h(App), }).$m…

浪花 - 用户加入队伍

一、接口设计 1. 请求参数&#xff1a;TeamJoinRequest package com.example.usercenter.model.request;import lombok.Data; import java.io.Serializable;/*** 加入队伍请求参数封装类*/ Data public class TeamJoinRequest implements Serializable {private static final…