Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >处理机调度

处理机调度

原创
作者头像
真正的飞鱼
发布于 2023-06-29 08:49:13
发布于 2023-06-29 08:49:13
2870
举报
文章被收录于专栏:技术知识总结技术知识总结

在多道程序环境下,内存中存在着多个进程,进程的数目往往多于处理机的数目。这就要求系统能按某种算法,动态地将处理机分配给一个处于就绪状态的进程,使之执行。分配处理机的任务是由处理机调度程序完成的。

对于大型系统运行时的性能,如系统吞吐量、资源利用率、作业周转时间或响应的及时性等,在很大程度上都取决于处理机调度性能的好坏。因而,处理机调度便成为OS中至关重要的部分。

调度的层次

在多道程序系统中,调度的实质是一种资源分配,处理机调度是对处理机资源进行分配。处理机调度算法是指根据处理机分配策略所规定的处理机分配算法。

在多道批处理系统中,一个作业从提交到获得处理机执行,直至作业运行完毕,可能需要经历多级处理机调度,下面先来了解处理机调度的层次。

高级调度

高级调度又称长程调度或作业调度,它的调度对象是作业。其主要功能是根据某种算法,决定将外存上处于后备队列中的哪几个作业调入内存,为它们创建进程、分配必要的资源,并将它们放入就绪队列。

高级调度主要用于多道批处理系统中,而在分时和实时系统中不设置高级调度。

低级调度

低级调度又称为进程调度或短程调度,它的调度对象是进程(或内核级线程)。其主要功能是根据某种算法,决定就绪队列中的哪个进程应获得处理机,并由分派程序将处理机分配给被选中的进程。

进程调度是最基本的一种调度,在多道批处理、分时和实时三种类型的OS中,都必须配置这级调度。

中级调度

中级调度又称为内存调度。引入中级调度的主要目的是,提高内存的利用率和系统的吞吐量。为此,应把那些暂时不能运行的进程,调至外存等待,此时进程的状态称为就绪驻外存状态(或挂起状态)。当它们已具备运行条件且内存又稍有空闲时,由中级调度来决定,把外存上的那些已具备运行条件的就绪进程再重新调入内存,并修改其状态为就绪状态,挂在就绪队列上等待。

中级调度实际上就是存储器管理中的对换功能(swap),

调度的算法

先来先服务

FCFS(first-come first-served,FCFS,先来先服务调度算法)是最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。

当在作业调度中采用 FCFS 调度算法时,系统将按照作业到达的先后次序来进行调度,或者说它是优先考虑在系统中等待时间最长的作业,而不管该作业所需执行时间的长短,从作业的后备队列中选择几个最先进入该队列的作业,将它们调入内存,为它们分配资源和创建进程。然后把它放入就绪队列。

当在进程调度中采用 FCFS 调度算法时,每次调度是从就绪的进程队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后,进程调度程序才将处理机分配给其它进程。

FCFS 调度算法在单处理机系统中已很少作为主调度算法,但经常把它与其它调度算法相结合使用,形成一种更为有效的调度算法。例如,可以在系统中按进程的优先级设置多个队列,每个优先级一个队列,其中每一个队列的调度都基于 FCFS 调度算法。

短作业优先

由于在实际情况中,短作业(进程)占有很大比例,为了使它们能比长作业优先执行,而产生了短作业优先调度算法(short job first,SJF)。

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

SJF 调度算法可以分别用于作业调度和进程调度。在把 SJF 调度算法用于作业调度时,系统将从外存的作业后备队列中选择若干个估计运行时间最短的作业,优先将它们调入内存运行。


SJF 调度算法较之 FCFS 调度算法有了明显的改进,但 SJF 调度算法仍然存在不容忽视的缺点:

  • 必须预知作业的运行时间。在采用这种调度算法时,要先知道每个作业的运行时间。即使是程序员也很难准确估计作业的运行时间,如果估计过低,系统就可能按估计的时间终止作业的运行,但此时作业并未完成,故一般都会偏长估计。
  • 对长作业非常不利,长作业的周转时间会明显地增长。更严重的是,该调度算法完全忽视作业的等待时间,可能使作业等待时间过长,出现饥饿现象。
  • 在采用 FCFS 调度算法时,人机无法实现交互。
  • SJF 调度算法完全未考虑作业的紧迫程度,故不能保证紧迫性作业能得到及时处理。

优先级调度算法

优先级调度算法(priority-scheduling algorithm,PSA)

我们可以这样来看作业的优先级:

  • 对于先来先服务调度算法,作业的等待时间就是作业的优先级,等待时间越长,其优先级越高。
  • 对于短作业优先调度算法,作业的长短就是作业的优先级,作业所需运行的时间越短,其优先级越高。

但上述两种优先级都不能反映作业的紧迫程度。而在优先级调度算法中,则是基于作业的紧迫程度,由外部赋予作业相

应的优先级,调度算法是根据该优先级进行调度的。这样就可以保证紧迫性作业优先运行。

优先级调度算法可以分别用于作业调度和进程调度。当把优先级调度算法用于作业调度时,系统将从外存的作业后备队列中选择若干个优先级最高的作业,优先将它们调入内存运行。

高响应比优先

高响应比优先调度算法(Highest Response Ratio Next,HRRN)

在批处理系统中,FCFS 调度算法所考虑的只是作业的等待时间,而忽视了作业的运行时间。而 SJF 调度算法正好与之相反,只考虑作业的运行时间,而忽视了作业的等待时间。高响应比优先调度算法则是既考虑了作业的等待时间,又考虑了作业运行时间的调度算法,因此既照顾了短作业,又不致使长作业的等待时间过长,从而改善了处理机调度的性能。

高响应比优先调度算法是如何实现的呢?如果我们能为每个作业引入一个动态优先级,即优先级是可以改变的,令它随等待时间延长而增加,这将使长作业的优先级在等待期间不断地增加,等到足够的时间后,必然有机会获得处理机。该优先级的变化规律可描述为:

由于等待时间与服务时间之和就是系统对该作业的响应时间,故该优先级又相当于响应比Rp。据此,优先又可表示为:


由上式可以看出:

  • 如果作业的等待时间相同,则要求服务的时间愈短,其优先权愈高,因而类似于 SJF 算法,有利于短作业。
  • 当要求服务的时间相同时,作业的优先权又决定于其等待时间,因而该算法又类似于 FCFS 算法。
  • 对于长作业的优先级,可以随等待时间的增加而提高,当其等待时间足够长时,也可获得处理机。

因此该调度算法实现了较好的折中。当然在利用该调度算法时,每次要进行调度之前,都需要先做响应比的计算,显然会增加系统开销。

参考资料

《计算机操作系统》(第四版)3.2 作业与作业调度

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
1-1.调度算法
先来先服务和短作业优先调度算法 ​ 1.FCFS 特点:简单,有利于长作业 即CPU繁忙性作业 ​ 2.短作业进程优先调度算法:SJ(P)F 提高了平均周转时间和平均带权周转时间(从而提高了系统吞吐量) 特点:对长作业不利,有可能得不到服务(饥饿) 估计时间不易确定
见贤思齊
2020/08/05
8570
1-1.调度算法
图解经典的进程调度算法
文中的很多图片来源我考研时看的网课,B 站上应该还能找到,王道考研出品的操作系统系列,各位可以去看看,适用于考试,不太适用于春招秋招,因为知识点讲的太细,边边角角都会讲到,各位可以挑几个章节去看。全文脉络思维导图如下:
飞天小牛肉
2021/02/26
1.7K0
图解经典的进程调度算法
处理机调度及常用的几个调度算法
当有一堆任务要处理,但由于资源有限,这些事情没法同时处理。这就需要确定某种规则来决定处理这些任务的顺序,这就是 “调度” 研究的问题。
wsuo
2020/11/03
2.9K0
处理机调度及常用的几个调度算法
9.处理机调度与死锁 原
一个批处理型的作业,从进入系统并驻留在外存的后备队列上开始,直至作业运行完毕,可能要经历的三级调度:
青木
2019/03/12
5090
操作系统笔记【处理机调度知识】
CPU 在计算机系统中是非常重要的,但是早期的时候非常简单,是因为它像其他资源一样被一个作业所独占,不存在什么处理及分配或者调度的问题,但是随着各种多道程序的设计以及不同类型的操作系统的出现,不同的CPU的管理方法将会为用户提供不同性能的操作系统
BWH_Steven
2020/06/03
1.4K0
1.进程管理
11、对进程的描述错误的是( d) A.进程是动态的概念 B.进程执行需要处理机 C.进程是有生命期的 D.进程是指令的集合
见贤思齊
2020/08/05
5810
1.进程管理
操作系统中进程调度算法详解及例题解释「建议收藏」
用于作业调度时,考虑的是哪个作业先到达后备队列;用于进程调度时,考虑的是哪个进程先到达就绪队列
全栈程序员站长
2022/11/10
1.7K0
操作系统中进程调度算法详解及例题解释「建议收藏」
进程调度的概念[通俗易懂]
在多道程序系统中,进程的数量往往多于处理机的个数,进程争用处理机的情况就在所难免。处理机调度是对处理机进行分配,就是从就绪队列中,按照一定的算法(公平、髙效)选择一个进程并将处理机分配给它运行,以实现进程并发地执行。 处理机调度是多道程序操作系统的基础,它是操作系统设计的核心问题。
全栈程序员站长
2022/11/11
9990
进程调度的概念[通俗易懂]
作业调度和进程调度的辨析题_进程调度的功能有哪些
很多学习完《操作系统原理》这门课程的小伙伴都应该对“FCFS(先到先服务)”、“SJF(短作业优先)”等调度算法原理比较熟悉。但是在实际做题的时候,往往一不小心就把概念搞错,不容易区分“作业调度”和“进程调度”的区别。下面我主要针对这两个概念进行解析并给出经典习题解答。 PS:本博客并不详解每种调度算法的原理,因此有这方面需求的小伙伴可以直接pass了。
全栈程序员站长
2022/11/11
1.1K0
作业调度和进程调度的辨析题_进程调度的功能有哪些
冷月手撕408之操作系统(8)-处理机调度
操作系统的处理器资源主要是介绍了,由于多道程序设计带来的并发性,内存中运行多个进程并发运行。而处理器资源是远远小于进程的数量的,所以如何调度处理器给合适的进程成为了OS的焦点。
学长冷月
2021/02/22
4020
冷月手撕408之操作系统(8)-处理机调度
《Linux操作系统编程》第二章 进程运行与调度: 了解进程的定义与特征、进程的状态与切换、进程管理的数据结构、进程的创建与终止、阻塞与唤醒、挂起与激活以及处理机调度的相关概念
要求学生了解进程的定义与特征、进程的状态与切换、进程管理的数据结构、进程的创建与终止、阻塞与唤醒、挂起与激活以及处理机调度的相关概念。
猫头虎
2024/04/08
5470
《Linux操作系统编程》第二章 进程运行与调度: 了解进程的定义与特征、进程的状态与切换、进程管理的数据结构、进程的创建与终止、阻塞与唤醒、挂起与激活以及处理机调度的相关概念
处理器调度一、CPU调度的相关概念三、批处理系统中常用的调度算法四、交互式系统的调度算法五、多级反馈队列调度算法(重点)七、多处理器调度算法设计
一、CPU调度的相关概念 1.1 cpu调度 其任务是控制、协调进程对cpu的竞争,即按一定的调度算法从就绪队列中选择一个进程,把cpu的使用权交给被选中的进程。如果没有就绪进程,系统会安排一个系统空闲进程或idle进程进入cpu运行。 1.2 系统场景 * N个进程就绪、等待上cpu运行 * M个cpu, M>=1 * 需要决策:给哪个进程分配哪一个cpu? 1.3 cpu调度要解决的三个问题 1、按什么原则选择下一个要执行的进程:调度算法 2、何时进行选择:调度时机 3、如何让被选中的进程上cpu中运行
JavaEdge
2018/05/16
2.8K0
处理器调度及算法
在多道程序环境下,主存中有着多个进程,其数目往往多于处理机数目。这就要求系统能按某种算法,动态地把处理机分配给就绪队列中的一个进程,使之执行。分配处理机的任务是由处理机调度程序完成的。由于处理机是最重要的计算机资源,提高处理机的利用率及改善系统性能(吞吐量、响应时间),在很大程度上取决于处理机调度性能的好坏,因而,处理机的调度问题便成为操作系统设计的中心问题之一。
搬砖俱乐部
2019/06/24
1.5K0
操作系统学习笔记-9:调度
调度研究的问题是:面对有限的资源,如何处理任务执行的先后顺序。对于处理机调度来说,这个资源就是有限的处理机,而任务就是多个进程。故处理机调度研究的问题是:面对有限的处理机,如何从就绪队列中按照一定的算法选择一个进程并将处理机分配给它运行,从而实现进程的并发执行。处理机调度共有三个层次,这三个层次也是一个作业从提交开始到完成所经历的三个阶段。
Chor
2020/04/20
1.2K0
操作系统学习笔记-9:调度
大学课程 | 计算机操作系统
(3) 模块接口法的优缺点: 优点: ①提高OS设计的正确性,可理解性,可维护性 ②增强OS的可适应性 ③加速OS的开发过程 缺点: ①接口很难满足实际需求 ②无序模块法,无法寻找一个可靠的决定顺序
Justlovesmile
2021/12/14
9950
大学课程 | 计算机操作系统
进程的调度常用算法
系统将按照作业到达的先后次序来进行作业调度,或者说它是优先考虑在系统中等待时间最长的作业,而不管该作业所需执行时间的长短,从后备作业队列中优先选择几个最先进入该队列的作业,将他们调入内存,为他们分配资源和创建进程。然后把它放入就绪队列。当在进程调度中采用FCFS算法时,每次调度是从就绪的进程队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而组赛后,进程调度程序才将处理机分配给其他进程。 在进程调度中采用先来先服务算法的时候,每次调度就从就绪队列中选一个最先进入该队列的进程,为之分配处理机,即谁第一排队谁就先被执行。
一个风轻云淡
2023/10/15
3770
进程的调度常用算法
计算题总结
作业调度算法 1、FCFS算法(先来先服务算法):算法每次从后备作业队列中选择最先进入该队列的一个或几个作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列。FCFS调度算法的特点是算法简单,但效率低;对长作业比较有利,但对短作业不利(相对SJF和高响应比);有利于CPU繁忙型作业,而不利于I/O繁忙型作业。 2、SJF算法(短作业优先算法):从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。SJF调度算法的平均等待时间、平均周转时间最少;但对长作业非常不利。 3、HRN算法(
SuperHeroes
2018/05/30
1.6K0
浅谈进程和线程的区别
首先,从操作系统的层次来说,进程(Progress)是资源分配和系统调度的的基本单位也可以理解为程序的基本执行实体;当一个程序被载入到内存中并准备执行,它就是一个进程!当进程被创建了,操作系统就会为该进程分配一个唯一、不重复的 ID,用于区分不同的进程
软件UP
2021/05/25
8460
处理机进程调度模拟
一、进程调度 无论是在批处理还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。进程调度属于处理机调度。 处理机调度分为三个层次: 高级调度:(High-Level Scheduling)又称为长程调度、作业调度,它决定把外存上处于后备队列中的作业调入内存运行,为他们创建进程、分配必要的资源,放入就绪队列 低级调度:(Low-Level Scheduling
欠扁的小篮子
2018/04/11
1.4K0
处理机进程调度模拟
进程调度说说吧?讲讲进程调度算法?
不管啥系统,进程的数量一般多余处理机数,那她们就会对处理机争抢,指望着处理机今晚能翻自己的牌子。系统自带的进程也会参与这场争抢,所以后宫太监长进程调度程序会按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。
崩天的勾玉
2021/12/20
1.3K0
推荐阅读
相关推荐
1-1.调度算法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档