码迷,mamicode.com
首页 > 编程语言 > 详细

常见的进程调度算法

时间:2016-06-17 17:43:41      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:进程调度   先来先服务   短作业优先   高优先级调度   时间片轮转调度   

一、进程和作业的区别

  区别:进程是一个程序在一个数据集上的一次执行,而作业是用户提交给系统的一个任务。
  关系:一个作业通常包括几个进程,几个进程共同完成一个任务,即作业。
  作业调度是宏观调度,它决定了哪一个作业能进入主存。进程调度是微观调度,它决定各作业中的哪一个进程占有中央处理器。

二、先来先服务和短作业(进程)优先调度算法

  ①先来先服务(FCFS)

  可用于作业调度和进程调度,简单来说,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之运行,一直运行到完成或发生某事件而阻塞后才放弃处理机。它是一种最简单的调度算法。

  ②短作业(进程)优先

  短作业(进程)优先调度算法SJ(P)F,是指对短作业或短进程优先调度的算法。它们可以分别用于作业调度和进程调度。短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。而短进程优先(SPF)调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。

  这两种算法都是当进程或作业被分配处理机后,一直执行直到完成或被阻塞而放弃处理机。

三、高优先权优先调度算法

  ①优先权调度算法

  a.非抢占式优先权算法 

  系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直至完成或被阻塞而放弃处理机,此时系统方可再将处理机重新分配给另一优先权最高的进程。这种调度算法主要用于批处理系统中;也可用于某些对实时性要求不严的实时系统中。批处理是指用户将一批作业提交给操作系统后就不再干预,由操作系统控制它们自动运行。实时系统指计算的正确性不仅取决于程序的逻辑正确性,也取决于结果产生的时间,如果系统的时间约束条件得不到满足,将会发生系统出错。

  b.抢占式优先权算法

  系统把处理机分配给优先权最高的进程后,当就绪队列中出现一个比当前执行进程的优先级还高的进程时,进程调度程序就会停止当前进程,重新把处理机分配给优先级最高的进程。这种抢占式的优先权调度算法能更好地满足紧迫作业的要求,故而常用于要求比较严格的实时系统中,以及对性能要求较高的批处理和分时系统中。

  ②高响应比优先调度算法

  优先权=(等待时间+服务时间)/服务时间。

  (1) 如果作业的等待时间相同,则要求服务的时间愈短,其优先权愈高,因而该算法有利于短作业。

  (2) 当要求服务的时间相同时,作业的优先权决定于其等待时间,等待时间愈长,其优先权愈高,因而它实现的是先来先服务。

  (3) 对于长作业,作业的优先级可以随等待时间的增加而提高,当其等待时间足够长时,其优先级便可升到很高,从而也可获得处理机。简言之,该算法既照顾了短作业,又考虑了作业到达的先后次序,不会使长作业长期得不到服务。因此,该算法实现了一种较好的折衷。当然,在利用该算法时,每要进行调度之前,都须先做响应比的计算,这会增加系统开销。

四、基于时间片的轮转调度算法

  1.时间片轮转法

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

  2.多级反馈队列调度算法

  设有N个队列(Q1,Q2....QN),优先级Priority(Q1) > Priority(Q2) > ... > Priority(QN)。

各个队列的时间片是随着优先级的增加而减少的,也就是说,优先级越高的队列中它的时间片就越短。

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

  ②首先调度优先级高的队列中的进程。若高优先级中队列中已没有调度的进程,则调度次优先级队列中的进程。例如:Q1,Q2,Q3三个队列,只有在Q1中没有进程等待时才去调度Q2,同理,只有Q1,Q2都为空时才会去调度Q3。

  ③对于同一个队列中的各个进程,按照时间片轮转法调度。比如Q1队列的时间片为N,那么Q1中的作业在经历了N个时间片后若还没有完成,则进入Q2队列等待,若Q2的时间片用完后作业还不能完成,一直进入下一级队列,直至完成。

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

  多级反馈队列调度算法既能使高优先级的作业得到响应又能使短作业(进程)迅速完成。

常见的进程调度算法

标签:进程调度   先来先服务   短作业优先   高优先级调度   时间片轮转调度   

原文地址:http://wanggaojun.blog.51cto.com/11409446/1790182

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!