无需登录 数据私有 本地保存

CPU 调度算法模拟器 - FCFS/SJF/Round Robin

11
0
0
0

CPU 调度算法模拟器

FCFS · SJF(非抢占式)· Round Robin 可视化模拟

调度算法:
进程列表
进程 ID 到达时间 执行时间 操作
3 个进程
运行模拟

配置好进程参数后,点击下方按钮运行调度模拟。结果将以甘特图和统计表格形式展示。

配置进程参数并选择调度算法,点击"运行调度模拟"查看结果

常见问题与知识点

CPU 调度算法是操作系统用来决定哪个进程获得 CPU 使用权的策略。当多个进程同时请求 CPU 资源时,调度器根据特定算法选择下一个执行的进程。常见的调度算法包括先来先服务(FCFS)、短作业优先(SJF)、轮转调度(Round Robin)、优先级调度和多级队列调度等。调度算法的好坏直接影响系统的响应时间、吞吐量和公平性。

优点:实现简单,公平对待所有进程,不会出现饥饿现象。代码易于理解和维护。

缺点:存在"护航效应"(Convoy Effect)——短作业可能被长作业阻塞,导致平均等待时间较长。对交互式系统响应不够友好,不适合分时系统。

FCFS 是一种非抢占式调度算法,一旦进程获得 CPU,它将一直运行直到完成或阻塞。

SJF 调度算法选择预计执行时间最短的进程优先运行。非抢占式 SJF 在当前进程完成后才进行选择;抢占式 SJF(也称为 SRTF,最短剩余时间优先)会在新短作业到达时重新评估。

理论优势:SJF 在理论上能最小化平均等待时间,是最优的非抢占式调度算法。

实际困难:操作系统很难准确预知进程的执行时间。通常只能基于历史数据进行估算。此外,长作业可能长期得不到执行,产生饥饿现象

Round Robin 为每个进程分配固定的时间片(Time Quantum),进程轮流使用 CPU。时间片的选择对系统性能至关重要:

  • 时间片过大:退化为 FCFS,响应时间变长。
  • 时间片过小:上下文切换开销过大,CPU 有效利用率降低。
  • 经验值:通常设为 10-100 毫秒,使得上下文切换开销占时间片的比例较小(如 1% 以内)。

Round Robin 广泛用于分时系统,能保证良好的响应时间,对交互式应用友好。

周转时间(Turnaround Time):从进程提交到完成的总时间 = 完成时间 - 到达时间。反映用户从提交作业到获得结果的等待时长。

等待时间(Waiting Time):进程在就绪队列中等待 CPU 的总时间 = 周转时间 - 执行时间。反映进程因调度而产生的额外延迟。

CPU 利用率:CPU 实际执行进程的时间占总时间的百分比。高利用率表示 CPU 资源得到充分利用。

非抢占式调度:进程一旦获得 CPU,将一直运行直到自愿释放(完成或阻塞)。FCFS 和非抢占式 SJF 属于此类。实现简单但响应性差。

抢占式调度:调度器可以在进程运行过程中强制剥夺 CPU,分配给其他进程。Round Robin 和 SRTF 属于此类。响应性好但实现复杂,需要处理上下文切换开销。

现代操作系统普遍采用抢占式调度,以保证交互式应用的响应速度。