计算机网络-调度算法-2(时间片轮转 优先级调度算法 多级反馈队列调度算法 多级队列调度算法)

文章目录

  • 总览
  • 时间片轮转
    • 时间片大小为2
    • 时间片大小为5
    • 若按照先来先服务算法
  • 优先级调度算法
    • 例题( 非抢占式优先级调度算法)
    • 例题( 抢占式优先级调度算法)
    • 补充
  • 思考
  • 多级反馈队列调度算法
    • 例题
  • 小结
  • 多级队列调度算法

总览

在这里插入图片描述

时间片轮转

分时操作系统是一种允许多个用户共享一台计算机资源的操作系统,它通过时间片轮转的方式为每个用户提供服务
注意其调度算法没有区分任务的紧急程度
在这里插入图片描述

时间片大小为2

在这里插入图片描述
注意此时默认新到达的进程先进入就绪队列,下处理机的进程后进入就绪队列
在这里插入图片描述
P2上处理机,下处理机,此时P3也刚进入就绪队列
在这里插入图片描述
此时P1上处理机,时间片内P4进入就绪队列
在这里插入图片描述
P1时间片结束,进入就绪队列
在这里插入图片描述
P3上时间片,此时时间片内主动放弃,此时也会发生调度
在这里插入图片描述
P2上处理机
在这里插入图片描述
P4上时间片,结束后再放入就绪队列
在这里插入图片描述
P1上处理机,时间片内完成,主动放弃,此时P4上处理机
在这里插入图片描述
此时由于就绪队列为空,所以继续执行P4一个时间片
在这里插入图片描述

时间片大小为5

在这里插入图片描述

若按照先来先服务算法

在这里插入图片描述
先来先服务(FCFS)算法可能会导致进程响应时间增大的原因是缺乏优先级考虑:FCFS算法在选择进程时,仅仅基于进程到达的顺序,而不考虑进程的优先级或者所需的服务时间。这意味着一些需要快速响应的短进程可能会因为排在长进程后面而被延迟处理。

在这里插入图片描述

优先级调度算法

实时操作系统(RTOS)是一种专门为满足实时性要求而设计的操作系统,它能够在外部事件发生时快速接受并处理相应的数据,确保在规定的时间内完成任务并做出响应

在这里插入图片描述

例题( 非抢占式优先级调度算法)

在这里插入图片描述

例题( 抢占式优先级调度算法)

在这里插入图片描述

补充

就绪队列未必只有一个,可以按照不同优先级来组织:有些操作系统可以设置多个就绪队列,每个队列对应不同的优先级。
把优先级高的进程排在更靠近队头的位置:有些操作系统会按照优先级高低在一个就绪队列中动态排队

频繁IO型操作的进程提升其优先级可使得让IO设备尽早投入工作,从而提高资源利用率
在这里插入图片描述

思考

- [ ] List item

多级反馈队列调度算法

实际应用中也可能是非抢占式的

公平:每个进程刚进来都是优先级最高的(优先被处理的)
及时响应:每个新到达的进程都是优先级最高,都会很快被响应
短进程花费时间更少:短进程经过的队列少,相比于长进程,其总共用的时间也少些
不必实现估计进程的运行时间:因为不会按照用户自己定义的时间来决定谁优先执行,都是统一按照队列的流动来的,直接会执行,所以用户造假也没用
灵活调整优先级:如使得IO密集型进程执行完该级的时间后,再将该进程放入原队列,保持其优先级

饥饿:源源不断短进程到来会导致长进程无法得到服务

在这里插入图片描述

例题

P0进入第1级队列,第一级队列的时间片大小只有一个时间片大小,P1执行完一个时间片后,此时还没有结束,便进入下一级队列,
在这里插入图片描述
此时P2到达第一级队列,由于第一级队列此时不为空,处理第一级,处理一个时间片后进入下一级队列,放在队尾
在这里插入图片描述
此时第一级队列为空,会给第二级队列分配时间片,第二级队列队头P1出队,此时分配的时间是两个时间片,此时P1的运行时间还没有全部结束,会被放到第三级队列

在这里插入图片描述
此时第二级队列不为空,P2出队列,运行P2,此时运行一个时间片后,P3进入第一级队列,由于此时第一级队列不为空,此时P2的进程被P1强占,然后P3上处理机
在这里插入图片描述
P3运行一个时间片后,运行完成,被调出内存,然后第二级队列队头P2继续运行,此时运行两个时间片总共运行完成
在这里插入图片描述
此时第一二级队列都空,第三级队列的进程上处理机,此时是四个时间片,此时P1运行完四个时间片后还剩一个时间才能运行2完成

在这里插入图片描述
由于此时P1已经在最下面,此时没办法再往下级队列走了,只会放回原队列队尾,然后再次调入
在这里插入图片描述
然后P1再使用四个时间片中的一个时间片即可完成
在这里插入图片描述

小结

在这里插入图片描述

多级队列调度算法

创建进程后根据分类插入某个队列

交互式进程需要及时的响应,所以优先级高于批处理进程
在这里插入图片描述
固定优先级:高优先级队列不空就先运行高优先级,这样会导致如果系统进程内有内容,那么交互式进程就永远不会被响应
时间片划分:每个时间片分为多个部分,然后分给各个队列中的某个进程执行,那么在时间片片内,任何一类的进程都会响应一次

注意这里各个类型队列中还有不同的调度方法,下列是一个举例(各个队列还可以采用不同的调度算法)
系统进程队列中依然存在许多优先级不同的进程,此时系统进程队列采用优先级调度,此时依然会选择优先级高的进程执行
交互式队列采用时间片轮转调度保证各个各个进程都在一定时间内被响应到
批处理队列:先来先服务,因为不关心响应时间

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

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

相关文章

设计模式学习笔记02(小滴课堂)

江湖传言里的设计模式-单例设计模式 单例设计模式中的懒汉方式实战 这种方式是线程不安全的,多个线程同时调用会创建多个对象。 所以我们就要给它加锁: 我们去测试一下: 因为构造函数已经私有化,所以不能直接用new的方式去创建对象。 现在我…

springboot本地测试

文章目录 本地测试引入依赖进入StudentMapper右键点击生成 项目结构 本地测试 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope> </d…

笔记本从零安装ubuntu系统+多种方式远程控制

文章目录 前言ubuntu启动盘Windows远程Ubuntu安装XrdpXrdp卡顿问题解决Xrdp 二次登录会死机的问题Xrdp 卡顿问题 MobaXtermRustDesk 外网远程VNC 远程SSH远程其它设置 总结 前言 我有台老笔记本&#xff0c;上大学第一年的时候买的&#xff0c;现在已经不怎么好用了。打算刷个…

初谈C++:引用

文章目录 前言概述引用特性应用场景做参数做返回值 传值、传引用效率比较引用和指针的区别 前言 在学习C语言的时候会遇到指针&#xff0c;会有一级指针、二级指针…很容易让人头昏脑胀。在C里面&#xff0c;引入了引用的概念&#xff0c;会减少对指针的使用。引用相当于给一个…

日历功能——C语言

实现日历功能&#xff0c;输入年份月份&#xff0c;输出日历 #include<stdio.h>int leap_year(int year) {if(year % 4 0 && year % 100 ! 0 || year % 400 0){return 1;}else{return 0;} }int determine_year_month_day(int *day,int month,int year) {if(mo…

ECharts 图表嵌入表格样式的demo

心累。。。 如果条件允许&#xff0c;还是强烈建议 用 Echartshtml 来实现&#xff08;表格部分由 html 来弄&#xff09;。 这里是调研阶段&#xff0c;想看看 ECharts 原生能做到什么程度。 先贴上样图&#xff1a; 贴上完整代码&#xff1a; <!DOCTYPE html> <…

SQL注入攻击 - 基于布尔的盲注

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 查看靶场详情:SQL Injections 一、判定是否有注入点 以下是一个常见的步骤: 在URL中尝试输入特殊字符,如: " \ -- 等,并观察页面返回的内容。在URL中尝试输入错误的…

MySQL:MVCC原理详解

MySQL是允许多用户同时操作数据库的&#xff0c;那么就会出现多个事务的并发场景。那么再并发场景会出现很多问题&#xff1a;脏读、不可重复读、幻读的问题。 而解决这些问题所用到的方法就是&#xff1a;MVCC 多版本并发控制。而这个MVCC的实现是基于read_view、undoLog 如…

【Linux驱动】块设备驱动(一)—— 注册块设备

针对块设备驱动将分为两部分介绍&#xff0c;第一部分是注册块设备&#xff0c;即将块设备成功添加到内核&#xff1b;第二部分是介绍如何读写块设备&#xff0c;因为没有实际块设备&#xff0c;这里选择使用内存来模拟块设备。 一、认识块设备 1、什么是块设备 块设备针对的…

浏览器内存泄漏排查指南

1、setTimeout执行原理 使用setInterval/setTimeOut遇到的坑 - 掘金 2、Chrome自带的Performance工具 当我们怀疑页面发生了内存泄漏的时候&#xff0c;可以先用Performance录制一段时间内页面的内存变化。 点击开始录制执行可能引起内存泄漏的操作点击停止录制 如果录制结束…

【Java基础】之进程与线程

进程与线程 1. 线程与进程1.1 概念1.2 区别与联系 2. 线程的5种状态和切换2.1 简单介绍2.2 状态切换2.2.1 重点情况 3. 线程中常见的方法4. 线程池 1. 线程与进程 1.1 概念 进程&#xff1a;资源分配的基本单元&#xff0c;如QQ音乐 线程&#xff1a;资源调度的基本单元&…

关于美图秀秀如何给证件照快速抠图换背景操作

日常生活中一些经常处理的小技巧&#xff0c;记录以备以后使用&#xff0c;也方便别人&#xff0c;希望能帮到大家。 1、先导入一张相片&#xff0c;点击AI人像抠图&#xff1b; 2、再点应用当前效果&#xff1b; 3、再点击自动抠图或手动抠图或形状抠图;就可以点击换背景 4、…

Pyecharts绘制多彩气泡图:从基础到高级定制【第49篇—python:多彩气泡图】

Pyecharts绘制多种炫酷气泡图参数说明代码实战 引言 数据可视化是数据分析中不可或缺的一环&#xff0c;而Pyecharts作为一款基于Echarts的Python图表库&#xff0c;提供了丰富的图表类型&#xff0c;其中气泡图是一种常用于展示三维数据的炫酷图表。本文将介绍如何使用Pyech…

Git 介绍 与 配置

Git 介绍 Git是一个分布式版本控制系统&#xff0c;用于跟踪文件的更改和协作开发。它可以管理项目的版本历史记录&#xff0c;并允许多个开发者在同一时间进行并行开发。 解决上图产生的问题就出现了git 分布式版本控制系统 看下图 Git 配置 Git的基本配置包括用户名和电子邮…

leetcode hot100岛屿的最大面积

本题是让求岛屿的最大面积&#xff0c;和上一个题求岛屿的数量类似&#xff0c;也是通过dfs或者bfs进行求解。 那么&#xff0c;首先我们判断dfs函数的参数&#xff0c;需要grid[][]&#xff0c;需要横坐标i&#xff0c;纵坐标j。那么&#xff0c;这里我们求的是最大面积&…

2万块的郎酒,都是我们惯的

文 | 琥珀酒研社 作者 | 五画 当我看到郎酒拿出快2万一瓶纪念酒的时候&#xff0c;我就知道&#xff0c;这场高价酒的喧嚣和吵闹&#xff0c;又到了一个新的高度。 和别的行业有所不同&#xff0c;白酒很少谈智商税&#xff0c;再高的价格&#xff0c;总有个冠冕堂皇的理由。…

Linux文本三剑客---awk经典案例

awk&#xff08;是一种处理文本文件的应用程序&#xff0c;它依次处理文件的每一行&#xff0c;并读取里面的每一个字段。&#xff09; awk 包含几个特殊的内建变量&#xff08;可直接用&#xff09;如下所示&#xff1a; 1、获取根分区剩余大小 #可以使用df -h命令来查看所有…

ElementUI Form:InputNumber 计数器

ElementUI安装与使用指南 InputNumber 计数器 点击下载learnelementuispringboot项目源码 效果图 el-radio.vue 页面效果图 项目里el-input-number.vue代码 <script> export default {name: el_input_number,data() {return {num: 1,num5: 1,num6: 1,num7: 1,num8:…

Logstash 7.7.1版本安装系统梳理

前言 上一篇文章介绍了 《ElasticSearch7.7.1集群搭建 & Kibana安装》&#xff0c;今天说一下 Logstash的安卓和配置&#xff1b; Logstash是一个开源的数据收集引擎&#xff0c;具有实时管道功能。它可以动态地将来自不同数据源的数据统一起来&#xff0c;并将数据标准化…

多线程代码案例之线程池

作者简介&#xff1a; zoro-1&#xff0c;目前大二&#xff0c;正在学习Java&#xff0c;数据结构&#xff0c;javaee等 作者主页&#xff1a; zoro-1的主页 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f496; 创建线程池 public class Poo…