进程调度算法

来源:互联网 发布:网络歌手名单女 编辑:程序博客网 时间:2024/06/08 06:12

进程调度算法


          进程调度:从就绪进程中选取一个进程,让它占用处理器的工作称为进程调度。

          作业调度选中了一个作业,并且把它装入主存储器中时,就为该作业创建了一个用户进程,若有多个作业被装入主存储器,就会创建多个用户进程,这些进程的初始状态都为就绪态。

          如果有多个进程出现,去竞争占用处理器,此时,必须按照规则从就绪进程中选择一个进程,让它占用处理器。




          处理器的三级调度

          高级、中级和低级调度作业从提交开始直到完成,往往要经历下述三级调度:

          高级调度:(High-Level Scheduling)又称为作业调度,它决定把后备作业调入内存运行;

          低级调度:(Low-Level Scheduling)又称为进程调度,它决定把就绪队列的某进程获得CPU;

          中级调度:(Intermediate-LevelScheduling)又称为在虚拟存储器中引入,在内、外存对换区进行进程对换。


          处理器的工作方式

          包括两种工作方式,非剥夺方式和剥夺方式。

          非剥夺方式:分派程序一旦把处理机分配给某进程后便让它一直运行下去,直到进程完成或发生某事件而阻塞时,才把处理机分配给另一个进程。

          剥夺方式:当一个进程正在运行时,系统可以基于某种原则,剥夺已分配给它的处理机,将之分配给其它进程。剥夺原则有:优先权原则、短进程优先原则、时间片原则。




          常见的进程调度算法

          常见的进程调度算法,包括先来先服务算法、短进程优先算法、时间片轮转法、最高级优先算法和多级反馈队列调度算法。

          先来先服务算法——FIFO

就是按照进程进入就绪队列的先后次序,来选择可占用处理器的进程,当有一个进程就绪时,会把该进程排入就绪队列的末尾,而总是把处理器分配给就绪队列中的第一个进程。

          一旦一个进程占用了处理器,它就会一直运行下去,直到该进程完成工作而结束,或者等待某事件而不能运行时,才会让出处理器。

          FIFO算法服务质量不佳,容易引起作业用户不满,常作为一种辅助调度算法。


          短进程优先算法——SCBF

          最短CPU运行期优先调度算法(SCBF--Shortest CPU BurstFirst)该算法就是,从就绪队列中选出下一个“CPU执行期最短”的进程,为之分配处理机。

          该算法虽可获得较好的调度性能,但难以准确地知道下一个CPU执行期,而只能根据每一个进程的执行历史来预测。


          时间片轮转算法

          时间片是指允许进程一次占用处理器的最长时间。

          该算法就是,按照就绪进程队列,总是选择第一个进程让它占用处理器,但是,规定它一次连续占用处理器的时间不能超过预定的时间片。

          如果允许的时间片用完,而进程尚未完成,此时它必须让出处理器给下一个就绪进程,重新排到就绪队列的末尾等待再次执行,此外,当在允许的时间片内该进程出现了等待事件,也必须让出处理器,排入的等待队列。

          一次运行未完成的工作的进程,可以再作第二次的轮转,如此反复循环,直到该进程工作完为止。

          前几种算法主要用于批处理系统中,不能作为分时系统中的主调度算法,在分时系统中,都采用时间片轮转法。


          最高优先级调度算法

          就是对每一个进程分配一个优先级,总是让当前优先级最高的进程使用处理器,此时,又分为两种方式,抢占式和非抢占式。

          抢占式:保证任何时刻,都是具有最高优先级的进程在处理器上运行,当有一个优先级更高的进程到达时,当前运行进程必须主动让出处理器。

          非抢占式:如果来一个具有更高优先级的进程,处理器上的当前进程,不会让出处理器知道运行结束。


          多级反馈队列

          就是在系统中设置多个就绪队列,并赋予各队列以不同的优先权,UNIX操作系统采取的便是这种调度算法。

          1、进程在进入待调度的队列等待时,首先进入优先级最高的等待。

          2、首先调度优先级高的队列中的进程,若高优先级中队列中已没有调度的进程,则调度次优先级队列中的进程。

          3、对于同一个队列中的各个进程,按照时间片轮转法调度。

          4、在低优先级的队列中的进程在运行时,又有新到达的作业,那么在运行完这个时间片后,CPU马上分配给新到达的作业(抢占式)。

 

1 0