构建进程调度模拟器:重新学习 TypeScript 与降低 AI 依赖

发布: (2026年3月14日 GMT+8 10:49)
6 分钟阅读
原文: Dev.to

Source: Dev.to

几周来,我没有写任何真正的 Next.js 或 TypeScript 代码,而是严重依赖 AI 工具。在操作系统课程中学习 CPU 调度算法时,我决定为它们构建一个可视化工具。结果它成了迫使我重新手动编码的完美项目。

问题

  • 我只能完成基本的 Next.js 模板。
  • 简单的任务——创建一个虚拟数据对象、按到达时间对进程进行排序——让我束手无策。
  • 我最近的课程是 C++/Java,所以我甚至在 TypeScript 中写了 int 而不是 number

领悟: 技能如果不练习就会退化。

重置

我设定了一个简单的规则:核心逻辑不使用 AI
如果我忘记了某件事,我会:

  1. 查看官方文档。
  2. 在 Stack Overflow 上搜索。
  3. 以传统方式查阅参考资料。

起初感觉很慢且令人沮丧,但逐渐地:

  • TypeScript 类型和数组方法恢复了。
  • 设计 TypeScript 接口很快恢复(结构化思维比语法细节更持久)。

调整我的 AI 使用

完全拒绝 AI 并不现实;现代开发拥抱各种工具,包括 AI。
我没有让 AI 完全生成整个应用,而是将它用于:

  • 讨论组件结构和界面设计。
  • 审查我已经编写的代码。
  • 质疑命名选择和架构决策。
  • 建议更清晰的变量、类型和函数名称。
  • 在决定之前探索设计权衡。

Result: 我编写了代码,AI 对其进行了审查。 这种区别很重要——代码更整洁,命名更好,文件夹结构更有条理,同时不牺牲学习。

项目:交互式进程调度模拟器

用户可以做什么

  • 输入 进程列表(到达时间、CPU 时间、可选优先级)。
  • 运行 多种调度算法。
  • 即时查看 结果,通过甘特图和详细的指标表。

支持的算法

AlgorithmDescription
FCFS – First Come First Serve简单的非抢占式。
SJF – Shortest Job First (non‑preemptive)选择最短的 CPU 时间。
SRTF – Shortest Remaining Time First (preemptive)每一步跟踪剩余的 CPU 时间。
Priority Scheduling – preemptive & non‑preemptive使用进程优先级。
Round Robin – configurable time quantum维护就绪队列和时间片。

计算的指标(每种算法)

  • 完成时间
  • 周转时间
  • 等待时间
  • 响应时间

也会计算平均值。
一个小但重要的细节:模拟器能够正确处理 CPU 空闲时间,这在学习调度时很容易被忽视。

Source:

技术栈

  • 框架: Next.js(App Router)
  • 语言: TypeScript 5
  • UI 组件: shadcn/ui + Radix UI
  • 样式: Tailwind CSS v4
  • 表单与验证: React Hook Form + Zod
  • 图标与主题: Lucide React, next-themes

架构要点

  • 关注点分离: 算法逻辑独立于 UI,便于测试和推理。
  • 验证: Zod + React Hook Form 提供干净的验证,即使在动态数量的进程和字段间约束下也能正常工作。
  • 严格类型: 确保算法之间的一致性。

我曾短暂考虑为这些算法创建共享抽象以减少重复,但最终仍将它们分开。目标是理解每个算法,而强行使用通用抽象会掩盖我需要看到的细微差别。

  • 显式代码 > 学习时的巧妙抽象。
  • 常量fcfssjfsrtf,…)取代魔法字符串,提供自动完成和类型安全。

经验教训

技术

  • 加深了对调度概念的理解:
    • Preemption
    • Context switching
    • Starvation(尤其在 SJF 中)
    • Impact of time quantum in Round Robin

个人

极端做法结果
AI 完成整个项目代码可运行,学习最少。
完全不使用 AI高尚,但在现代开发中不切实际。

有效的折中方案: 自己编写逻辑,让 AI 完善它。 这保持了我的思考过程,同时仍受益于另一双眼睛的审视。

开源

项目已在 GitHub 上提供:

🔗 (仓库名称已截断以示简洁)

随意探索、分叉或贡献吧!

Cess 调度可视化

实时演示:
🔗

如果你正在学习操作系统,并且想了解调度算法在实际中的表现,这个工具可能会有所帮助。

即将推出的想法

  • 多级队列调度
  • 多级反馈队列调度
  • 时间线动画
  • 自动化测试
  • CSV 导入输入和导出结果
  • 步骤式执行并附解释

最好的学习项目是那些在开始时感觉稍微有点困难的项目。如果从第一行起一切都很舒适,你可能并没有在成长。

0 浏览
Back to Blog

相关文章

阅读更多 »