进程调度算法 6种
最近复习操作系统的内容,将网上的博客进行了整理,写了这篇博客。
涉及:FCFS,SJF,HRRN,FPF,MFQ,RR
http://www.cnblogs.com/kxdblog/p/4798401.html
一、先来先服务和短作业(进程)优先调度算法
1. 先来先服务调度算法 (FCFS,first come first served)
- 最简单的调度算法,即可用与作业调度,也可以用于进程调度。后备队列,调入内存,分配资源,创建进程,放入就绪队列
- 在作业调度中,算法每次从后备作业队列中选择最先进入该队列的一个或几个作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列。
- 在进程调度中,FCFS调度算法每次从就绪队列中选择最先进入该队列的进程,将处理机分配给它,使之投入运行,直到完成或因某种原因而阻塞时才释放处理机。
- 等待时间+运行时间=周转时间
- 属于不可剥夺算法
- 不能作为分时系统和实时系统
- 优点:是算法简单,对长作业比较有利,有利于CPU繁忙型作业
- 缺点: 但效率低,对短作业不利,不利于I/O繁忙型作业
2. 短作业(进程)优先调度算法 SJ(P)F
- 短作业(进程)优先调度算法是指对短作业(进程)优先调度的算法。短作业优先(SJF)调度算法是从后备队列中==选择一个或若干个估计运行时间最短的作业==,将它们调入内存运行。而短进程优先(SPF)调度算法,则是从就绪队列中选择一个估计运行时间最短的进程,将处理机分配给它,使之立即执行,直到完成或发生某事件而阻塞时,才释放处理机。
- 缺点: 长作业不利,“饥饿”现象,未考虑作业的紧迫程度,
- 优点: 平均等待时间、平均周转时间最少
二、高优先权优先调度算法
(优先级调度算法又称优先权调度算法)
3.优先权调度算法的类型(FPF)
- 在作业调度中,优先级调度算法每次从后备作业队列中选择优先级最髙的一个或几个作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列。在进程调度中,优先级调度算法每次从就绪队列中选择优先级最高的进程,将处理机分配给它,使之投入运行。
- 1) 非抢占式优先权算法
- 用于批处理系统,某些对实时性要求不严的实时系统中
- 2) 抢占式优先权调度算法
- 这种抢占式的优先权调度算法能更好地满足紧迫作业的要求,故而常用于要求比较严格的实时系统中,以及对性能要求较高的批处理和分时系统中
4. 高响应比优先调度算法(HRRN,Highest Response Ratio Next)
- 响应比=(进程执行时间+进程等待时间)/ 进程执行时间”,能够避免饥饿现象。
- 优点: 是兼顾长短作业。
- 缺点: 是计算响应比开销大,适用于批处理系统。
三、基于时间片的轮转调度算法
5. 时间片轮转调度算法(RR)
- 给每个进程固定的执行时间,根据进程到达的先后顺序让进程在单位时间片内执行,执行完成后便调度下一个进程执行,时间片轮转调度不考虑进程等待时间和执行时间,属于抢占式调度。
- 在时间片轮转调度算法中,==时间片==的大小对系统性能的影响很大。如果时间片足够大,以至于所有进程都能在一个时间片内执行完毕,则时间片轮转调度算法就退化为先来先服务调度算法。如果时间片很小,那么处理机将在进程间过于频繁切换,使处理机的开销增大,而真正用于运行用户进程的时间将减少。因此时间片的大小应选择适当。
- 时间片大小的确定 :1.系统对响应时间的要求
2.就绪队列中进程的数目
3.系统的处理能力 - 适用于分时系统
- 优点:简单易行,兼顾长短作业,平均响应时间短
- 缺点:平均等待时间较长,上下文切换费时,不利于处理紧急作业
6. 多级反馈队列(Multilevel Feedback Queue)
多级反馈队列调度算法是一种CPU处理机调度算法,UNIX操作系统采取的便是这种调度算法。它是目前被公认的一种较好的进程调度算法。多级反馈队列调度算法是时间片轮转调度算法和优先级调度算法的综合和发展
- 多级反馈队列调度算法的实现思想如下:
- 应设置多个就绪队列,并为各个队列赋予不同的优先级,第1级队列的优先级最高,第2级队列次之,其余队列的优先级逐次降低。
- 赋予各个队列中进程执行时间片的大小也各不相同,在优先级越高的队列中,每个进程的运行时间片就越小。例如,第2级队列的时间片要比第1级队列的时间片长一倍, ……第i+1级队列的时间片要比第i级队列的时间片长一倍。
- 当一个新进程进入内存后,首先将它放入第1级队列的末尾,按FCFS原则排队等待调度。当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第2级队列的末尾,再同样地按FCFS 原则等待调度执行;如果它在第2级队列中运行一个时间片后仍未完成,再以同样的方法放入第3级队列……如此下去,当一个长进程从第1级队列依次降到第 n 级队列后,==在第 n 级队列中便釆用时间片轮转的方式运行。==
- 仅当第1级队列为空时,调度程序才调度第2级队列中的进程运行;仅当第1 ~ (i-1)级队列均为空时,才会调度第i级队列中的进程运行。如果处理机正在执行第i级队列中的某进程时,又有新进程进入优先级较高的队列(第 1 ~ (i-1)中的任何一个队列),则此时新进程将==抢占==正在运行进程的处理机,即由调度程序把正在运行的进程放回到第i级队列的末尾,把处理机分配给新到的更高优先级的进程。
优点:兼顾长短作业,有较好的响应时间,可行性强,适用于各种作业环境。
备注:在多级反馈队列调度算法中,如果规定第一个队列的时间片略大于多数人机交互所需之处理时间时,便能够较好的满足各种类型用户的需要。