常见的作业调度和进程调度算法

常见的作业调度和进程调度算法

首先,我们来解释一下一会儿需要使用到的几个名词,分别是:调度、调度算法、作业调度、进程调度。

  • 调度:操作系统管理的系统资源有限,当有多个进程(或多个进程发出的请求)要使用这些资源时,必须按照一定的原则选择进程(请求)来占用资源。也就是说调度的实质是一种资源分配。
  • 调度算法:根据系统的资源分配策略所规定的资源分配算法。
  • 作业调度:根据JCB中的信息,检查系统中的资源是否能满足作业对资源的需求,以及按照一定的调度算法,从外存的后备队列中选取某些作业调入内存,并为他们创建进程,分配必要的资源,然后再将新创建的进程排在就绪队列上等待调度。因此,也把作业调度称为接纳调度。
  • 进程调度:当计算机系统处于就绪状态的用户进程数多于CPU数时,就会产生多个进程或线程同时竞争CPU的结果。假设现在只有一个CPU可用,那么操作系统就必须选择一个进程运行,并把处理机分配给该进程。
  • 非抢占式算法:在采用这种调度方式时,一旦把处理机分配给某进程时,就让它一直运行下去,绝不会因为时钟中断或者任何其他原因去抢占当前正在运行晋城的处理机,直至该进程完成,或者因为发生某件事被阻塞时,才把处理机分配给别的进程。
  • 抢占式算法:这种调度方式允许调度程序根据某种规则,去暂停某个正在执行的进程,将已经分配给该进程的处理机重新分配给另一进程。(当然,抢占是有一定原则的:1)优先权原则;2)短进程优先原则;3)时间片原则)

接下来我们分别讲解一下几种常见算法以及它们适用的调度类型。

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

算法思想算法规则适用调度类型是否可以抢占优点缺点是否会饥饿
主要从公平的角度考虑按照作业/进程到达的先后顺序进行调度 ,即:优先考虑在系统中等待时间最长的作业进程调度和作业调度非抢占式算法满足公平原则,且算法容易实现,比较利于长作业/进程排在长进程后的短进程的等待时间大,而且带权周转时间大,不利于短作业/进程不会

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

在这里我们需要注意一下:短进程调度算法简称为SPF

算法思想算法规则适用调度类型是否可以抢占优点缺点是否会饥饿
实际上,短进程/作业(要求服务时间最短)在实际情况中占有很大比例,为了使得它们优先执行,追求最少的平均等待时间时间、平均周转时间、平均带权周转时间要求服务时间最短的进程/作业优先得到服务进程调度和作业调度非抢占式算法,但是也有抢占式版本,即:最短剩余时间优先算法(SRTN)可以得到最少的平均等待时间时间、平均周转时间、平均带权周转时间不公平,对长作业不友好,对短作业友好会(短作业优先可能导致长作业一直得不到处理)

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

算法思想算法规则适用调度类型是否可以抢占优点缺点是否会饥饿
综合考虑等待时间和运行时间在每次调度时,先计算各个作业/进程的优先权:优先权=响应比=(等待时间+要求服务时间)/要求服务时间=相应时间/要求服务时间,选择优先权高的进行服务进程调度和作业调度非抢占式算法综合考虑了等待时间和要求服务时间,在等待时间相同时,要求服务的时间愈短,其优先权愈高,拥有SJF的优点,在要求服务时间相同时,作业的优先权决定于其等待时间,等待时间愈长,其优先权愈高,拥有FCFS的优点需要计算优先权,增加了系统的开销不会

时间片轮转调度算法(RR)

算法思想算法规则适用调度类型是否可以抢占优点缺点是否会饥饿
公平的、轮流的为各个进程服务,让每个进程在一定时间间隔内都可以得到响应系统根据FCFS策略,将所有的就绪进程排成一个就绪队列。轮流让各个进程执行一个时间片的,若进程未在一个时间片内执行完,则被剥夺处理机,将进程放到就绪队列队尾重新排队。进程调度抢占式算法公平、响应快,适用于分时操作系统由于高频率的进程切换,增加了开销,并且它不区分任务的紧急程度不会

补充:时间片大小的确定

  • 时间片过小:有利于短作业,因为它能在该时间片内完成,但是,意味着频繁的执行进程调度和进程上下文的切换,增加系统的开销。即:退化为短作业优先算法 。
  • 时间片过大:每个进程都能在一个时间片内完成,即退化为FCFS算法。

优先级调度算法

算法思想算法规则适用调度类型是否可以抢占优点缺点是否会饥饿
根据任务的紧急程度进行调度调度时选择优先级最高的作业/进程,为其分配处理机进程调度、作业调度、I/O调度抢占式算法和非抢占式算法用优先级区分任务的紧急程度,适用于实时操作系统。如果有源源不断的高优先级进程到来,那么低优先级的进程可能会饥饿

补充:
1、优先级是利用某一范围内的整数来表示的,又把该整数称为优先数(优先数的大小并不一定和优先级成正比)。确定优先级大小的依据如下;

  • 进程类型
  • 进程对资源的需求
  • 用户要求
    2、优先级的类型有两种:
  • 静态优先级:在创建进程时确定的,在进程的整个运行期间保持不变。虽然静态优先级简单易行,系统开销小,但是不够精确,可能会出现优先级低的进程长期没有被调度的情况。
  • 动态优先级:在创建程序之初,先赋予其一个优先级,然后其值随进程的推进或者等待时间的增加而改变,以获得更好的调度性能。

多级反馈队列调度算法

算法思想算法规则适用调度类型是否可以抢占优点缺点是否会饥饿
对以上调度算法的权衡和弥补1、设置多个就绪队列,各级队列的优先级由高到低,时间片从小到大;2、新进程到达时先进入第一级队列,按照FCFS的原则排队等待被分配时间片,若时间片已经用完进程还没结束,则进程进入下一级队尾,如果此时进程已经在最低一级的队列,则将其重新放回该队列的队尾;3、只有第k级队列为空时,才会为第k+1级队列分配时间片进程调度抢占式算法,当第k级队列在运行过程中,若更上级的队列到来了一个新进程,由于优先级问题,新进程会抢占处理机,并将原来运行的进程放回第k级队列的队尾对各种类型的进程都比较公平,每个新到达的进程都会很快得到响应,短进程只用较少的时间就可以完成,不用估计进程的运行时间。/可能会导致饥饿,概率不大

总结

  • FCFS,SJF,HRRN三种算法主要关心对用户的公平性、平均周转时间、平均等待时间等评价系统整体性能的指标,并不关心相应时间,也不区分任务的紧急程度,交互性糟糕。因此,这三种方式适用于早期的批处理系统。
  • 时间片轮转调度算法(RR),优先级调度算法,多级反馈队列调度算法注重响应时间,公平性等,因此,这三种算法适用于交互式系统。
  • 25
    点赞
  • 117
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
实验一 进程调度 编写并调试一个模拟的进程调度程序,采用“短进程优先”调度算法对五个进程进行调度。以加深对进程的概念及进程调度算法的理解. 下面是采用动态优先数的调度程序,可作参考。  例题: 设计一个有 N个进程共行的进程调度程序。   进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。   每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。   进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。   进程的运行时间以时间片为单位进行计算。   每个进程的状态可以是就绪 W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。   就绪进程获得 CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。   如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。   每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。重复以上过程,直到所要进程都完成为止。实验二 作业调度 一、实验目的:用高级语言编写和调试一个或多个作业调度的模拟程序,以加深对作业调度算法的理解。 二、实验内容: 1.写并调试一个单道处理系统的作业等待模拟程序。 2.作业等待算法:分别采用先来先服务(FCFS)、响应比高者优先(HRN)的调度算法。 3.由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的 CPU时限等因素。 4.每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。每个作业的最初状态总是等待W。 5.对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间。 三、思考:比较各种算法的优缺点。 实验三 动态分区分配方式的模拟 1、实验目的:了解动态分区分配方式中的数据结构和分配算法,并进一步加深对动态分区存储管理方式及其实现过程的理解 2、实验内容: (1)用C语言分别实现采用首次适应算法和最佳适应算法的动态分区分配过程和回收过程。其中,空闲分区通过空闲分区链(表)来管理;在进行内存分配时,系统优先使用空闲区低端的空间。 (2)假设初始状态下,可用的内存空间为640KB,并有下列的请求序列: •作业1申请130KB •作业2申请60KB •作业3申请100KB •作业2释放60KB •作业4申请200KB •作业3释放100KB •作业1释放130KB •作业5申请140KB •作业6申请60KB •作业7申请50KB •作业8申请60KB 请分别采用首次适应算法和最佳适应算法进行内存的分配和回收,要求每次分配和回收后显示出空闲内存分区链的情况。 3、思考:讨论各种分配算法的特点。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值