操作系统之典型调度算法

299 阅读3分钟

先来先服务调度算法(FCFS)

思想:从“公平”的角度考虑,先到先服务。 规则:先进入系统的作业/进程优先被挑选。 优缺点:算法简单,但效率低;对长作业有利,对短作业不利;有利于CPU繁忙型作业,而不利于I/O繁忙型作业。

短作业优先调度算法(SJF)

思想:追求最少的平均等待时间、最少的平均周转时间、最少的平均带权周转时间。 规则:最短的作业/进程优先得到服务。 优缺点:平均等待时间、平均周转时间最少;但不公平,对短作业有利,对长作业不利;且作业/进程的运行时间由用户提供,并不一定真实。

响应比最高者优先调度算法(HRRF)

思想:选择等待时间和要求服务时间都较短的作业/进程优先调度。 规则:在每次调度时先计算各个作业/进程的响应比,选择响应比最高的作业/进程为其服务。 优缺点:是FCFS和SJF两种算法的权衡折中,既照顾了短作业,又考虑了作业到达的先后次序,不会使长作业长期得不到服务;但要进行响应比计算,增加了系统开销。

时间片轮转调度算法(RR)

思想:公平地、轮流地为各个进程服务,让每个进程在一定时间间隔内都可以得到响应。 规则:调度程序每次把CPU分配给就绪队列首进程/线程使用一个时间间隔(称为时间片),就绪队列中的每个进程/线程轮流运行一个时间片。 优缺点:公平,响应快,适用于分时操作系统;但由于高频率的进程切换,有一定开销,且不区分任务的紧急性。

优先级调度算法(PSA)

思想:根据任务的紧急程度来决定处理顺序。 规则:根据确定的优先级选取进程/线程,每次总是选择就绪队列中优先级最高者运行。 优缺点:可以灵活处理不同紧急程度的任务;但实现较复杂,且可能出现优先级低的作业/进程长时间得不到调度的情况。

多级反馈队列调度算法(MLFQ)

思想:是时间片轮转调度算法和优先级调度算法的综合和发展。 规则:设置多个就绪队列,并为各个队列赋予不同的优先级,赋予各个队列中进程执行时间片的大小也各不相同。新进程进入内存后,按优先级放入对应队列,按FCFS原则排队等待调度。 优缺点:可以兼顾多方面的系统目标,如提高系统吞吐量和缩短平均周转时间等;但需要动态调整进程优先级和时间片大小,实现较复杂。