『面试问答』:进程的调度算法有哪些?
面试官 : 请说一下,进程的调度算法有哪些?
进程调度是从进程的就绪队列中,按照一定的算法,选择一个进程并将 CPU 分配给它运行,以实现进程的并发执行。
先来先服务(First Come First Serve, FCFS)调度算法:按照进程到达的先后顺序进行调度,先到的进程就先被调度,然后进程会一直运行,直到退出或被阻塞,才会选择下一个进程接着运行。当一个长作业先运行了,那么后面的短作业等待的时间就会很长。
最短作业优先(Shortest Job First, SJF)调度算法: 每次调度时选择当前已到达的且运行时间最短的进程。如果一直有短作业到来,那么长作业永远得不到调度。
高响应比优先(Highest Response Ratio Next, HRRN)调度算法: 每次进行进程调度时,先计算响应比优先级,为响应比最高的进程分配 CPU,响应比优先级等于等待时间和要求服务时间的和与要求服务时间的比值。
最短剩余时间优先(Shortest Remaining Time Next,SRTN)算法: 按剩余运行时间的顺序进行调度,当一个新的进程到达时,把它所需要的整个运行时间与当前进程的剩余运行时间作比较。如果新的进程需要的时间更少,则挂起当前进程,运行新的进程,否则新的进程等待。
时间片轮转(RR,Round-Robin)调度算法: 每个进程被分配一个时间片,允许该进程在该时间片内运行。
如果时间片用完,进程还在运行,那么将会把此进程从 CPU 释放出来,并把 CPU 分配给另外一个进程;
如果该进程在时间片结束前阻塞或结束,则 CPU 立即进行切换。
最高优先级(Highest Priority First,HPF)调度算法: 为每个进程分配一个优先级,从就绪队列中选择最高优先级的进程进行运行。为了防止低优先级的进程永远等不到调度,可以随着时间的推移增加等待进程的优先级。
多级反馈队列(Multilevel Feedback Queue)调度算法: 有多个队列,每个队列优先级从高到低,同时优先级越高时间片越短。
如果有新的进程加入优先级高的队列时,立刻停止当前正在运行的进程,转而去运行优先级高的队列。
分享软件开发岗位面试题及答案