1. 先来先服务调度算法:先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。
  2. 短作业(进程)优先调度算法:短作业(进程)优先调度算法SJ(P)F,是指对短作业或短进程优先调度的算法。它们可以分别用于作业调度和进程调度。短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。而短进程优先(SPF)调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。
  3. 高优先权优先调度算法:为了照顾紧迫型作业,使之在进入系统后便获得优先处理,引入了最高优先权优先(FPF)调度算法。此算法常被用于批处理系统中,作为作业调度算法,也作为多种操作系统中的进程调度算法,还可用于实时系统中。当把该算法用于作业调度时,系统将从后备队列中选择若干个优先权最高的作业装入内存。当用于进程调度时,该算法是把处理机分配给就绪队列中优先权最高的进程,这时,又可进一步把该算法分成如下两种。
  •     3.1) 非抢占式优先权算法:在这种方式下,系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直至完成;或因发生某事件使该进程放弃处理机时,系统方可再将处理机重新分配给另一优先权最高的进程。这种调度算法主要用于批处理系统中;也可用于某些对实时性要求不严的实时系统中。
  •     3.2) 抢占式优先权调度算法:在这种方式下,系统同样是把处理机分配给优先权最高的进程,使之执行。但在其执行期间,只要又出现了另一个其优先权更高的进程,进程调度程序就立即停止当前进程(原优先权最高的进程)的执行,重新将处理机分配给新到的优先权最高的进程。因此,在采用这种调度算法时,是每当系统中出现一个新的就绪进程i 时,就将其优先权Pi与正在执行的进程j 的优先权Pj进行比较。如果Pi≤Pj,原进程Pj便继续执行;但如果是Pi>Pj,则立即停止Pj的执行,做进程切换,使i 进程投入执行。显然,这种抢占式的优先权调度算法能更好地满足紧迫作业的要求,故而常用于要求比较严格的实时系统中,以及对性能要求较高的批处理和分时系统中。
  •     3.3)容易出现先级倒置现象:优先级反转是指一个低优先级的任务持有一个被高优先级任务所需要的共享资源。高优先任务由于因资源缺乏而处于受阻状态,一直等到低优先级任务释放资源为止。而低优先级获得的CPU时间少,如果此时有优先级处于两者之间的任务,并且不需要那个共享资源,则该中优先级的任务反而超过这两个任务而获得CPU时间。如果高优先级等待资源时不是阻塞等待,而是忙循环,则可能永远无法获得资源,因为此时低优先级进程无法与高优先级进程争夺CPU时间,从而无法执行,进而无法释放资源,造成的后果就是高优先级任务无法获得资源而继续推进。
  •     3.4)优先级反转案例解释:不同优先级线程对共享资源的访问的同步机制。优先级为高和低的线程tall和线程low需要访问共享资源,优先级为中等的线程mid不访问该共享资源。当low正在访问共享资源时,tall等待该共享资源的互斥锁,但是此时low被mid抢先了,导致mid运行tall阻塞。即优先级低的线程mid运行,优先级高的tall被阻塞。
  •     3.5)优先级倒置解决方案:
  • (3.5.1)设置优先级上限,给临界区一个高优先级,进入临界区的进程都将获得这个高优先级,如果其他试图进入临界区的进程的优先级都低于这个高优先级,那么优先级反转就不会发生。
  • (3.5.2)优先级继承,当一个高优先级进程等待一个低优先级进程持有的资源时,低优先级进程将暂时获得高优先级进程的优先级别,在释放共享资源后,低优先级进程回到原来的优先级别。嵌入式系统VxWorks就是采用这种策略。
  • 这里还有一个八卦,1997年的美国的火星探测器(使用的就是vxworks)就遇到一个优先级反转问题引起的故障。简单说下,火星探测器有一个信息总线,有一个高优先级的总线任务负责总线数据的存取,访问总线都需要通过一个互斥锁(共享资源出现了);还有一个低优先级的,运行不是很频繁的气象搜集任务,它需要对总线写数据,也就同样需要访问互斥锁;最后还有一个中优先级的通信任务,它的运行时间比较长。平常这个系统运行毫无问题,但是有一天,在气象任务获得互斥锁往总线写数据的时候,一个中断发生导致通信任务被调度就绪,通信任务抢占了低优先级的气象任务,而无巧不成书的是,此时高优先级的总线任务正在等待气象任务写完数据归还互斥锁,但是由于通信任务抢占了CPU并且运行时间比较长,导致气象任务得不到CPU时间也无法释放互斥锁,本来是高优先级的总线任务也无法执行,总线任务无法及时执行的后果被探路者认为是一个严重错误,最后就是整个系统被重启。Vxworks允许优先级继承,然而遗憾的工程师们将这个选项关闭了。
  • (3.5.3)第三种方法就是临界区禁止中断,通过禁止中断来保护临界区,采用此种策略的系统只有两种优先级:可抢占优先级和中断禁止优先级。前者为一般进程运行时的优先级,后者为运行于临界区的优先级。火星探路者正是由于在临界区中运行的气象任务被中断发生的通信任务所抢占才导致故障,如果有临界区的禁止中断保护,此一问题也不会发生。

       4、高响应比优先调度算法:在批处理系统中,短作业优先算法是一种比较好的算法,其主要的不足之处是长作业的运行得不到保证。如果我们能为每个作业引入前面所述的动态优先权,并使作业的优先级随着等待时间的增加而以速率a 提高,则长作业在等待一定的时间后,必然有机会分配到处理机。该优先权的变化规律可描述为:

在利用该算法时,每要进行调度之前,都须先做响应比的计算,这会增加系统开销。

       5、时间片轮转法:在早期的时间片轮转法中,系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU 分配给队首进程,并令其执行一个时间片。时间片的大小从几ms 到几百ms。当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片。这样就可以保证就绪队列中的所有进程在一给定的时间内均能获得一时间片的处理机执行时间。换言之,系统能在给定的时间内响应所有用户的请求。

       6、多级反馈队列调度算法:前面介绍的各种用作进程调度的算法都有一定的局限性。如短进程优先的调度算法,仅照顾了短进程而忽略了长进程,而且如果并未指明进程的长度,则短进程优先和基于进程长度的抢占式调度算法都将无法使用。而多级反馈队列调度算法则不必事先知道各种进程所需的执行时间,而且还可以满足各种类型进程的需要,因而它是目前被公认的一种较好的进程调度算法。在采用多级反馈队列调度算法的系统中,调度算法的实施过程如下所述。

  • (1) 应设置多个就绪队列,并为各个队列赋予不同的优先级。第一个队列的优先级最高,第二个队列次之,其余各队列的优先权逐个降低。该算法赋予各个队列中进程执行时间片的大小也各不相同,在优先权愈高的队列中,为每个进程所规定的执行时间片就愈小。例如,第二个队列的时间片要比第一个队列的时间片长一倍,……,第i+1个队列的时间片要比第i个队列的时间片长一倍。

  • (2)当一个新进程进入内存后,首先将它放入第一队列的末尾,按FCFS原则排队等待调度。当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第二队列的末尾,再同样地按FCFS原则等待调度执行;如果它在第二队列中运行一个时间片后仍未完成,再依次将它放入第三队列,……,如此下去,当一个长作业(进程)从第一队列依次降到第n队列后,在第n 队列便采取按时间片轮转的方式运行。

  • (3) 仅当第一队列空闲时,调度程序才调度第二队列中的进程运行;仅当第1~(i-1)队列均空时,才会调度第i队列中的进程运行。如果处理机正在第i队列中为某进程服务时,又有新进程进入优先权较高的队列(第1~(i-1)中的任何一个队列),则此时新进程将抢占正在运行进程的处理机,即由调度程序把正在运行的进程放回到第i队列的末尾,把处理机分配给新到的高优先权进程。

    批处理系统、分时系统和实时系统中,各采用哪几种进程(作业)调度算法?

    批处理系统常用调度算法:
    ①、先来先服务:FCFS
    ②、最短作业优先
    ③、最短剩余时间优先
    ④、响应比最高者优先

    分时系统调度算法:
    ①、轮转调度
    ②、优先级调度
    ③、多级队列调度
    ④、彩票调度

    实时系统调度算法:
    ①、单比率调度
    ②、限期调度
    ③、最少裕度法

操作系统中的进程调度策略有哪几种相关推荐

  1. 操作系统中的进程控制块又起什么作用呢?

    为了便于系统控制和描述进程的活动过程,在操作系统核心中定义了一个专门的数据结构,称为进程控制块( Process Control block,PCB). 操作系统利用PCB来描述进程的基本情况以及进程 ...

  2. 操作系统中的进程与线程

    简介 在传统的操作系统中,进程拥有独立的内存地址空间和一个用于控制的线程.但是,现在的情况更多的情况下要求在同一地址空间下拥有多个线程并发执行.因此线程被引入操作系统. 为什么需要线程? 如果非要说是 ...

  3. 操作系统中的进程与线程和java中的线程

    简介 在传统的操作系统中,进程拥有独立的内存地址空间和一个用于控制的线程.但是,现在的情况更多的情况下要求在同一地址空间下拥有多个线程并发执行.因此线程被引入操作系统. 为什么需要线程? 如果非要说是 ...

  4. 操作系统中的进程间相互作用

    在一个计算机系统中存在着多个进程,这些进程之间可能有逻辑上的关系,也可能没有逻辑上的关系.进程之间无论是否存在逻辑上的关系,由于它们都要共享或竞争一个计算机系统中的资源,所以不可避免地会互相发生作用. ...

  5. 操作系统中的进程是如何 “调度” 的?

    一.处理机调度的概念和层次 1.1 调度的基本概念 当有一堆任务要处理,但由于资源有限,这些事情没法同时处理.这就需要确定某种规则来决定处理这些任务的顺序,这就是"调度"研究的问题 ...

  6. 操作系统中的进程管理

    目录 什么是进程? 进程控制块抽象(PCB) 虚拟地址空间 什么是进程? 进程是操作系统对一个正在运行的程序的一种抽象,进程可以看作是程序的一次运行过程:同时,在操作系统内部,进程是操作系统进行资源分 ...

  7. Linux进程调度策略有哪几种,Red Hat Enterprise Linux 8的9种实时进程调度策略

    Red Hat Enterprise Linux 8的9种实时进程调度策略 Red Hat Enterprise Linux 8使用是Linux内核版本是Kernel 4.18,其系统进程的实时调度策 ...

  8. 操作系统中,进程与线程怎么设计的?

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者 | 阮一峰 来源 | ruanyifeng.com/blog/2013/04/proc ...

  9. 多图 | 操作系统中,进程与线程怎么设计的?

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"加入公众号专属技术群 来源:http://rrd.me/eYm9B 进程(pro ...

  10. 操作系统中常见的进程调度算法

    一.调度与调度算法 调度:操作系统管理了系统的有限资源,当有多个进程(或多个进程发出的请求)要使用这些资源时,因为资源的有限性,必须按照一定的原则选择进程(请求)来占用资源.这就是调度.目的是控制资源 ...

最新文章

  1. 数据结构源码笔记(C语言):统计字符串中出现的字符及其次数
  2. UA MATH567 高维统计IV Lipschitz组合4 对称群上的均匀分布
  3. SQLite使用手记
  4. CSS--选择符大全(常用css选择符)
  5. 如何使用W5300实现ADSL连接(二)
  6. 服务器ping多少网站打开正常,服务器网站ping异常问题解析
  7. map java 用法_java中map 9种常规用法
  8. 目标检测之2015iccv---objdetection 专题论文
  9. 必知必会 | Android 测试相关的方方面面都在这儿
  10. Java求所占百分比
  11. 鸿鹄云商平台--技术框架
  12. L TEXT和 _T的区别
  13. Spring Boot Admin 2.3 简洁Demo
  14. 字体图标库(Font Awesome)的使用--绝佳的图标字体库和CSS框架
  15. Nvidia Agx Xavier平台nvp6324模块调试
  16. 稳压二极管TVS二极管
  17. GreenPlum 大数据平台--安装
  18. 2022-2028全球与中国大豆磷脂复合物市场现状及未来发展趋势
  19. camera中文版软件 ip_ip camera软件下载-IP Camera Viewer(网络摄像机监控软件)下载 v4.09官方版--pc6下载站...
  20. Ds1302时钟+独立按键校正时间

热门文章

  1. qq接收不了文件显示服务器拒绝,QQ提示服务器拒绝了您发送离线文件怎么办
  2. Hadoop上路-03_Hadoop JavaAPI
  3. linux dsp开发环境,在ubuntu上搭建uclinux开发环境(转载)--- 第二篇
  4. 知识小结------数据分析------Cox比例风险回归模型(proportional hazards model)
  5. Mil学习之 MimArith 图片逻辑运算
  6. matlab语言与测绘,MATLAB语言及测绘数据处理应用
  7. 08-搭建Rest服务 - 04权限管理
  8. 在网页中打开展示pdf文件
  9. 对于基金定投,以月、周、天为单位,哪个更好?
  10. 基金定投如何选择买卖点?——关于定投的择时研究