作业调度算法(含详细计算过程)和进程调度算法浅析

一.作业调度

作业调度算法需要知道以下公式

周转时间=完成时间 - 到达时间

带权周转时间=周转时间/运行时间

注:带权周转时间越大,作业(或进程)越短;带权周转时间越小,作业(或进程)越长。带权周转时间越小越好

平均周转时间=作业周转总时间/作业个数;

平均带权周转时间=带权周转总时间/作业个数

同时,作业调度算法会涉及一个概念:

饥饿:

作业饥饿(Job Starvation)或被饿死(Starvation)就是一个或多个低优先级的作业无法获得系统资源,无法得到执行的机会,从而长时间处于等待状态的情况。这种情况下,这些作业就会被饿死或者饥饿,因为它们无法得到所需的系统资源而无法完成执行。
 

看如下例子:

1.FCFS(先来先服务算法)

谁先到达,谁就先运行,所以作业运行顺序为1->2->3->4

第一个作业完成后,第二个作业才能开始运行,所以第二个作业开始的时间是10:00

以此类推得到:

先来先服务算法的特点

先来先服务算法实现简单,但是可以看到排在长作业后面的短作业需要等待很长时间,对短作业来说用户体验不好。

是否导致饥饿:此算法较为公平,不会导致饥饿

2.SJF(短作业优先调度算法)

谁的运行时间最短,谁就先运行

首先也从第一个开始,因为2,3,4都没有到达

第一个的完成时间是10:00,这时候2,3,4都到达了,但是作业3的运行时间最短,所以接下来运行作业3

作业4的运行时间最短,所以接下来运行作业4,以此类推,最终的执行顺序为:1->3->4->2

SJF算法的特点

短作业优先算法拥有“最短的”平均等待时间和平均周转时间

是否导致饥饿:此算法会导致饥饿,如果有源源不断的短作业进来,可能使长作业长时间得不到服务。如果一直得不到服务,则称为“饿死”。

注:在实际情况下,作业的运行时间往往是由用户提供的估计值,并不一定真实准确。这意味着在实际应用中,我们可能无法完全实现真正的短作业优先。

3.HRRF(高响应比优先算法)

(等待时间+运行时间)/运行时间

注:较高的响应比意味着作业等待时间相对较短,或者作业的服务时间相对较长,这可以确保作业尽快得到响应并完成。因此,响应比越高通常表示作业具有更好的调度优先级

从作业1开始:

若下一个执行的作业为作业2,那么响应比就是:(10:00-8:30)+40/40=13/4

若下一个执行的作业为作业3,那么响应比就是:(10:00-9:00)+25/25=85/25

若下一个执行的作业为作业4,那么响应比就是:(10:00-9:30)+30/30=2

因为85/25>13/4>2,下一个执行的作业是作业3

执行完后,要重新计算高响应比,响应比最高的运行,得到

若下一个执行的作业为作业2:(10:25-8:30)+40/40=155/40=3.875

若下一个执行的作业为作业4:(10:25-9:30)+30/30=85/30=2.8333...

所以下一个执行的作业为作业2,则最终执行的顺序是:1->3->2->4

高响应比优先算法的特点

综合考虑了等待时间和运行时间(要求服务时间)
等待时间相同时,要求服务时间短的优先(SJF 的优点)
要求服务时间相同时,等待时间长的优先(FCFS 的优点)
对于长作业来说,随着等待时间越来越久,其响应比也会越来越大,从而避免了长作业饥饿的问题。

二.进程调度

以上的作业调度,我没有提到进程二字,就是怕大家混淆起来,进程调度和作业调度是两个不同的调度方法:

1、作业调度
作业调度又称为高级调度,频度较低。其主要工作是将位于外存后备队列中的某个(或某几个)作业调入内存,排在就绪队列上。注意了,这个时候仅仅是将作业调入内存,并为作业创建进程、分配资源,此时进程处于就绪态,并没有执行。


2、进程调度
进程调度又称为低级调度,是最基本的、频度最高的调度方式。其主要任务是从就绪队列中选取一个(或几个)进程,并分配处理机的过程,这时候才可以理解为“执行”。


3、区别
作业调度和进程调度最主要的区别在于,前者是为作业建立进程的过程,是将作业由外存调入内存的过程;而后者整个过程并没有跑出内存的范围,是将就绪态的进程变为运行态的过程。

进程调度也有饥饿的概念,同时进程调度中还有一个重要的概念:

抢占式/非抢占式:

抢占式调度:
•抢占式调度是指操作系统允许正在运行的进程被强制中断,以便让更高优先级的进程获得CPU资源并开始运行。
•在抢占式调度中,操作系统会定期检查所有正在运行的进程的优先级,并且如果有更高优先级的进程出现,操作系统会立即中断当前进程的执行,将CPU资源分配给更高优先级的进程。
•例如,在抢占式调度中,当一个进程正在执行一个关键任务时,如果有更高优先级的进程需要运行,操作系统会立即中断当前进程的执行,并将CPU资源分配给更高优先级的进程。

非抢占式调度:

•非抢占式调度是指一旦一个进程获得处理器,它就会一直运行直到完成或者自愿让出CPU。
•在非抢占式调度中,高优先级的进程必须等待当前正在运行的进程结束或者主动让出CPU后,才能获得CPU资源并开始运行
•例如,在非抢占式调度中,当一个进程正在执行一个关键任务时,其他高优先级的进程需要等待该进程完成或者主动让出CPU,才能获得CPU资源并开始执行。

正因为进程调度有这两个性质,所以除了拥有作业调度的三种算法(FCFS,SJF,HRRF),还有其他常见的算法:

1.SRTF(最短剩余时间优先调度算法)

SRTF与SJF最大的区别就是其是抢占式的算法。
运行原理
:每当有进程加入就绪队列改变时就需要调度,如果新到达的进程剩余时间比当前运行的进程剩余时间更短,则由新进程抢占处理机,当前运行进程重新回到就绪队列等待下一次调度。

2.RR(时间片轮转调度算法)

算法思想:公平地、轮流地为各个进程服务,让每个进程在一定时间间隔内都可以得到响应。
调度程序每次把CPU分配给就绪队列首进程/线程使用一个时间间隔(称为时间片),就绪队列中的每个进程/线程轮流运行一个时间片。

算法规则:按照各进程到达就绪队列的顺序,轮流让各个进程执行一个时间片(每次选择的都是排在就绪队列队头的进程)。若进程未在一个时间片内执行完,则剥夺处理机,将进程重新放到就绪队列队尾重新排队。
时间片的选取:时间片大小的确定要从进程个数、切换开销、系统效率和响应时间等方面考虑。
常用轮转法:
① 最常用的轮转法是等时间片轮转法,每个进程轮流运行相同时间片。
② 改进的轮转法对于不同的进程分配不同的时间片,时间片的长短可以动态修改。

是否抢占式:抢占式

是否会产生饥饿:不会

优点:公平,响应快,适用于分时操作系统。
缺点:由于高频率的进程切换,因此有一定开销;不区分任务的紧急性。

对于时间片轮转调度算法的实现,建议观看如下视频:

RR时间片轮转调度算法 ~相同到达时间_哔哩哔哩_bilibili

RR时间片轮转调度算法~不同到达时间_哔哩哔哩_bilibili

时间片太大或太小
① 如果时间片太大,使得每个进程都可以在一个时间片内就完成,则时间片轮转调度算法退化为先来先服务调度算法,并且会增大进程的响应时间。
② 如果时间片太小,进程调度、切换是有时间代价的,会导致进程切换过于频繁,系统会花大量的时间来处理进程切换,从而导致实际用于进程执行的时间比例减小。

3.PSA(优先级调度算法)

算法思想:根据任务的紧急程度来决定处理顺序。
算法规则:根据确定的优先级选取进程/线程,每次总是选择就绪队列中优先级最高者运行。
用户进程/线程优先级的规定者有两种:
用户:用户自己提出优先级,称为外部指定法。优先级越高,费用越高。
系统:由系统综合考虑有关因素来确定用户进程/线程的优先级,称为内部指定法。
进程/线程优先级的确定方式:
根据优先级是否随时间而变,进程/线程优先级的确定有静态和动态两种方式:
静态优先级:在进程/线程创建时确定,此后不再改变。优先级主要由进程类型、资源需求、时间需求和用户需求决定。
优点:比较简单,开销小。
缺点:不够公平不太灵活,可能出现优先级低的作业/进程长时间得不到调度的情况。
动态优先级:随时间而变,基本原则是:
a. 正在运行的进程/线程随着占有CPU时间的增加优先级逐渐降低;
b. 就绪队列中等待CPU的进程/线程随着等待时间增加优先级逐渐提高。
优点:公平性好,灵活,资源利用率高。
缺点:需要花费比较多的执行程序时间,因而花费的系统开销比较大。

是否可抢占:抢占式,非抢占式都有。

是否导致饥饿:会
若源源不断地有高优先级进程到来,则可能导致饥饿。
区别在于:非抢占式只需在进程主动放弃处理机时进行调度即可,而抢占式还需在就绪队列变化时,检查是否发生抢占。
优点:用优先级区分紧急程度、重要程度,适用于实时操作系统。可灵活地调整对各种作业/进程的偏好程度。
缺点:若源源不断地有高优先级进程到来,则可能导致饥饿。

优先级调度算法:

速通操作系统优先级调度算法_哔哩哔哩_bilibili

4. MLFQ(多级反馈队列调度算法)

算法思想:对其他调度算法的折中权衡。
算法规则:
1、建立多级就绪进程队列,各级队列优先级从高到低,时间片从小到大。每个队列赋予不同优先级,较高优先级队列一般分配给较短的时间片。

2、新进程到达时先进入第1级队列,按先来先服务原则排队等待被分配时间片,若用完时间片进程还未结束,则进程进入下一级队列队尾;若此时已经在最下级的队列,则重新放回该队列队尾。

3、处理器调度每次先从高优先级就绪队列中选取可占有处理器的进程,只有在选不到时,才从较低优先级就绪队列中选取进程。即只有第k级队列为空时,才会为k+1级队头的进程分配时间片。

4、任务可以根据自身的行为(如CPU使用时间、等待时间等)在不同的队列之间移动,实现动态优先级的调整。

是否可抢占:抢占式
在k级队列的进程运行过程中,若更上级的队列(1~k-1级)中进入了一个新进程,则由于新进程处于优先级更高的队列中,因此新进程会抢占处理机,原来运行的进程放回k级队列队尾。

是否导致饥饿:会
优点:对其他调度算法的折中权衡。
对各类进程相对公平(FCFS的优点);
短进程只用较少的世界就可完成(SPF的优点);
每个新到达的进程都可以很快得到响应(RR的优点);
不必实现估计进程的运行时间(避免用户作假);
可灵活地调整对各类进程的偏好程度,比如:CPU密集型进程、I/O密集型进程(拓展:可以将因I/O而阻塞的进程重新放回原队列,这样I/O型进程就可以保持较高优先级)。
缺点:可能会导致饥饿

多级反馈队列调度算法

【进程管理】多级反馈队列调度算法_哔哩哔哩_bilibili

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

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

相关文章

docker-centos中基于keepalived+niginx模拟主从热备完整过程

文章目录 一、环境准备二、主机1、环境搭建1.1 镜像拉取1.2 创建网桥1.3 启动容器1.4 配置镜像源1.5 下载工具包1.6 下载keepalived1.7 下载nginx 2、配置2.1 配置keepalived2.2 配置nginx2.2.1 查看nginx.conf2.2.2 修改index.html 3、启动3.1 启动nginx3.2 启动keepalived 4、…

7-8 报销

年底,报销都挤在一堆,财务忙得不可开交。每个报销表包括姓名,各项费用的金额。对于每个报销单,这里规定按如下要求处理: 金额高的优先处理;若金额相等时,则姓名字典序小的优先处理;…

call,apply,bind

1.这三个方法都能改变this的指向 2.代码实战 let obj1 {name: "小红",age: 20,fn: function () {console.log(当前this的指向,this);console.log(我叫${this.name},今年${this.age}岁);},};obj1.fn(); 这里的代码,obj1是一个对象,里面有属性name和age 正常情况下我…

深入理解网络中断:原理与应用

🔭 嗨,您好 👋 我是 vnjohn,在互联网企业担任 Java 开发,CSDN 优质创作者 📖 推荐专栏:Spring、MySQL、Nacos、Java,后续其他专栏会持续优化更新迭代 🌲文章所在专栏&…

大数据技术8:StarRocks极速全场景MPP数据库

前言:StarRocks原名DorisDB,是新一代极速全场景MPP数据库。StarRocks 是 Apache Doris 的 Fork 版本。StarRocks 连接的多种源。一是通过这个 CDC 或者说通过这个 ETL 的方式去灌到这个 StarRocks 里面;二是还可以去直接的和这些老的 kafka 或…

C++ 模拟实现vector

目录 一、定义 二、模拟实现 1、无参初始化 2、size&capacity 3、reserve 4、push_back 5、迭代器 6、empty 7、pop_back 8、operator[ ] 9、resize 10、insert 迭代器失效问题 11、erase 12、带参初始化 13、迭代器初始化 14、析构函数 完整版代码 一、…

MyBatis 四大核心组件之 Executor 源码解析

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🌺 仓库主页: Gitee 💫 Github 💫 GitCode 💖 欢迎点赞…

【IDEA】IntelliJ IDEA中进行Git版本控制

本篇文章主要记录一下自己在IntelliJ IDEA上使用git的操作,一个新项目如何使用git进行版本控制。文章使用的IDEA版本 IntelliJ IDEA Community Edition 2023.3,远程仓库为https://gitee.com/ 1.配置Git(File>Settings) 2.去Git…

Leetcode刷题详解——仅仅反转字母

1. 题目链接:917. 仅仅反转字母 2. 题目描述: 给你一个字符串 s ,根据下述规则反转字符串: 所有非英文字母保留在原有位置。所有英文字母(小写或大写)位置反转。 返回反转后的 s 。 示例 1: 输…

docker-ubuntu中基于keepalived+niginx模拟主从热备完整过程

一、环境准备 🔗在Ubuntu中安装docker 二、主机 1、环境搭建 1.1 镜像拉取 docker pull ubuntu:16.041.2 创建网桥 docker network create -dbridge --subnet192.168.126.0/24 br11.3 启动容器 docker run -it --name ubuntu-1 --privileged -v /home/vac/l…

PPP协议概述与实验示例

PPP协议概述与实验示例 概述 PPP(Point-to-Point Protocol)是一种用于在点对点连接上传输多协议数据包的标准方法。它已经成为最广泛使用的互联网接入数据链路层协议,可以与各种技术结合,如ADSL、LAN等,实现宽带接入…

【rabbitMQ】rabbitMQ控制台模拟收发消息

目录 1.新建队列 2.交换机绑定队列 3.查看消息是否到达队列 总结: 1.新建队列 2.交换机绑定队列 点击amq.fonout 3.查看消息是否到达队列 总结: 生产者(publisher)发送消息,先到达交换机,再到队列&…

phpstudy小皮(PHP集成环境)下载及使用

下载 https://www.xp.cn/download.html直接官网下载即可,下载完解压是个.exe程序,直接点击安装就可以,它会自动在D盘目录为D:\phpstudy_pro 使用 phpMyAdmin是集成的数据库可视化,这里需要下载一下,在软件管理-》网站程…

linux逻辑卷LVM

创建LVMVG管理LV扩容 6.2.6 逻辑卷LVM LVM是Logical Volume Manager 的简称,译为逻辑卷管理,它是Linux下对硬盘分区的一种管理机制。LVM适合于管理大存储设备,并允许用户动态调整文件系统的大小。此外,LVM的快照功能可以帮助我们快…

第九天:信息打点-CDN绕过篇amp;漏洞回链amp;接口探针amp;全网扫描amp;反向邮件

信息打点-CDN绕过篇 cdn绕过文章:https://www.cnblogs.com/qiudabai/p/9763739.html 一、CDN-知识点 1、常见访问过程 1、没有CDN情况下传统访问:用户访问域名-解析服务器IP–>访问目标主机 2.普通CDN:用户访问域名–>CDN节点–>…

设计模式-外观模式

设计模式专栏 模式介绍模式特点应用场景外观模式和里氏替换原则的区别代码示例Java实现外观模式python实现外观模式 外观模式在spring中的应用 模式介绍 外观模式(Facade Pattern)是一种结构性设计模式,它隐藏了系统的复杂性,并向…

[后端卷前端2]

绑定class 为什么需要样式绑定呢? 因为有些样式我们希望能够动态展示 看下面的例子: <template><div><p :class"{active:modifyFlag}">class样式绑定</p></div> </template><script>export default {name: "goo…

Docker中的常见命令

Docker开机自启 systemctl enable dockerDocker容器开机自启 docker update --restartalways [容器名/容器id]案例&#xff1a;docker操作nginx 拉取Nginx镜像 docker pull nginx查看镜像 docker images创建并运行Nginx容器 docker run -d --name nginx -p 80:80 nginx查…

(NeRF学习)3D Gaussian Splatting Instant-NGP环境配置

学习参考&#xff1a; 3D gaussian splatting 安装步骤拆解23.9月3D Gaussian Splatting入门指南【五分钟学会渲染自己的NeRF模型&#xff0c;有手就行&#xff01;】 三维重建instant-ngp环境部署与colmap、ffmpeg的脚本参数使用 一、3D Gaussian Splatting &#xff08;一&…

airserver mac 7.27官方破解版2024最新安装激活图文教程

airserver mac 7.27官方破解版是一款好用的airplay投屏工具&#xff0c;可以轻松将ios荧幕镜像&#xff08;airplay&#xff09;至mac上&#xff0c;在mac平台上实现视频、音频、幻灯片等文件资源的接收及投放演示操作&#xff0c;解决iphone或ipad的屏幕录像问题&#xff0c;满…