小林coding学习笔记(进程调度算法)

news/2024/9/20 2:45:38/文章来源:https://www.cnblogs.com/ZhangWuyue/p/18416253

//进程调度算法
进程调度算法是CPU通过进程调度算法决定某个时刻去调用哪个进程到CPU上运行的算法
1、先来先服务调度算法
每次从就绪队列的队头调度到CPU上运行,直到进程退出或被阻塞,才会继续从队列中调度进程运行。
特点:对短作业不利,对长作业有利,无法平衡短作业与长作业。
2、最短作业优先调度算法
每次调度就绪队列中运行时长最短的进程,直到进程退出或被阻塞,才会继续从队列中调度进程运行。
特点:增加了吞吐量,对短作业有利,但对长作业不利,无法平衡短作业与长作业。
3、高响应比优先调度算法
每次进行进程调度时,先计算就绪队列中的响应比,选择响应比最高的进程调度到CPU上。
响应比=(等待时间+要求服务时间)/要求服务时间,当等待时间相同时,短作业服务时间短,则响应比高,对短作业有利。当要求服务时间相同时,等待时间越长,则响应比越大,对长作业有利。
所以高响应比优先调度算法兼顾了短作业与长作业。
4、时间片调度算法
最古老、最广、最简单、公平的方法就是时间片调度算法
就是就绪队列中的每个进程被调度到CPU上运行的时间都是固定的一个时间片(时钟中断),如果进程运行时间到了,那么CPU就会释放该进程,让下一个进程调度到CPU。如果进程在时间片结束前阻塞或结束,则CPU立即进行切换。
5、优先级调度算法
对于计算机来说,实际应用中有些进程是更为紧迫和更为需要的,所以此时就产生了优先级的概念,优先级调度就是从就绪队列中选择优先级高的任务调度到CPU上运行。
在消息队列中(kafka)中设计的有优先级队列这种模块,C++里面使用priority_queue<pair<int,function<void()>>来实现任务的优先级,第一个参数int代表优先级,第二个参数function<void()>代表任务函数。
静态优先级是一开始设置好优先级,而动态优先级是根据运行过程中,如果运行时间增加则降低优先级,等待时间增加就提升优先级。
6、多级反馈队列调度算法
多级即多个队列,从上到下优先级降低的多个队列
反馈表示当有新的进程加入优先级较高的队列时,运行在CPU上的进程会被阻塞,然后CPU调度新进程。

其结构如上图所示,从上到下队列优先级依次降低,且优先级越高的队列时间片越短

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

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

相关文章

spring mvc详细讲解(前后端分离模式)

在前后端分离模式下,Spring MVC 的作用主要集中在处理后端的业务逻辑和 API 接口,而不再直接管理视图部分。也就是说,Spring MVC 的重点是如何处理客户端的请求并返回数据(通常以 JSON 或 XML 格式),而视图渲染交给前端框架(如 Vue.js、React 等)来完成。 下面是针对前…

关于API淘宝数据接口

在当今数字化商业时代,淘宝作为全球领先的电商平台,提供了丰富的API接口,使开发者能够高效地获取和管理电商数据。淘宝API接口不仅简化了与淘宝平台的交互,还为商家提供了强大的数据支持,帮助他们更好地分析市场趋势、优化店铺运营、提升用户体验。 淘宝API接口概述 淘宝A…

解决 Debian下 nvm ls-remote 列表只出现iojs版本的问题

1.进入 .bashrc 里vi ~/.bashrc2. o键新开一行增加下面内容export NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist 3.重载nvm配置source ~/.bashrc4.验证配置是否修改成功,如图则表示成功echo $NVM_NODEJS_ORG_MIRROR 5.再次查看可安装的node版本nvm ls-remote 备注:如果上…

解决 nvm ls-remote 列表只出现iojs版本的问题

1.进入 .bashrc 里vi ~/.bashrc2. o键新开一行增加下面内容export NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist 3.重载nvm配置source ~/.bashrc4.验证配置是否修改成功,如图则表示成功echo $NVM_NODEJS_ORG_MIRROR 5.再次查看可安装的node版本nvm ls-remote

Arrays类的使用

1.Arrays 在IDEA中有一个叫Arrays的类,它可以执行数组的一系列操作 2.Arrays.toString 该代码用于执行数组的打印,因为数组的打印用sout并不能输出出来(数组面向于对象),所以得用该代码输出3.Arrays.sort 将数组的数字从小到大排序4.Arrays.fill 将数组中的数字用其他数字…

跨界融合,GIS如何赋能游戏商业——以《黑神话:悟空》为例

在数字化时代,地理信息系统(GIS)技术正以其独特的空间分析和可视化能力,为游戏产业带来革命性的变革。《黑神话:悟空》作为中国首款3A级别的动作角色扮演游戏,不仅在游戏设计和技术上取得了突破,更在商业模式上展现了跨界融合的新路径。 1. GIS技术在游戏设计中的应用《…

如何在windows中设置系统代理

1.左下角搜索设置或直接搜索代理 2.Gemini后台复制需要访问的那个设备IP 3.windows上设置代理 4.使用提示 1.不用的时候清取消此代理,避免你的网络都走此代理; 2.要走你本地电脑的网络的话,可以加上方的忽视操作少侠,我看你气度不凡天赋异禀,骨骼精奇,这么帅,来了就帮推荐一…

常回家看看之house_of_cat

house_of_cat 前言: house of cat 这个利用手法和前面提到的 house of kiwi ,和 house of emma 利用的手法是一个链子,当程序无法通过main函数返回时候,或者程序不能显性调用exit函数的时候,我们可以通过 __malloc_assert 来刷新IO流,当然这个函数在2.35之后移除了刷新IO…

mysql-v8.x设置权限可以远程访问

PS:mysql-v8.4.2不支持原先的权限修改方式了,需要先创建再分配才行mysql -u root -p #先登录 SELECT user,host FROM mysql.user; #看下当前的权限 CREATE USER your_name@% IDENTIFIED BY your_password; #需要创建用户 grant all privileges on *.* to your_name@%; #分配权…

04: 代理模式

代理模式是一种对象结构型模式,在该模式中引入了一个代理对象,在客户端和目标访问对象之间起到中介的作用。代理对象可以屏蔽或删除客户不想访问的内容和服务,也可以根据客户需求增加新的内容和服务1. 案例: B帮助A追求C 2. 代理模式结构 - Subject(抽象主题角色): 声明了…

DAS安装失败之This product requires Administrator Privileges

使用管理员权限安装DAS仍然失败,可能是Server服务被优化禁用了,导致软件调用的检测管理员权限方法失败,从而“错误”地认为没有开启管理员权限。 在服务中开启或者注册表中修改LanmanServer启动选项,就可以成功安装了。版权声明:未经本人授权禁止转载,转载时请注明原博客…

用笔记来记录遇到的问题:发布版本和非发布版本遇到的问题

这两天接到一个任务,把中秋节的的宣传广告发到app上去。 没想到一个项目运营了这么久,竟然没有这种功能 我给他们做了3个: 开屏广告、首页弹出广告和客服机器人形象换成小兔子。 搞完之后,我发布版本给他们测试 谁知道我本地运行得好好的,为啥发布给他们的版本没有效果! …