MST

星途 面试题库

面试题:进程管理之高级难度:进程调度算法及应用场景

请详细阐述常见的进程调度算法,如先来先服务(FCFS)、短作业优先(SJF)、时间片轮转(RR)和多级反馈队列调度算法,并分析每种算法在不同应用场景下的优缺点。
23.1万 热度难度
操作系统进程管理

知识考点

AI 面试

面试题答案

一键面试

先来先服务(FCFS)

  • 算法描述:按照进程到达的先后顺序进行调度,先到达的进程先执行,直到该进程完成或因为某些原因阻塞,才调度下一个进程。
  • 优点
    • 实现简单:只需维护一个先进先出的队列,无需额外复杂的数据结构和计算。
    • 公平性直观:按照进程到达顺序处理,对所有进程一视同仁,符合一般先来后到的公平认知。
  • 缺点
    • 不利于短作业:若长作业先到达,短作业即使随后很快到达,也需等待长作业完成,导致短作业平均周转时间过长。
    • CPU利用率不高:若长作业持续占用CPU,会使I/O设备长时间空闲,造成资源浪费。
  • 适用场景:适用于对响应时间要求不高,且作业执行时间较为均匀的场景,如批处理系统中,因为其实现简单且能保证一定公平性。

短作业优先(SJF)

  • 算法描述:从就绪队列中选择预计执行时间最短的进程投入执行,若新进程的预计执行时间比当前正在执行进程的剩余执行时间短,则可抢占当前进程。
  • 优点
    • 平均周转时间短:优先调度短作业,能有效减少系统中作业的平均等待时间和周转时间,提高系统吞吐量。
    • 资源利用率高:能让CPU尽可能高效地运行,减少CPU空闲时间。
  • 缺点
    • 难以准确估计作业执行时间:实际中很难精确预测作业运行时长,可能导致调度不准确。
    • 长作业饥饿:若不断有短作业进入系统,长作业可能长时间得不到调度机会。
    • 不公平性:对于执行时间长的作业不公平,可能导致其等待时间过长。
  • 适用场景:适用于能较为准确预估作业执行时间,且希望提高系统整体吞吐量的场景,如某些特定的计算密集型任务处理系统,可优先处理短计算任务。

时间片轮转(RR)

  • 算法描述:将CPU时间划分为固定大小的时间片,就绪队列中的每个进程轮流在一个时间片内执行,若时间片结束时进程未完成,则将其重新放回就绪队列末尾等待下一轮调度。
  • 优点
    • 公平性好:每个进程都能在一定时间内获得CPU执行机会,保证所有进程都能推进,避免进程饥饿。
    • 响应性强:能快速响应交互式任务,因为即使是长任务也能很快得到时间片开始执行,用户能感觉到系统在及时处理任务。
  • 缺点
    • 时间片大小难确定:时间片过长会退化为FCFS,短作业等待时间长;时间片过短则会导致进程频繁切换,增加系统开销。
    • 系统开销大:进程上下文切换需要保存和恢复进程状态,频繁切换会消耗CPU资源。
  • 适用场景:适用于交互式系统,如分时操作系统,用户希望能及时得到系统响应,每个用户进程都能及时被调度执行。

多级反馈队列调度算法

  • 算法描述:设置多个就绪队列,每个队列有不同优先级和时间片大小。新进程进入系统时,先放入最高优先级队列。若在该队列时间片内未完成,则降入下一级队列。高优先级队列中的进程优先调度,只有当高优先级队列为空时,才调度下一级队列中的进程。
  • 优点
    • 兼顾各类作业:既能让短作业快速完成(在高优先级队列中很快执行完毕),又能保证长作业最终得到执行(不会长时间处于高优先级队列导致其他作业饥饿)。
    • 自适应能力强:能根据进程特性自动调整调度策略,对于I/O密集型进程,因其常主动放弃CPU,会保持在较高优先级队列;计算密集型进程则会逐渐降入低优先级队列。
    • 响应性好:对交互式作业友好,能快速响应。
  • 缺点
    • 算法复杂:需要维护多个队列,且涉及队列间的进程迁移等操作,实现和管理较为复杂。
    • 参数设置困难:如队列数量、每个队列的时间片大小和优先级设置等,若设置不当,可能影响调度效果。
  • 适用场景:适用于通用操作系统,可满足不同类型作业和任务的需求,综合考虑公平性、响应性和系统吞吐量。