【操作系统】CPU调度

news2024/11/16 1:47:50

目录

1.什么叫调度

2.调度的目标

 3.进程调度方式

4.闲逛进程

5.典型的调度算法

5.1先来先服务(FCFS)调度算法

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

5.3优先级调度算法

5.4高响应比优先调度算法

5.5时间片轮转调度算法

5.6多级队列调度算法

5.7多级反馈队列调度算法(融合了前几种算法的优点)


1.什么叫调度

在多道程序系统中,进程的数量往往多于处理机的个数,因此进程争用处理机的情况在所难免。处理机调度是对处理机进行分配,即从就绪队列中按照一定的算法(公平、高效的原则)选择一个进程并将处理机分配给它运行,以实现进程并发地执行。
处理机调度是多道程序操作系统的基础,是操作系统设计的核心问题。

2.调度的目标

不同的调度算法具有不同的特性,在选择调度算法时,必须考虑算法的特性。为了比较处理机调度算法的性能,人们提出了很多评价标准,下面介绍其中主要的几种:

1)CPU 利用率。CPU 是计算机系统中最重要和昂贵的资源之一,所以应尽可能使 CPU 保持“忙”状态,使这一资源利用率最高。CPU 利用率的计算方法如下:

 2)系统吞吐量。表示单位时间内 CPU 完成作业的数量。长作业需要消耗较长的处理机时间因此会降低系统的吞吐量。而对于短作业,需要消耗的处理机时间较短,因此能提高系统的吞吐量。调度算法和方式的不同,也会对系统的吞吐量产生较大的影响。

3)周转时间。指从作业提交到作业完成所经历的时间,是作业等待、在就绪队列中排队在处理机上运行及输入/输出操作所花费时间的总和。周转时间的计算方法如下:                     

       周转时间 = 作业完成时间-作业提交时间

平均周转时间是指多个作业周转时间的平均值:
                                 平均周转时间=(作业1的周转时间 +...+ 作业n的周转时间)/n 

带权周转时间是指作业周转时间与作业实际运行时间的比值:

                

平均带权周转时间是指多个作业带权周转时间的平均值:
                平均带权周转时间 =(作业1的带权周转时间 +...+ 作业n 的带权周转时间)/n 

4)等待时间。指进程处于等处理机的时间之和,等待时间越长,用户满意度越低。处理机调度算法实际上并不影响作业执行或输入/输出操作的时间,只影响作业在就绪队列中等待所花的时间。因此,衡量一个调度算法的优劣,常常只需简单地考察等待时间。

5)响应时间。指从用户提交请求到系统首次产生响应所用的时间。在交互式系统中,周转时间不是最好的评价准则,一般采用响应时间作为衡量调度算法的重要准则之一。从用户角度来看,调度策略应尽量降低响应时间,使响应时间处在用户能接受的范围之内。 

 3.进程调度方式

所谓进程调度方式,是指当某个进程正在处理机上执行时,若有某个更为重要或紧迫的进程需要处理,即有优先权更高的进程进入就绪队列,此时应如何分配处理机。通常有以下两种进程调度方式:
1)非抢占调度方式,又称非剥夺方式。是指当一个进程正在处理机上执行时,即使有某个更为重要或紧迫的进程进入就绪队列,仍然让正在执行的进程继续执行,直到该进程运行完成或发生某种事件而进入阻塞态时,才把处理机分配给其他进程。非抢占调度方式的优点是实现简单、系统开销小,适用于大多数的批处理系统,但它不能用于分时系统和大多数的实时系统。
2)抢占调度方式,又称剥夺方式。是指当一个进程正在处理机上执行时,若有某个更为重要或紧迫的进程需要使用处理机,则允许调度程序根据某种原则去暂停正在执行的进程将处理机分配给这个更为重要或紧迫的进程。
抢占调度方式对提高系统吞吐率和响应效率都有明显的好处。但“抢占”不是一种任意性行为,必须遵循一定的原则,主要有优先权、短进程优先和时间片原则等。

4.闲逛进程

在进程切换时,如果系统中没有就绪进程,就会调度闲逛进程 (idle)运行,如果没有其他进程就绪,该进程就一直运行,并在执行过程中测试中断。闲逛进程的优先级最低,没有就绪进程时才会运行闲逛进程,只要有进程就绪,就会立即让出处理机。
闲逛进程不需要 CPU 之外的资源,它不会被阻塞。

5.典型的调度算法

5.1先来先服务(FCFS)调度算法

FCFS 调度算法是一种最简单的调度算法,它既可用于作业调度,又可用于进程调度。在作业调度中,算法每次从后备作业队列中选择最先进入该队列的一个或几个作业,将它们调入内存分配必要的资源,创建进程并放入就绪队列。
在进程调度中,FCFS 调度算法每次从就绪队列中选择最先进入该队列的进程,将处理机分配给它,使之投入运行,直到运行完成或因某种原因而阻塞时才释放处理机。

下面通过一个实例来说明 FCFS 调度算法的性能。假设系统中有 4 个作业,它们的提交时间分别是8,8.4,8.8,9,运行时间依次是2,1,0.5,0.2,系统采用FCFS 调度算法,这组作业的平均等待时间、平均周转时间和平均带权周转时间是多少?

FCFS 调度算法属于不可剥夺算法。从表面上看,它对所有作业都是公平的,但若一个长作业先到达系统,就会使后面的许多短作业等待很长时间,因此它不能作为分时系统和实时系统的主要调度策略。但它常被结合在其他调度策略中使用。例如,在使用优先级作为调度策略的系统中,往往对多个具有相同优先级的进程按 FCFS 原则处理
FCFS 调度算法的特点是算法简单,但效率低;对长作业比较有利,但对短作业不利(相对SJF 和高响应比);有利于CPU 繁忙型作业,而不利于 IO 繁忙型作业。

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

短作业(进程)优先度算法是指对短作业(进程)优先调度的算法。短作业优先(SJF)调度算法从后备队列中选择一个或若干估计运行时间最短的作业,将它们调入内存运行:短进程优先(SPF)调度算法从就绪队列中选择一个估计运行时间最短的进程,将处理机分配给它,使之立即执行,直到完成或发生某事件而阻塞时,才释放处理机。

假设系统中有 4 个作业,它们的提交时间分别是8,8.4,8.8,9,运行时间依次是2,1,0.5,0.2,系统采用SJF调度算法,这组作业的平均等待时间、平均周转时间和平均带权周转时间是多少?

 SJF 度算法也存在不容忽视的缺点:

1)该算法对长作业不利,SJF 算法中长作业的周转时间会增加,更严重的是,若有一长作业进入系统的后备队列,由于调度程序总是优先调度那些(即使是后来的)短作业,将导致长作业长期不被调度。
2) 该算法完全未考虑作业的紧迫程度,因而不能保证紧迫性作业会被及时处理。

3)由于作业的长短是根据用户所提供的估计执行时间而定的,而用户又可能会有意或无意地缩短其作业的估计运行时间,致使该算法不一定能真正做到短作业优先调度注意,

注:SJF 调度算法的平均等待时间、平均周转时间最少。

5.3优先级调度算法

优先级调度算法既可用于作业调度,又可用于进程调度。该算法中的优先级用于描述作业的紧迫程度。在作业调度中,优先级调度算法每次从后备作业队列中选择优先级最高的一个或几个作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列。在进程调度中,优先级调度算法每次从就绪队列中选择优先级最高的进程,将处理机分配给它,使之投入运行。

根据新的更高优先级进程能否抢占正在执行的进程,可将该调度算法分为如下两种:

1)非抢占式优先级调度算法。当一个进程正在处理机上运行时,即使有某个优先级更高的进程进入就绪队列,仍让正在运行的进程继续运行,直到由于其自身的原因而让出处理机时(任务完成或等待事件),才把处理机分配给就绪队列中优先级最高的进程。

2)抢占式优先级调度算法当一个进程正在处理机上运行时,若有某个优先级更高的进程进入就绪队列,则立即暂停正在运行的进程,将处理机分配给优先级更高的进程。

而根据进程创建后其优先级是否可以改变,可以将进程优先级分为以下两种:

1)静态优先级。优先级是在创建进程时确定的,且在进程的整个运行期间保持不变。确定静态优先级的主要依据有进程类型、进程对资源的要求、用户要求。

2)动态优先级。在进程运行过程中,根据进程情况的变化动态调整优先级。动态调整优先级的主要依据有进程占有 CPU 时间的长短、就绪进程等待 CPU时间的长短

5.4高响应比优先调度算法

高响应比优先调度算法主要用于作业调度,是对 FCFS 调度算法和 SJF 调度算法的一种综合平衡,同时考虑了每个作业的等待时间和估计的运行时间。在每次进行作业调度时,先计算后备作业队列中每个作业的响应比,从中选出响应比最高的作业投入运行。
响应比的变化规律可描述为:

        

根据公式可知:

  1. 作业的等待时间相同时,要求服务时间越短,响应比越高,有利于短作业,因而类似于 SJF
  2. 要求服务时间相同时,作业的响应比由其等待时间决定,等待时间越长其响应比越高,因而类似于 FCFS。

对于长作业,作业的响应比可以随等待时间的增加而提高当其等待时间足够长时,也可获得处理机,克服了“饥饿”现象。 

5.5时间片轮转调度算法

时间片轮转调度算法主要适用于分时系统。在这种算法中,系统将所有就绪进程按 FCFS 策略排成一个就绪队列,调度程序总是选择就绪队列中的第一个进程执行,但仅能运行一个时间片如50ms。在使用完一个时间片后,即使进程并未运行完成,它也必须释放出(被剥夺)处理机给下一个就绪进程,而被剥夺的进程返回到就绪队列的末尾重新排队,等候再次运行。

在时间片轮转调度算法中,时间片的大小对系统性能的影响很大。若时间片足够大,以至于所有进程都能在一个时间片内执行完毕,则时间片轮转调度算法就退化为先来先服务调度算法。若时间片很小,则处理机将在进程间过于频繁地切换,使处理机的开销增大,而真正用于运行用户进程的时间将减少。因此,时间片的大小应选择适当,时间片的长短通常由以下因素确定:

系统的响应时间、就绪队列中的进程数目和系统的处理能力。

5.6多级队列调度算法

前述的各种调度算法,由于系统中仅设置一个进程的就绪队列,即调度算法是固定且单一的无法满足系统中不同用户对进程调度策略的不同要求。在多处理机系统中,这种单一调度策略实现机制的缺点更为突出,多级队列调度算法能在一定程度上弥补这一缺点。
该算法在系统中设置多个就绪队列,将不同类型或性质的进程固定分配到不同的就绪队列。每个队列可实施不同的调度算法,因此,系统针对不同用户进程的需求,很容易提供多种调度策略。同一队列中的进程可以设置不同的优先级,不同的队列本身也可以设置不同的优先级。在多处理机系统中,可以很方便为每个处理机设置一个单独的就绪队列,每个处理机可实施各自不同的调度策略,这样就能根据用户需求将多个线程分配到一个或多个处理机上运行。

5.7多级反馈队列调度算法(融合了前几种算法的优点)

多级反馈队列调度算法是时间片轮转调度算法和优先级调度算法的综合与发展。

通过动态调整进程优先级和时间片大小,多级反馈队列调度算法可以兼顾多方面的系统目标。例如,为提高系统吞吐量和缩短平均周转时间而照顾短进程,为获得较好的 IO设备利用率和缩短响应时间而照顾I/O型进程;同时,也不必事先估计进程的执行时间。

 

多级反馈队列调度算法的实现思想如下:

1)设置多个就绪队列,并为每个队列赋予不同的优先级。第 1 级队列的优先级最高,第 2级队列的优先级次之,其余队列的优先级逐个降低。

2)赋予各个队列的进程运行时间片的大小各不相同。在优先级越高的队列中,每个进程的时间片就越小。例如,第i+1 级队列的时间片要比第i级队列的时间片长1倍。

3)每个队列都采用FCFS 算法。当新进程进入内存后,首先将它放入第1级队列的尾,按FCFS 原则等待调度。当轮到该进程执行时,如它能在该时间片内完成,便可撤离系统若它在一个时间片结束时尚未完成,调度程序将其转入第 2 级队列的末尾等待调度;若它在第2级队列中运行一个时间片后仍未完成,再将它放入第3 级队列·····,依此类推。当进程最后被降到第n 级列后,在第n级队列中便采用时间片轮转方式运行 

4)按队列优先级调度。仅当第1级队列为空时才调度第2队列中的进程运行,仅当第i-1级队列均为空时,才会调度第i级队列中的进程运行。若处理机正在执行第i级队列中的某进程时,又有新进程进入任一优先级较高的队列,此时须立即把正在运行的进程放回到第i级队列的末尾,而把处理机分配给新到的高优先级进程。

多级反馈队列的优势有以下几点:
1)终端型作业用户:短作业优先。
2)短批处理作业用户:周转时间较短。
3)长批处理作业用户,经过前面几个队列得到部分执行,不会长期得不到处理

下表总结了几种常见进程调度算法的特点:


 

 

 

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

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

相关文章

Qgis基本操作之图层符号化和标注实战

目录 前言 一、基础数据 1、公共预算收入数据简介 2、省份数据简介 二、地图标注 1、百强县公共预算收入地图标注 2、省信息标注 三、地图符号化 1、百强县公共预算收入符号化 2、省数据符号化 总结 前言 在之前的Qgis中进行Shp和Excel属性连接实现百强县公共预算空间分…

MATLAB 之 图形对象及其句柄和图形窗口与坐标轴

这里写目录标题 一、图形对象及其句柄1. 图形对象2. 图形对象句柄的使用3. 图形对象属性3.1 属性名与属性值3.2 属性的操作3.3 图形对象的公共属性 二、图形窗口与坐标轴1. 图形窗口对象2. 坐标轴对象 一、图形对象及其句柄 MATLAB 的图形系统是面向图形对象的。图形对象是 MA…

Redis新功能

Redis 新功能 ACL 参考官网:https://redis.io/topics/acl 基本介绍 1、Redis ACL 是Access Control List(访问控制列表)的缩写,该功能根据可以执行的命令和可以访问的键来限制某些连接 2、在Redis 5 版本之前,Red…

使用python做一个批量重命名文件的小工具

🛴 放松 端午放假前的下午🙄 没事儿可做,一个准备开始弄的项目里面有大量的图片,但是名字都乱七八糟的,作为一个稍微带点强迫症的人看不下去。 既然如此,想直接重命名,可是Windows的重命名效果…

《XrayGLM:基于VisualGLM-6B微调训练对X光胸片进行医学诊断》学习分享与本地项目微调部署实践

XrayGLM据说是首个会看胸部X光片的中文多模态医学大模型,我最近也是因为关注这个所以就找时间学习了一下,顺便把学习资料对应记录分享一下。 官方提供了开源的项目,地址在这里,如下所示: 最近,通用领域的大…

MySQL - 第6节 - MySQL表的增删查改

1.MySQL表的增删查改概述 • 表的增删查改简称CRUD:Create(新增),Retrieve(查找),Update(修改),Delete(删除)。 • CRUD的操作对象是对…

抖音小店有哪些常见扣分原因?如何避免在抖音小店中被扣分?

抖音小店现在已经成为了很多商家的首选电商平台,但是在使用抖音小店的过程中,也会出现一些扣分的情况。接下来,四川不若与众将为大家介绍抖音小店扣分的原因和避免办法。 一、抖音小店扣分原因 1. 服务不到位:商家没有及时回复用户…

2023-01-06 VMWare桥接网络配置.md

VMWare16 桥接网络配置 一 环境清单 VMWare 16虚拟机:Centos7宿主机:Windows 10 二 配置过程 查看宿主机的IP相关信息 ipconfig -all 配置虚拟网络编辑器 2.1 打开VMware Workstation Pro,点击左上角编辑-->虚拟网络编辑器 2.2 点击更改配…

CRM商机管理:提升客户体验和销售效率

如何利用CRM系统提升商机管理? 花点时间思考一下你的企业管理商机的方法,是否有以下情况: ● 不知道渠道中的商机是否可行。 ● 不知道应该关注哪些商机。 ● 花了几个小时或几天的时间来跟进商机。 ● 不知道赢得商机与失去商机的比例。 如…

【Kafka】Suppressed: java.nio.file.AccessDeniedException问题的解决

【Kafka】Suppressed: java.nio.file.AccessDeniedException问题的解决 目录 前言 一、错误发生的原因 二、问题如何解决 前言 今天在运行kafka时,出现了如下图的报错Suppressed: java.nio.file.AccessDeniedException,怎么启动也启动不起来。那此问…

C/C++的命令执行分析

背景 最近发现一个命令执行风险; 一开始提供修复建议,是对特殊字符进行过滤,但是业务侧没有办法过滤,因为输入点是没有办法限制的,然后提供另一个方案是将用户的输入写到配置文件中,然后再进行操作&#x…

LeetCode24. 两两交换链表中的节点+19. 删除链表的倒数第 N 个结点

24. 两两交换链表中的节点 题目描述: 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 输入:head [1…

蓝牙 - 抓包工具BPA600介绍

BPA 600开箱后,先把天线(antenna)装在后面的SMA接口上。 SMA connectors: SMA(SubMiniature version A)连接器是在20世纪60年代开发的半精密同轴射频连接器,是一种用于同轴电缆的最小连接器接口,具有螺旋式耦合机制。…

复旦大学高校专区入驻飞桨AI Studio,优质教育资源等你来学!

近日,复旦大学高校专区在飞桨人工智能学习与实训社区AI Studio上线,双方将携手搭建人工智能教学实训平台专区,汇集优质教学实训资源,校企共同培育复合型 AI 人才,为国家输送高质量人才,促进国家智能化进程。…

【机器学习】Kullback-Leibler散度实现数据监控

https://en.wikipedia.org/wiki/Kullback%E2%80%93Leibler_divergence 一、说明 本篇叙述了KL 散度的数学、直觉和如何实际使用;以及它如何最好地用于过程监测。Kullback-Leibler 散度度量(相对熵)是信息论中的一种统计测量方法,通…

深入理解Dockerfile

一、是什么 Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。把镜像比喻成一个软件那么DockerFile就相当于是软件的配置文件。具体的内容可参考[官方网站](Dockerfile reference | Docker Documentation。 二、能做什么 通…

密码学中的SM2

目录 概述 功能 密钥生成 基点G的生成 模数p 密钥生成过程 加解密 加密过程: 解密过程: 数字签名 概述 对第5步r的计算方式分析 对第6步s的计算方式分析 加密模式 优缺点 论文和研究方向推荐 论文 研究方向 概述 SM2是中国密码学算法…

qt 时间编程之时钟

这里写目录标题 开启time格式自动 QTIM打点 qtime qt的时间类 qtimer qt的定时类 头文件包含以及定义 #include<QTime> #include<QTimer>QTime * time; QTimer * timer;开启 右键槽 timer start&#xff08;50&#xff09; 到达50毫米的时候会触发 time out信号…

Unreal 5 实现场景环境控制组件

我在场景中发现了一个环境控制器&#xff0c;这个场景实现了雨天天气和晴天风沙天气&#xff0c;接下来我分析一下这个天气控制器是如何实现。 实现流程&#xff1a; 将环境控制器拖入场景&#xff0c;在配置项上面设置相应的雾&#xff0c;主光源&#xff0c;天空光。在环境控…

Spring Cloud Alibaba-全链路灰度设计

文章目录 灰度发布概念灰度发布架构Spring Cloud Alibaba技术架构下的灰度发布实现基础设计HttpHeader设计 Spring Cloud Gateway改造Spring Cloud Gateway实现灰度发布过滤器 自定义Loadbalancer微服务注册元信息修改自定义LoadBalancer使用 测试代码放到了github上[地址]() 灰…