进程调度是什么意思?对流程很熟悉,那么你知道流程调度器吗?熟悉操作系统的用户都知道,用户进程的数量一般比处理器的数量多,这就导致了进程会争夺处理器的情况,所以进程调度器就派上了用场。许多合作伙伴可能想知道进程调度器是如何实现调度的。下面总结了操作系统中五种常见的进程调度算法。
进程调度是什么意思?
无论是在批处理系统还是分时系统中,用户进程的数量一般都大于处理器的数量,这将导致它们争夺处理器。此外,系统进程也需要使用处理器。这就要求进程调度器根据一定的策略,将处理器动态分配给就绪队列中的某个进程,使其可以执行。
操作系统的常见进程调度算法:
一、先来先服务 (FCFS,first come first served)
在所有的调度算法中,最简单的就是非抢占式FCFS算法。
算法原理:进程按照请求CPU的顺序使用CPU。就像你买东西排队的时候,谁先排队谁就先执行,执行的时候不会被打断。当其他人想进入内存执行时,他们必须排队等待。如果行刑的时候出了什么事,他现在不想排队,下一个排队的人会弥补。这时,如果他想再次排队,他只能站在队伍的最后。
算法的优点:易于理解,实现简单,只需要一个队列(FIFO),相当公平
算法的缺点:对长进程有利,但对短进程不利,对CPU繁忙的进程有利,但对I/O繁忙的进程不利。
二、最短作业优先(SJF, Shortest Job First)
最短作业优先(SJF)也称为最短流程下一步(SPN)。这是对FCFS算法的改进,其目标是减少平均周转时间。
算法原理:优先将处理器分配给估计执行时间短的进程。通常,后面的短进程不会抢占正在执行的进程。
算法优势:与FCFS算法相比,该算法可以提高平均周转时间和平均加权周转时间,缩短流程等待时间,提高系统吞吐量。
算法的缺点:对长进程非常不利,可能长时间不执行,执行的优先级无法根据进程的紧急程度划分,难以准确估计进程的执行时间,从而影响调度性能。
三、最高响应比优先法(HRRN,Highest Response Ratio Next)
HRRN(最高回应率其次)是FCFS和SJF之间的综合平衡。FCFS只考虑每个作业的等待时间,不考虑执行时间的长短,而SJF只考虑执行时间,不考虑等待时间的长短。因此,这两种调度算法在一些极端情况下会带来一些不便。HRN调度策略同时考虑每个作业的等待时间和估计的执行时间,选择响应率最高的作业执行。这样,即使是长作业,随着其等待时间的增加,W/T也会增加,有机会得到预定的执行。这个算法是FCFS和SJF之间的妥协。
算法原理:响应比R定义如下:R=(W/T)/T=1w/T
其中t是作业的估计执行时间,w是作业在备份状态队列中的等待时间。每当调度一个作业时,系统计算每个作业的响应比,选择R最大的一个投入执行。
算法优势:由于长作业有机会投入运行,同时处理的作业数量明显少于SJF方法,因此HRRN方法的吞吐量会小于SJF方法。
算法的缺点:由于每次调度前都需要计算响应比,系统开销会相应增加。
四、时间片轮转算法(RR,Round-Robin)
算法采用剥夺策略。时间片轮转调度是最古老、最简单、最公平、应用最广泛的算法,也称为RR调度。每个进程都被分配了一个称为其时间片的时间段,即允许该进程运行的时间。
算法原理:让就绪进程按照时间片轮流使用FCFS中的CPU调度方式,即按照FCFS原理将系统中所有就绪进程排列成队列,在每次调度时将CPU分配给组长进程,使其可以执行一个时间片,时间片的长度在几ms到几百ms之间,在一个时间片结束时, 发生时钟中断,因此调度程序暂停当前进程的执行,将其发送到就绪队列的末尾,并通过上下文切换执行当前队列的领导者进程。 进程可以在使用时间片之前转移CPU(如阻塞)。
算法优势:时间片轮转调度算法具有简单、平均响应时间短的特点。
算法的缺点:不利于处理紧急操作。在时间片旋转算法中,时间片的大小对系统性能有很大的影响,因此应该合理选择时间片的大小
如何确定时间片的大小:
1、系统对响应时间的要求
2.就绪队列中的进程数
3.系统的处理能力
五、多级反馈队列(Multilevel Feedback Queue)
多级反馈队列调度算法是UNIX操作系统采用的一种CPU处理器调度算法。
多级反馈队列调度算法描述:
1.当一个进程进入等待队列时,它首先进入等待优先级最高的Q1。
2.首先,以高优先级调度队列中的进程。如果队列中没有具有高优先级的计划进程,请在具有次优先级的队列中计划该进程。例如,Q1、Q2和Q3三个队列仅在Q1没有进程等待时调度Q2。同样,仅在Q1和Q2为空时发送第3季度。
3.同一队列中的每个进程根据时间片轮换方法进行调度。例如,如果Q1队列的时间片是n,那么如果在Q1的作业在n个时间片之后还没有完成,它将进入Q2队列等待;如果作业在Q2时间片用完后无法完成,它将进入下一个队列,直到完成。
4.当低优先级队列中的进程正在运行时,有一个新到达的作业,所以在运行这个时间片后,CPU立即分配新到达的作业(抢占)。
在多级反馈队列调度算法中,如果第一个队列的时间片略长于大多数人机交互所需的处理时间,则可以更好地满足各类用户的需求。
这里为大家总结一下进程调度的算法。经过小编的总结,相信大家对流程调度方案都有了一定的了解。