进程调度可视化 - FCFS/SJF/轮转对比
输入进程列表,同时对比先来先服务、短作业优先和轮转调度算法的甘特图和平均等待时间。
UD5工具箱
FCFS · SJF(非抢占式)· Round Robin 可视化模拟
| 进程 ID | 到达时间 | 执行时间 | 操作 |
|---|
配置好进程参数后,点击下方按钮运行调度模拟。结果将以甘特图和统计表格形式展示。
配置进程参数并选择调度算法,点击"运行调度模拟"查看结果
优点:实现简单,公平对待所有进程,不会出现饥饿现象。代码易于理解和维护。
缺点:存在"护航效应"(Convoy Effect)——短作业可能被长作业阻塞,导致平均等待时间较长。对交互式系统响应不够友好,不适合分时系统。
FCFS 是一种非抢占式调度算法,一旦进程获得 CPU,它将一直运行直到完成或阻塞。
SJF 调度算法选择预计执行时间最短的进程优先运行。非抢占式 SJF 在当前进程完成后才进行选择;抢占式 SJF(也称为 SRTF,最短剩余时间优先)会在新短作业到达时重新评估。
理论优势:SJF 在理论上能最小化平均等待时间,是最优的非抢占式调度算法。
实际困难:操作系统很难准确预知进程的执行时间。通常只能基于历史数据进行估算。此外,长作业可能长期得不到执行,产生饥饿现象。
Round Robin 为每个进程分配固定的时间片(Time Quantum),进程轮流使用 CPU。时间片的选择对系统性能至关重要:
Round Robin 广泛用于分时系统,能保证良好的响应时间,对交互式应用友好。
周转时间(Turnaround Time):从进程提交到完成的总时间 = 完成时间 - 到达时间。反映用户从提交作业到获得结果的等待时长。
等待时间(Waiting Time):进程在就绪队列中等待 CPU 的总时间 = 周转时间 - 执行时间。反映进程因调度而产生的额外延迟。
CPU 利用率:CPU 实际执行进程的时间占总时间的百分比。高利用率表示 CPU 资源得到充分利用。
非抢占式调度:进程一旦获得 CPU,将一直运行直到自愿释放(完成或阻塞)。FCFS 和非抢占式 SJF 属于此类。实现简单但响应性差。
抢占式调度:调度器可以在进程运行过程中强制剥夺 CPU,分配给其他进程。Round Robin 和 SRTF 属于此类。响应性好但实现复杂,需要处理上下文切换开销。
现代操作系统普遍采用抢占式调度,以保证交互式应用的响应速度。
输入进程列表,同时对比先来先服务、短作业优先和轮转调度算法的甘特图和平均等待时间。
通过PerformanceObserver获取首次绘制(FP)和首次内容绘制(FCP)时间。
通过滑块调节LCP、FID、CLS等指标值,实时显示对应的谷歌核心网页指标评分与颜色。
添加楼层请求,观察电梯在不同调度算法下的移动轨迹和等待时间。
拖拽改变容器宽度,观察使用container-type和@container规则的元素如何自适应样式。
加载测试页面,实时显示Largest Contentful Paint等核心指标,了解加载体验。
输入交易清单,逐步可视化FP树的构建与频繁项集挖掘过程,理解购物篮分析算法。
添加多个周期任务和一次性延迟任务,在时间轴上观察其调用过程,学习JS定时器。
对localStorage和IndexedDB的读写操作进行计时,比较两者性能差异。
实时查看当前域名下所有localStorage键值对,支持编辑、删除和导出,前端调试利器。
选择卡片、列表或表格布局,生成对应的灰色闪烁骨架屏HTML/CSS代码。
调整滚动容器和子项的对齐方式、停止点,观察CSS Scroll Snap平滑滑动效果。
拖拽构建阶段与任务,配置触发条件,生成对应的GitLab CI或GitHub Actions YAML代码。
输入后缀表达式或简单指令,逐步演示栈的压入弹出计算过程。
选择常用模式(如响应式断点、flex居中、省略号),生成对应Sass Mixin代码。
输入Proto定义和Base64编码的protobuf数据,在线解码为JSON,辅助分析二进制通信内容。
设置资源计时缓冲区大小,监听 resourcetimingbufferfull 事件并处理。
输入第三方域名,生成<link rel='preconnect'>或dns-prefetch等资源提示标签。
可视化演示固定窗口、滑动窗口、令牌桶等常见限流算法,实时请求计数与拒绝逻辑。
使用Web NFC API向兼容标签写入文本或URL,并验证读取结果。
动画展示滑动窗口和令牌桶算法如何限制API请求速率,对比两者差异。
拖放小图片或文本文件,转换为可嵌入HTML/CSS的Data URI,设置MIME类型。
上传CSV文件,指定优先排序列和升降序,干净地整理杂乱数据。
输入标题与描述,模拟Google搜索结果片段,检查截断与关键词效果。
上传合并的精灵图,设定行数和列数,自动裁切为单独的小图并打包下载。
输入像素值并设定根字号或视口宽度,一键换算为 rem/em/vw 等相对单位,方便响应式开发。
拖动曲线手柄调整动画缓动,实时预览弹跳或淡入效果,生成cubic-bezier值。
浏览数十种纯CSS实现的加载小动画,点击复制代码直接用于项目。
设置基础字号后批量转换像素值为em/rem,同时提供反向计算,保证响应式单位准确。
粘贴SVG代码,压缩并编码为data URI,用于background-image或img。