CPU调度,涉及许多不同的调度算法,各有优缺点。
1. 先到先得(FCFS):
- 优点 –
- 它简单易懂。
- 缺点——
- 执行时间较短的进程会受到影响,即等待时间通常很长。
- 支持 CPU 绑定进程,然后是 I/O 绑定进程。
- 在这里,第一个进程将首先获得CPU,其他进程只有在当前进程执行完毕后才能获得CPU。现在,假设第一个进程的突发时间大,而其他进程的突发时间少,那么这些进程将不得不等待更多不必要的等待,这将导致更多的平均等待时间,即Convey效应。
- 此效果会导致 CPU 和设备利用率降低。
- FCFS 算法对于分时系统来说尤其麻烦,在这种系统中,每个用户定期获得 CPU 份额非常重要。
2.最短作业优先(SJF)[抢占式和非抢占式]:
- 优点 –
- 最短的工作受到青睐。
- 它被证明是最优的,因为它为给定的一组进程提供了最短的平均等待时间。
- 缺点——
- 如果较短的过程不断出现,SJF 可能会导致饥饿。这个问题是通过老化来解决的。
- 它不能在短期 CPU 调度级别上实现。
3. 循环赛(RR):
- 优点 –
- 每个进程都获得平等的 CPU 份额。
- RR 本质上是循环的,所以没有饥饿。
- 缺点——
- 时间片设置太短,会增加开销,降低CPU效率,但设置太长可能会导致对短进程响应不佳。
- RR 政策下的平均等待时间通常很长。
4. 基于优先级 (PB):
- 优点 –
- 这提供了一个很好的机制,可以精确定义每个过程的相对重要性。
- 缺点——
- 如果高优先级进程占用了大量 CPU 时间,低优先级进程可能会饿死并被无限期推迟。进程永远不会被安排运行的情况称为饥饿。
- 另一个问题是决定哪个进程获得分配给它的优先级。
5. 多级队列调度(MQS):
- 优点 –
- 可以对各种进程应用单独的调度。
- 系统进程 – FCFS
- 互动流程 – SJF
- 批处理 – RR
- 学生过程 – PB
- 可以对各种进程应用单独的调度。
- 缺点——
- 最底层的进程面临饥饿问题。
6. 多级反馈队列调度(MFQS):
- 优点 –
- 低调度开销。
- 允许老化,因此不会挨饿。
- 缺点——
- 它不灵活。
- 它还需要一些为所有参数选择值的方法来定义最佳调度程序,因此它也是最复杂的。