当前位置: 首页 > news >正文

操作系统--------调度算法篇

目录

一.先来先服务调度算法(FCFS)

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

2.1.SJF调度算法缺点

三.优先级调度算法

3.1优先级调度算法的类型

1.非抢占优先级调度算法

2.抢占优先级调度算法

3.2优先级的类型

3.1静态优先级

3.2动态优先级

3.3高响应比优先调度算法(HRRN)

四.轮转调度算法(RR)

4.1进程切换时机

例题


一.先来先服务调度算法(FCFS)

该算法可用于作业调度,也可用于进程调度

当在作业调度中采用该算法时,系统将按照作业到达的先后次序来进行调度,或者说它会有限考虑在系统中等待时间最长的作业,而不管作业执行时间的长短

补充说明,FCFS调度算法在单处理机系统中已很少作为主要调度算法了,但通常会将它与其他调度算法结合使用,进而形成一种更为有效的调度算法

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

SJF调度算法是以作业的长短来计算优先级的,作业越短,其优先级越高;作业的长短是以作业所要求的运行时间来衡量的

当SJF调度算法用于进程调度时,它将从就绪队列中选择估计运行时间最短的进程,并为之分配CPU运行

2.1.SJF调度算法缺点

1.必须预先知道作业的运行时间

2.对长作业非常不利,长作业的周转时间会明显增强

3.当采用SJF调度算法时,无法实现人机交互

4.SJF调度算法完全没有考虑作业的紧迫程度,故不能保证紧迫性作业能得到及时处理

三.优先级调度算法

基于进程的紧迫程度,由外部赋予进程相应的优先级的,会根据该优先级进行调度。这样可以保证紧迫性进程优先运行。

优先级调度算法可用于作业调度,也可用于进程调度。当该算法用于作业调度时,系统将从后备队列中选择优先级最高的作业装入内存;当该算法用于进程调度时,系统将从就绪队列中选择具有最高优先级的进程在CPU运行

3.1优先级调度算法的类型

1.非抢占优先级调度算法

该算法规定,一旦把处理机分配给就绪队列中优先级最高的进程,在进程便会一直执行下去,直至完成或者当该进程因发生某事件而放弃处理器时,系统方将处理机重新分配给优先级次高的进程

2.抢占优先级调度算法

该算法规定再把处理机分配给优先级最高的进程,并使之执行时只要出现另一个优先级更高的进程,调度程序就会将处理机分配给新到的优先级更高的进程

3.2优先级的类型

3.1静态优先级

静态优先级是在创建进程时确定的,其在进程的整个运行期间保持不变,优先级是利用某一范围内的一个整数(如0~255的某一整数)来表示的,我们把该整数称为优先数

确定进程优先级大小的依据有3个:

1.进程类型,通常系统进程( 如接收进程,对换进程等)的优先级要高于一般用户进程的优先级

2.进程对资源的需求,对资源要求少的进程应被赋予较高的优先级

3.用户要求,根据进程的紧迫程度以及用户所付费用的多少,确定优先级

3.2动态优先级

动态优先级是在创建进程之初先赋予进程一个优先级,然后优先级会随进程的推进或等待时间的增加而改变,以便获得更好的调度性能

3.3高响应比优先调度算法(HRRN)

高响应比优先调度算法是优先级调度算法的一个特例,通常用于作业调度调度算法则是既考虑了作业的等待时间,又考虑了作业的运行时间,因此其既照顾了短作业,又不会致使长作业的等待时间过长,从而改善了处理机调度的性能

优先级的变化规律可表示为:
                                              优先级=(等待时间+要求服务时间)/ (除以) 要求服务时间

由于等待时间与要求服务时间之和就是系统对该作业的响应时间,故该优先级又相当于响应比   =(等待时间+要求服务时间)/ 要求服务时间

            =   响应时间 / 要求服务时间

由上式可以看出 : 1.如果作业的等待时间相同,则要求服务时间越短,优先级越高,有利于短作业  2.当作业的要求服务时间相同时,其优先级又取决于等待时间 3.对于长作业的优先级,其可随等待时间的增加而提高,当作业的等待时间足够长时,其也可获得处理机

四.轮转调度算法(RR)

在分时系统中,最简单也是最常用的进程调度算法是基于时间片的轮转调度算法

4.1进程切换时机

在RR调度算法中,应在何时进行进程切换,可分为两种情况。①若一个时间片尚未用完而正在运行的进程便已经完成,则立即激活调度程序,将已经运行完成的进程从就绪队列中删除,再调度就绪队列中新的队首进程运行,并启动一个新的时间片。②当一个时间片用完时,计时器中断处理程序会被激活,此时,如果进程尚未运行完毕,调度程序就把它送往就绪队列的末尾

例题

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

带权周转时间=周转时间 / 服务时间

先来先服务 (FCFS)

进程ABCDE平均
到达时间02468
服务时间36452
完成时间39152011
周转时间32111438.6
带权周转时间10.332.752.81.52.56

短作业优先(SJF)

非抢占

进程ABCDE平均
到达时间02468
服务时间36452
完成时间39131820
周转时间37912127.6
带权周转时间11.172.252.461.84

抢占

进程ABCDE平均
到达时间02468
服务时间36452
完成时间31582010
周转时间31341427.2
带权周转时间12.1612.811.59

高响应比优先 (HRRN)

进程ABCDE平均
到达时间02468
服务时间36452
完成时间39132015
周转时间3791478
带权周转时间11.172.252.83.52.14

时间片轮转(RR,q=1) 

进程ABCDE平均
到达时间02468
服务时间36452
完成时间418172015
周转时间4161314710.8
带权周转时间1.332.673.252.83.52.71

博主是从学校老师那里学的操作系统,还有很多不足之处,以上只是博主自己的理解

不足之处,还望大佬补充,我一定加以修改

博主会更加努力去学习操作系统,请期待博主下一篇文章 

猫猫跟你说,每天进步一点点,在未来的某一天,一定会看到见到!!

人只有坚持把自己变好,就真的会越来越好!!

让我们一起加油吧!!!!

相关文章:

操作系统--------调度算法篇

目录 一.先来先服务调度算法(FCFS) 二.短作业优先调度算法(SJF) 2.1.SJF调度算法缺点 三.优先级调度算法 3.1优先级调度算法的类型 1.非抢占优先级调度算法 2.抢占优先级调度算法 3.2优先级的类型 3.1静态优先级 3.2动态…...

宝塔composer 安装laravel依赖出现的问题

环境宝塔、PHP版本8.0.2、laravel9 问题1:PHP Fatal error: Uncaught Error: Call to undefined function Composer\XdebugHandler\putenv() 办法:把PHP版本disable_functions这个中的putenv去掉,这个意思就是putenv被PHP对应的版本禁用了&…...

OpenCV自学笔记二十四:支持向量机

在OpenCV中,支持向量机(Support Vector Machine,简称SVM)算法的实现包含在ml模块中。SVM是一种常用的监督学习算法,主要用于分类问题。 SVM的原理:通过在特征空间中找到一个最优超平面,将不同类…...

网络初识

一 IP 地址 概念: IP 地址主要用于表示网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址 格式 IP 地址是一个32为的二进制数,通常被分割为4个“8位二进制数“(也就是4个字节&…...

极坐标和直角坐标的雅克比矩阵推导

我们经常需要在一些问题中研究坐标系的关系,这里讲讲最常见的极坐标和直角坐标的雅克比矩阵的推导。以二维坐标为例,三维坐标也是同理。 1. 直角坐标和极坐标 直角坐标表示为 ( x , y ) (x,y) (x,y),极坐标表示为 ( ρ , φ ) (\rho,\varph…...

经管博士科研基础【25】概率论中的相关基础概念

1. Support 在概率论中,"support"(支撑集)是指随机变量可能取值的集合。对于离散型随机变量,支撑集包含了所有可能的取值;而对于连续型随机变量,支撑集是指其密度函数或概率质量函数非零的区域。…...

计算机网络的相关知识点总结(一)

1.谈一谈对OSI七层模型和TCP/IP四层模型的理解? 不管是OSI七层模型亦或是TCP/IP四层模型,它们的提出都有一个共同的目的:通过分层来将复杂问题细化,通过各个层级之间的相互配合来更好的解决计算机中出现的问题。 说到分层&#xf…...

下载github.com上的依赖资源

下载github.com上的依赖资源(需要反复试才能成功,所以单独安装) export GIT_TRACE1 export GIT_CURL_VERBOSE1 pip install githttps://github.com/PanQiWei/AutoGPTQ.git -i https://pypi.mirrors.ustc.edu.cn/simple --trusted-hostpypi.mi…...

编写 GPT 提示词的公式 + 资源分享

GPT 能够给我们带来很大的帮助,因此我们要好好利用它。我们希望 GPT 输出令我们满意的内容,影响 GPT 输出内容的因素有模型和输入(Prompt,提示词)。 模型:我们可以选择不同的 GPT 产品,它们的模…...

用HTML、CSS和JavaScript制作的通用进制转换器

随着编程和计算机科学越来越受欢迎,我们经常需要进行进制转换。本文将介绍一个简洁、美观、适用于移动设备的进制转换工具,并详细讨论其实现。 目录 🌍 用HTML、CSS和JavaScript制作的通用进制转换器 1.项目图片展示 2. 技术栈 3. 主要功…...

ArcGIS 10.3软件安装包下载及安装教程!

【软件名称】:ArcGIS 10.3 【安装环境】:Windows 【下载链接 】: 链接:https://pan.baidu.com/s/1K5ab7IHMYa23HpmuPkFa1A 提取码:oxbb 复制这段内容后打开百度网盘手机App,操作更方便哦 软件解压码点击原文…...

【数据增强】

【数据增强】 1 数据增强的情形2 数据增强的方法 1 数据增强的情形 当数据比较小,难以获取新的训练数据时,可以考虑数据增强,如随机裁剪部分,随机左右上下翻转、随机旋转一个角度、随机亮度变化等微小变化,数据的多样…...

Ae 效果:CC Force Motion Blur

时间/CC Force Motion Blur Time/CC Force Motion Blur CC Force Motion Blur (CC 强制运动模糊)主要用于为动态图像添加强制的运动模糊效果,增加动态画面的流畅感和真实感。 相对于时间轴面板上的“运动模糊”开关,CC Force Moti…...

2023华为杯研究生数学建模竞赛CDEF题思路+模型代码

全程更新华为杯研赛CDEF题思路模型及代码,大家查看文末名片获取 华为杯C题思路分析 问题一 在每个评审阶段,作品通常都是随机分发的,每份作品需要多位评委独立评审。为了增加不同评审专家所给成绩之间的可比性,不同专家评审的作…...

FP独立站之黑科技:AB站收款、斗篷CLOAK

最近一段时间经常有不少小伙伴来咨询我独立站的相关的业务,因为很多独立站卖家觉得独立站不好做,再加上跨境平台禁止特货类产品的销售(如FP产品、成人用品、电子烟、灰黑类产品等等),但这类产品市场需求大,…...

【Linux网络编程】gdb调试技巧

这篇博客主要要记录一下自己在Linux操作系统Ubuntu下使用gbd调试程序的一些指令,以及使用过程中的一些心得。 使用方法 可以使用如下代码 gcc -g test.c -o test 或者 gcc test.c -o test ​ -g的选项最好添加,如果不添加,l指令无法被识别 …...

ElementUI之登录与注册

目录 一.前言 二.ElementUI的简介 三.登录注册前端界面的开发 三.vue axios前后端交互--- Get请求 四.vue axios前后端交互--- Post请求 五.跨域问题 一.前言 这一篇的知识点在前面两篇的博客中就已经详细详解啦,包括如何环境搭建和如何建一个spa项目等等知识…...

报错处理:Error: Redis server is running but Redis CLI cannot connect

嗨,读者朋友们!今天我来跟大家分享一个我在运维过程中遇到的一个关于Linux上运行Redis服务时的报错及解决方法。 报错信息如下: Error: Redis server is running but Redis CLI cannot connect 这个报错信息表明Redis服务器已经运行&#xff…...

RocketMQ 源码分析——Producer

文章目录 消息发送代码实现消息发送者启动流程检查配置获得MQ客户端实例启动实例定时任务 Producer 消息发送流程选择队列默认选择队列策略故障延迟机制策略*两种策略的选择 技术亮点:ThreadLocal 消息发送代码实现 下面是一个生产者发送消息的demo(同步发送&#…...

ISTQB术语表

此术语表为国际软件测试认证委员会(ISTQB)发布的标准术语表。此表历经数次修改、完善,集纳了计算机行业界、商业界及政府相关机构的见解及意见,在国际化的层面上达到了罕有的统一性及一致性。参与编制此表的国际团体包括澳大利亚、…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

Cursor实现用excel数据填充word模版的方法

cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...

uniapp中使用aixos 报错

问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...

6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙

Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...

一些实用的chrome扩展0x01

简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序&#xff0c;无论是测试应用程序、搜寻漏洞还是收集情报&#xff0c;它们都能提升工作流程。 FoxyProxy 代理管理工具&#xff0c;此扩展简化了使用代理&#xff08;如 Burp…...

13.10 LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析

LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析 LanguageMentor 对话式训练系统架构与实现 关键词:多轮对话系统设计、场景化提示工程、情感识别优化、LangGraph 状态管理、Ollama 私有化部署 1. 对话训练系统技术架构 采用四层架构实现高扩展性的对话训练…...