-
先来先服务调度算法(First Come First Severed, FCFS)
如其名所说,先来的进程先被执行。会出现短作业需等待先来的长作业造成等待时间过长的问题。
-
最短作业优先 (Shortest Job First, SJF)
亦如其名,调度程序优先选择运行时间最短的进程来运行,会造成短作业“饿死”长作业的问题。
-
高响应比优先算法(Highest Response Ratio Next, HRRN)
兼顾了长作业和短作业的算法,调度程序选择响应比最高的进程来运行,响应比公式一般是
(等待时间 + 进程运行时间) / 进程运行时间
。可以发现,如果两个进程等待时间相同,但一个进程运行时间比另一个进程运行时间短, 则调度程序将选择运行时间较短的进程,照顾了短作业;如果两个进程运行时间相同,但一个进程等待时间比另一个进程等待时间长,则等待时间长的进程会被先运行,很好处理了长作业”饿死“问题
-
时间片轮转算法(Round Robin, RR)
调度程序给每个进程分配一个时间片,当进程开始运行时计时,如果进程的时间片用完了就会回到就绪队列让下一个进程继续运行,而如果时间片结束前进程运行就结束了将立刻执行下一个进程。该算法的效率取决于时间片的长度(太短造成过多的上下文切换,打击CPU效率, 太长不利于短作业的运行)
-
最高优先级算法(Highest Priority First,HPF)
进程调度程序给每个进程分配一个优先级,然后从就绪队列选择优先级最高的进程去运行。其中优先级可以分为静态(分配后一成不变)和动态(分配后根据情况改变),算法本身可分为非抢占式和抢占式(存在更高优先级进程时让更高优先级进程先运行)。
存在低优先级进程可能永远得不到运行的问题(就和短作业优先算法一样,凡是按等级量化进程的算法都会出现低级进程“饿死”的问题)
疑问:优先级是按照什么来分配的?
-
多级反馈队列算法(Multilevel Feedback Queue)
多级反馈队列算法是综合了时间片轮转算法和最高优先级算法的算法。该算法为进程分配了多个就绪队列,就绪队列按优先级从高到低来划分,优先级越高的队列时间片越小。
一个进程在就绪队列中按FCFS的原则被调度,如果时间片用完后进程还未完成任务,则会被调入优先级较低的第二级队列,依次类推;
调度程序会优先调度优先级高的队列的进程,待高优先级进程全部完成后再调度较低优先级的进程。
该算法的优点是在兼顾了长度作业的同时又保证了较好的响应时间。(即进程被第一次调度和进程到达的时间差)
操作系统整理-进程调度算法
最新推荐文章于 2024-10-31 16:00:25 发布