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

进程调度可视化 - FCFS/SJF/轮转对比

16
0
0
0

进程调度可视化对比

FCFS · SJF · Round Robin
进程列表 0
# 进程名 到达时间 执行时间
暂无进程,请添加或加载示例数据
单位时间
FCFS 先来先服务 非抢占
添加进程后自动计算
SJF 短作业优先 非抢占
添加进程后自动计算
Round Robin 轮转调度 时间片=3
添加进程后自动计算
常见问题与知识点

FCFS(First-Come, First-Served)是最简单的调度算法,按进程到达顺序分配CPU。优点是实现简单、公平(先到先服务)、无饥饿问题。缺点是可能出现护航效应(Convoy Effect):长进程先到达会阻塞后续短进程,导致平均等待时间显著增加。FCFS是非抢占式的。

SJF总是选择执行时间最短的进程,这减少了短进程被长进程阻塞的时间。从数学上可证明,SJF(非抢占式)在所有非抢占调度算法中能给出最小的平均等待时间。但缺点是需要预知进程的执行时间(实际中难以准确估计),且长进程可能长期得不到服务(饥饿问题)。

时间片的选择是RR的关键权衡:时间片太小→上下文切换频繁,系统开销增大,CPU有效利用率降低;时间片太大→退化为FCFS,响应性变差。通常时间片设为10~100毫秒,应远大于上下文切换时间(约10微秒),同时保证多数短作业能在1~2个时间片内完成。本工具默认时间片为3单位。

周转时间 = 完成时间 − 到达时间(进程从提交到完成的总时间);等待时间 = 周转时间 − 执行时间(在就绪队列中等待的总时间);响应时间 = 首次获得CPU的时间 − 到达时间(用户看到首次响应的时间)。对于交互式系统,响应时间是关键指标;对于批处理系统,更关注周转时间和吞吐量。

非抢占式SJF(本工具实现)一旦进程获得CPU,会一直执行直到完成,即使期间有更短的进程到达。抢占式SJF(又称SRTF,最短剩余时间优先)会在新进程到达时比较剩余执行时间,如果新进程更短则抢占当前进程。SRTF理论上能获得更优的平均等待时间,但实现复杂且有额外上下文切换开销。

护航效应发生在FCFS调度中,当一个长CPU密集型进程先到达并占据CPU时,后续大量短I/O密集型进程被迫排队等待,导致CPU和I/O设备利用率都下降。就像车队中一辆慢车拖慢整个车队。SJF和RR算法能有效缓解护航效应。