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

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

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

相关文章

建议CSDN不要这样吃人xue馒头

程序员裁员潮:技术变革下的职业危机 2023年以来,谷歌、阿里巴巴各个科技公司都在裁员,程序员的日子也不好过。 讨论在技术变革下,裁员对于程序员的影响到底有多大,是非常有意义的话题,但是为什么要用“一…

Vulnhub-dc5

靶场下载 https://download.vulnhub.com/dc/DC-5.zip 信息收集 # nmap -sn 192.168.1.0/24 -oN live.port Starting Nmap 7.94 ( https://nmap.org ) at 2024-01-21 20:56 CST Nmap scan report for 192.168.1.1 (192.168.1.1) Host is up (0.00057s latency). MAC Address:…

《统计学习方法:李航》笔记 从原理到实现(基于python)-- 第1章 统计学习方法概论

文章目录 第1章 统计学习方法概论1.1 统计学习1.统计学习的特点2.统计学习的对象3.统计学习的目的4.统计学习的方法1.2.1 基本概念1.2.2 问题的形式化 1.3 统计学习三要素1.3.1 模型1.3.2 策略1.3.3 算法 1.4 模型评估与模型选择1…

零基础学Python(5)— 基本数据类型

前言:Hello大家好,我是小哥谈。在内存中存储的数据可以有多种类型。例如:一个人的姓名可以用字符型存储,年龄可以使用数值型存储,婚姻状况可以使用布尔型存储。这里的字符型、数值型、布尔型都是Python语言中提供的基本…

WorkPlus打造高效协作的即时通讯工具,提升工作效率

在当今互联网时代,高效沟通和协作是企业成功的关键要素。而即时通讯成为了实现快速沟通和实时协作的利器。作为一款领先的即时通讯工具,WorkPlus以其卓越的性能和独特的功能,助力企业实现高效的沟通和协作。 为什么选择WorkPlus作为即时通讯…

HCIP 交换

拓扑图&IP划分如下: 第一步,配制VLAN LSW1,LSW2&LSW3同理 检测 LSW1 LSW2 测试

2024年学鸿蒙开发有前途吗?

随着科技的不断发展和智能设备的普及,鸿蒙系统作为华为自主研发的操作系统,正逐渐受到市场的关注。2024年,学鸿蒙开发是否有前途,成为了很多开发者和学生关心的问题。本文将从多个角度分析鸿蒙系统的发展前景,以及学习…

【昕宝爸爸小模块】深入浅出之为什么POI的SXSSFWorkbook占用内存更小

➡️博客首页 https://blog.csdn.net/Java_Yangxiaoyuan 欢迎优秀的你👍点赞、🗂️收藏、加❤️关注哦。 本文章CSDN首发,欢迎转载,要注明出处哦! 先感谢优秀的你能认真的看完本文&…

初识SpringBoot

SpringBoot以约定大于配置的核心思想,默认帮我们进行了很多设置,简单来说就是SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架 。 创建的包一定要在项目主程序入口…

容联七陌x新飞电器|升级高效智能客服,实现满意度跃升新台阶

随着电商兴起,电器行业深入到各大电子商务平台,订单量、咨询量也随之增长,对及时响应、准确回答、高效解决、提高服务品质等需求逐渐增加。 新飞电器选择了与容联七陌合作企业版在线客服产品,共同打造高效、便捷、个性化的优质客…

手把手教你使用MDK仿真调试

当今的嵌入式系统开发领域中,高效的调试工具对于工程师来说至关重要。它们能够极大地减少开发周期中的错误追踪时间,并加速产品的上市时间。MDK作为业界领先的嵌入式开发工具之一,其内置的调试功能被广大开发者所赞誉。这些功能不仅提供了对代…

学术研究的策略与方法——从自身经验谈起

人生短短几十载,别让难过占一半 让导师喜欢和抓狂的学生 让导师喜欢的学生 积极主动、乐观向上 常跟导师汇报进展、讨论问题,主动push导师主动承担实验室的项目、课题、任务等 思维敏捷、有自己的想法见解,充满好奇 遇到问题主动寻求解决办法、提出解决…

分享一个剧本(改编自我)

不知道是不是错过了一个喜欢我的女孩,一个很不错的女孩,当初没勇气表白。去年表白过但女孩表示仅想是永远的朋友,今天翻他的朋友圈发现2021年我生日时,她分享了这首歌曲,还评论Best wishes!!!,高中有一次我…

学单片机前先学什么?

学单片机前先学什么? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!&#xff…

微信小程序从入门到进阶(二)

数据请求 wx.request发起网络请求&#xff0c;请求的方式主要分为两种&#xff1a; get 请求 post 请求 // get请求 // html <view><button type"primary" bindtap"onGetClick">发起 get 请求</button> </view> // js // inde…

一个简单的ETCD GUI工具

使用ETCD没有好用的GUI工具&#xff0c;随手用c#写了一个&#xff0c; 做得好玩的一个ETCD GUI工具&#xff0c;后面加上CLI 工具&#xff0c;类似于 redis Cli工具一样&#xff0c;简化在 Linux下面的操作&#xff0c;不知道有没有必要&#xff0c; git 地址如下&#xff0c;…

【制作100个unity游戏之23】实现类似七日杀、森林一样的生存游戏1(附项目源码)

本篇最终效果演示 文章目录 本篇最终效果演示系列目录前言环境素材绘制地形 实现人物移动指示显示物品名称源码完结 系列目录 【制作100个unity游戏之23】实现类似七日杀、森林一样的生存游戏1&#xff08;附项目源码&#xff09; 【制作100个unity游戏之23】实现类似七日杀、森…

面向对象、封装、继承、多态、JavaBean

二、面向对象 什么是对象 什么是对象&#xff1f;之前我们讲过&#xff0c;对象就是计算机中的虚拟物体。例如 System.out&#xff0c;System.in 等等。然而&#xff0c;要开发自己的应用程序&#xff0c;只有这些现成的对象还远远不够。需要我们自己来创建新的对象。 1. 抽…

鸿蒙开发 状态管理

最近学习鸿蒙开发。 状态管理&#xff1a; State -> Prop 单向传递&#xff1b; stateprop: State -> Prop 单向传递 State -> Link 双向传递&#xff1b;

数据的存储结构

1.类别 顺序存储、链式存储、散列存储、索引存储 2.顺序存储与链式存储的区别 顺序存储链式存储优点 可以实现随机存取每个元素占用最少的空间 充分利用所有存储单元&#xff0c;不会出现碎片现象。缺点 只能使用整块的存储单元&#xff0c;会产出较多的碎片。 需要额外的存…