一、调度的概念

1.1 调度的基本概念

处理机调度是对处理机进行分配,就是从就绪队列中,按照一定的算法(公平、高效)选择一个进程并将处理机分配给它运行,以实现进程并发地执行。

1.2 调度的层次

1、作业调度(高级调度)
主要任务是按一定的原则从外存上处于后备状态的作业中挑选一个(或多个)作业,给它们分配内存、输入/输出设备等必要的资源,并建立相应的进程,以使它们获得竞争处理机的权利。简而言之,就是内存与辅存之间的调度。对于每个作业只调入一次、调出一次。
2、中级调度(内存调度)
引入中级调度是为了提高内存利用率和系统吞吐量。为此,应使那些暂时不能运行的进程,调至外存等待,把此时的进程状态称为挂起状态。当它们已具备运行条件且内存又稍有空闲时,由中级调度来决定,把外存上的那些已具备运行条件的就绪进程再重新调入内存,并修改其状态为就绪状态,挂在就绪队列上等待。
3、进程调度(低级调度)
主要任务是按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给它。进程调度室操作系统中最基本的一种调度,在一般操作系统中都必须配置进程调度。

1.3 三级调度的联系

作业调度从外存的后备队列中选择一批作业进入内存,为它们建立进程,这些进程被送入就绪队列;
进程调度从就绪队列中选出一个进程,并把其状态改为运行状态,把CPU分配给它;
中级调度室为了提高内存的利用率,系统将那些暂时不能运行的进程挂起来,当内存空间宽松时,通过中级调度选择具备运行条件的进程,将其唤醒。
(1)作业调度为进程活动做准备,进程调度使进程正常活动起来,中级调度将暂时不能运行的进程挂起,中级调度处于作业调度和进程调度之间。
(2)作业调度次数少,中级调度次数略多,进程调度频率最高。
(3)进程调度室最基本的,不可或缺。

1.4 进程调度方式

进程调度方式是指当某一个进程正在处理机上执行时,若有某个更为重要或紧迫的进程需要处理,即有优先权更高的进程进入就绪队列,此时应如何分配处理机。
1、非剥夺调度方式(非抢占方式)
当一个进程正在处理机上执行时,即使有某个更为重要或紧迫的进程进入就绪队列,仍然让正在执行的进程继续执行,直到该进程完成或发生某种事件而进入阻塞状态时,才将处理机分配给更为重要或紧迫的进程。
在非剥夺调度方式下,一旦把CPU分配给一个进程,那么该进程就会保持CPU直到终止或转换到等待状态。
优点:实现简单、系统开销小,适用于大多数批处理系统,但它不能用于分时系统和大多数的实时系统。
2、剥夺调度方式(抢占方式)
当一个进程正在处理机上执行时,若有某个更为重要或紧迫的进程需要使用处理机,则立即暂停正在执行的进程,将处理机分配给这个更为重要或紧迫的进程。
采用剥夺式的调度,对提高系统吞吐率和响应效率都有明显的好处。但“剥夺”不是一种任意性行为i,必须遵守一定的原则,主要有:优先权、短进程优先和时间片原则等。

1.5 调度的基本准则

1、CPU利用率
CPU是计算机系统中最重要和昂贵的资源之一,所以应尽可能使CPU保持“忙”状态,使这一资源利用率最高。
2、系统吞吐量
表示单位时间内CPU完成作业的数量。长作业需要消耗较长的处理机时间,因此会降低系统的吞吐量。而对于短作业,它们所需要消耗的处理机时间较短,因此能提高系统的吞吐量。
3、周转时间
指从作业提交到作业完成所经历的时间,包括作业等待、在就绪队列中排队、在处理机上运行以及进行输入/输出操作所花费时间的总和。
作业的周转时间公式表示:
周转时间=作业完成时间-作业提交时间
平均周转时间是指多个作业周转时间的平均值:
平均周转时间=(作业1的周转时间+作业2的周转时间+…+作业n的周转时间)/n
带权周转时间是指作业周转时间与作业实际运行时间的比值:
带权周转时间=作业周转时间/作业实际运行时间
平均带权周转时间是指多个作业带权周转时间的平均值:
平均带权周转时间=(作业1的带权周转时间+…+作业n的带权周转时间)/n
4、等待时间
指进程处于等处理机状态时间之和,等待时间越长,用户满意度越低。
处理机调度算法实际上不影响作业执行或输入/输出操作的时间,只影响作业在就绪队列中等待所花的时间
5、响应时间
指从用户提交请求道系统首次产生响应所用的时间。

二、典型调度算法

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

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

FCFS调度算法属于不可剥夺算法
FCFS调度算法的特点是算法简单,但效率低;对长作业比较有利,但对短作业不利(相对SJF和高响应比);有利于CPU繁忙型作业,而不利于I/O繁忙型作业。

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

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

SJF调度算法的缺点:
(1)对长作业不利,长作业的周转时间会增加,更严重的是,如果一长作业进入系统的后备队列,由于调度程序总是优先调度那些短作业,将导致长作业长期不被调度(饥饿现象)。
(2)完全未考虑作业的紧迫程度,因而不能保证紧迫性作业会被及时处理。
(3)由于作业的长短只是根据用户所提供的估计执行时间而定的,而用户又可能会有意无意地所缩短其作业的估计时间,致使算法不一定能真正做到短作业优先调度。

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

2.3 优先级调度算法

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

根据新的更高优先级进程能否抢占正在执行的进程,可将该调度算法分为:
(1)非剥夺式优先级调度算法
当某个进程正在处理机上运行时,即使有某个更为重要或紧迫的进程进入就绪队列,仍然让正在运行的进程继续运行,直到由于自身的原因而主动让出处理机时(任务完成或等待事件),才把处理机分配给更为重要或紧迫的进程。
(2)剥夺式优先级调度算法
当一个进程正在处理机上运行时,若有某个更为重要或紧迫的进程进入就绪队列,则立即暂停正在运行的进程,将处理机分配给更重要或紧迫的进程。

根据进程创建后其优先级是否可以改变,可以将进程优先级分为以下两种:
(1)静态优先级
优先级是在创建进程时确定的,且在进程的整个运行期间保持不变。确定静态优先级的主要依据有进程类型、进程对资源的要求、用户要求。
(2)动态优先级
在进程运行过程中,根据进程情况的变化动态调整优先级。动态调整优先级的主要依据为进程占有CPU时间的长短、就绪进程等待CPU时间的长短。

2.4 高响应比优先级调度算法

高响应比优先级调度算法主要用于作业调度,该算法是对FCFS调度算法和SJF调度算法的一种综合平衡,同时考虑每个作业的等待时间和估计得运行时间。在每次进行作业调度时,先计算后备作业队列中每个作业的响应比,从中选出响应比最高的作业投入运行。
响应比的变化规律可描述为
响应比RpR_p=(等待时间+要求服务时间)/要求服务时间
根据上式可知:
(1)当作业的等待时间相同时,则要求服务时间越短,其响应比越高,有利于短作业。
(2)当要求服务时间相同时,作业的响应比由其等待时间决定,等待时间越长,其响应比越高,因而它实现的是先来先服务。
(3)对于长作业,作业的响应比可以随等待时间的增加而提高,当其等待时间足够长时,其响应比便可升到很高,从而也可获得处理机。克服了饥饿状态,兼顾了长作业。

2.5 时间片转轮调度算法

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

时间片转轮调度算法中,时间片的大小对系统性能的影响很大。如果时间片足够大,以至于所有进程都能在一个时间片内执行完毕,则时间片转轮调度算法就退化为先来先服务调度算法。如果时间片很小,那么处理机将在进程间过于频繁切换,使处理机的开销增大,而真正用于运行用户进程的时间将减少。

时间片的长短通常由以下因素确定:系统的响应时、就绪队列中的进程数目和系统的处理能力。

2.6 多级反馈队列调度算法

多级反馈队列调度算法是时间片转轮调度算法和优先级调度算法的综合和发展。通过动态调整进程优先级和时间片大小,多级反馈队列调度算法可以兼顾多方面的系统目标。

多级反馈队列调度算法的实现思想如下:
(1)应设置多个就绪队列,并为各个队列赋予不同的优先级,第1级队列的优先级最高,第2级队列的优先级次之,其余队列的优先级逐次降低。
(2)赋予各队列中进程执行时间片的大小也各不相同,在优先级越高的队列中,每个进程的运行时间就越小。
(3)当一个新的进程进入内存后,首先将它放入第1级队列的末尾,按FCFS原则排队等待调度。当轮到该进程执行时,如它能在该时间片内完成,边可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第2级队列的末尾,再同样地按FCFS原则等待调度执行;如果它在第2级队列运行一个时间片仍未完成,再以同样的方法放入第3级队列……如此下去,当一个长进程从第1级队列依次降到第n级队列后,在第n级队列中便采用时间片转轮的方式运行。
(4)仅当第1级队列为空时,调度程序才调度第2级队列的进程运行;仅当第1~i-1级队列均为空时,才会调度第i级队列中的进程运行。如果处理机正在执行第i级队列中的某进程时,又有新进程进入优先级较高的队列,则此时新进程将抢占正在运行进程的处理机,即由调度程序把正在运行的进程放回到第i级队列的末尾,把处理机分配给新到的更高优先级的进程。

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

操作系统 进程管理之处理机调度相关推荐

  1. 操作系统:第二章 进程管理2 - 处理机调度

    本文已收录至 Github(MD-Notes),若博客中有图片打不开,可以来我的 Github 仓库:https://github.com/HanquanHq/MD-Notes,涵盖了互联网大厂面试必 ...

  2. 计算机操作系统(汤子瀛)习题答案 第2-3章、进程管理、处理机管理

    1.试画出下面条语句的前趋图: S1:a=5-x: S2:b=a*x: S3:c=4*x: S4:d=b+c: S5:e=d+3. S1->S2->S4->S5 ......../ ...

  3. Linux进程管理 (7)实时调度

    关键词:RT.preempt_count.RT patch. 除了CFS调度器之外,还包括重要的实时调度器,有两种RR和FIFO调度策略.本章只是一个简单的介绍. 更详细的介绍参考<Linux进 ...

  4. linux 进程管理 ppt,linux操作系统-进程管理和打印管理.ppt

    <linux操作系统-进程管理和打印管理.ppt>由会员分享,可在线阅读,更多相关<linux操作系统-进程管理和打印管理.ppt(25页珍藏版)>请在装配图网上搜索. 1.进 ...

  5. 面试-操作系统-进程管理-进程-进程调度-死锁

    文章目录 ==概念== 备注 简单说下你对并发和并行的理解? 同步.异步.阻塞.非阻塞的概念? 操作系统概念? 一个程序从开始运行到结束的完整过程,你能说出来多少? 用户态和内核态是如何切换的? 什么 ...

  6. 考研—操作系统—进程管理

    综述:何谓进程,进行中的程序,顾名思义,进程就是运行中的程序.即用户使用时的东西.所以进程是一种动态的概念,是只存在一段时间的过程概念.有着开始有着灭亡.进程可以称为是动态的程序.是程序实现功能时的投 ...

  7. 操作系统 进程管理(一)——进程的含义与状态

    目录 程序的执行特征 程序的顺序执行及其特征 程序并发执行的特征 进程的基本概念 进程的含义与特征 (一) 进程的定义 (二)进程的结构 (三) 进程与程序的区别与联系 (四) 进程的特征 (五) 进 ...

  8. 操作系统——进程管理(一文弄懂进程间的那些事)

    进程管理 进程 进程的概念 PCB 进程的组成 进程的特征 进程的状态与转换 进程的状态 进程间的转换 进程的组织方式 链接方式 索引方式 进程控制 怎么实现进程控制--原语 进程的创建 进程的终止 ...

  9. 王道操作系统:2.2_1处理机调度的概念、层次

    知识总览 调度的基本概念 当有一堆任务要处理,但由于资源有限,这些事情没法同时处理.这就需要确定某种规则来决定处理这些任务的顺序,这就是"调度"研究的问题. 在多道程序系统中,进程 ...

最新文章

  1. linux 别名管理,Linux 的 15 个命令行别名, 帮系统管理员提升工作效率!
  2. Oracle 数据库常用操作语句大全
  3. [Google Guava] 10-散列
  4. Python基础学习01
  5. C语言switch怎么算,超级新手,用switch写了个计算器程序,求指导
  6. 实现拍照_实现“拍照自由”!vivo IFEA分离式镜头打破思维定势
  7. Python实现电影订票系统
  8. 三维模型转换html,三维模型查看器转换软件FinalMesh Professional 1.2.0.329 Pro | C4DSKY...
  9. android怎样开启root权限管理,【经验】安卓手机怎么开启Root权限?
  10. spring-boot mybadis多数据源配置
  11. 小白入行,测试点随手记
  12. 自动驾驶汽车如何有助于可持续移动规划?
  13. Redis源码剖析和注释(十六)---- Redis输入输出的抽象(rio)
  14. Azure: Azure AD(For Development)的使用
  15. JavaEE之Servlet/Jsp初识
  16. LTE网络中PDN,承载,IP的关系
  17. 4-2-1 求e的近似值 (15分)
  18. 教你如何将网页上的视频下载到手机
  19. vscode open in browser配置默认浏览器
  20. json stm8s103 解析_基于STM8的ADC读取---STM8-第四章

热门文章

  1. 三种近场通信技术及未来近场通信技术前景
  2. MongoDB-数据库安装及常见操作-001
  3. 看风水用什么罗盘最好_风水罗盘放在什么位置效果最好?
  4. 李忠汇编语言-初学-第二天
  5. DS||简单扑克牌游戏(一)
  6. linux 精简系统 存储,系统运维|在LVM中设置精简资源调配卷(第四部分)
  7. c语言数字拼图游戏代码
  8. 常见AU AAX VST3音乐音频处理插件安装目录
  9. 智能电网如何实现 ?
  10. java appendto方法_jquery中append()与appendto()用法分析