面试题答案
一键面试先来先服务(FCFS, First Come First Served)
- 算法描述:按照进程到达的先后顺序进行调度,先到达的进程先执行,直到完成或因等待某种资源而阻塞。
- 不同负载情况影响:
- 高I/O密集型任务场景:若I/O任务按顺序到达,FCFS能正常调度。但如果有长I/O任务先到达,后续短I/O任务需等待,会导致整体响应时间变长,并发性能不佳,因为I/O设备可能会长时间空闲等待长任务完成。
- 高CPU密集型任务场景:同样若长CPU任务先到达,短CPU任务需等待,会使短任务响应时间延迟,整体系统吞吐量会受影响,不利于并发处理多个任务。
短作业优先(SJF, Shortest Job First)
- 算法描述:从就绪队列中选择预计执行时间最短的进程优先执行。
- 不同负载情况影响:
- 高I/O密集型任务场景:能优先调度短I/O任务,减少I/O设备空闲时间,提高I/O设备利用率,整体响应时间较短,并发性能较好。但如果不断有新的短I/O任务到来,可能导致长I/O任务饥饿。
- 高CPU密集型任务场景:优先执行短CPU任务,可提高系统吞吐量,减少短任务等待时间。但对于长CPU任务可能长时间等待,且预估执行时间可能不准确,若预估错误可能达不到理想调度效果。
时间片轮转(RR, Round Robin)
- 算法描述:将CPU时间划分为固定大小的时间片,每个进程轮流在一个时间片内执行,时间片用完后,进程被挂起并排入就绪队列末尾等待下次调度。
- 不同负载情况影响:
- 高I/O密集型任务场景:能快速响应I/O任务,I/O任务在时间片内完成I/O请求后可让出CPU,使其他任务有机会执行,提高系统并发性能,有效利用I/O设备。
- 高CPU密集型任务场景:由于每个任务只能执行一个时间片,会频繁进行上下文切换,增加系统开销。对于长CPU任务,可能需要多次调度才能完成,降低了CPU利用率,但能保证各个任务都有机会执行,公平性较好。