MOS

『MOS』 Evolution

『MOS』 改革、演化

Posted by Coekjan on December 29, 2023

实验内容改革

MOS 实验是《操作系统》课程的课程设计,是一个综合性的实践性课程,其目的是让学生通过实践,理解一个小型操作系统的结构与实现方法。截止 2023 年春季为止,MOS 实验在 MIPS R3000 架构上设计与实现,使用 GXemul 模拟器(内置汇编级别调试器)来进行模拟测试。

这样的实验内容设置存在一些问题,下面简单列举几例。

代码实现方面

2022 年春季及之前的代码设计存在大量“噪音”,这不仅影响了代码的可读性,也增加了代码的学习、维护难度。尽管 2023 年春季的代码经过大量的修订,但仍存在一些未解决的可移植性、问题)。

存留在课程组仓库的 issue 中,期待未来的助教们来解决。

这里提到的“噪音”是指冗余代码、无用代码、不规范代码、错误代码等。

实验教程方面

2022 年春季及之前的实验教程存在大量“噪音”,这不仅影响了实验教程的可读性,也增加了学生的学习难度。尽管 2023 年春季的实验教程经过大量的修订,但仍存在一些未解决的问题。

存留在课程组仓库的 issue 中,期待未来的助教们来解决。

这里提到的“噪音”是指无意义的插图、模糊的图表、不必要的反问句/疑问句/设问句/感叹句、错误的知识表达。

体系结构方面

《操作系统》课程的前置课程是《计算机组成》,而《计算机组成》课程设计中使用的体系结构为 MIPS R4000(或以上),与 R3000 不兼容。这加深了两个课程间的隔阂,导致学生在实践过程中产生困惑,也增加了课程设计的难度。

从 2022 年春季开始,课程组开始考虑迁移到 R4000 架构上。包括我在内的助教们为该目标准备了两年,期待从 2024 年春季开始,实验能够完全迁移到 R4000 架构上,与前置课程接轨,减轻同学们的学习负担。

模拟测试方面

MOS 实验使用 GXemul 模拟器进行模拟测试,但 GXemul 模拟器的性能较差,且不支持源码级调试,这不仅使课程组的在线评测时间开销大,也增加了学生调试内核代码的难度。

从 2022 年春季开始,课程组开始考虑迁移到 QEMU 模拟器上。包括我在内的助教们为该目标准备了两年,期待从 2024 年春季开始,实验能够完全迁移到 QEMU 模拟器上,减轻课程组的在线评测时间开销,也减轻学生调试内核代码的难度。

实验系统演化

2022 年春季及之前,《操作系统》课程的实验系统包含三部分:

  • Git 服务器(或 Gitlab):存储学生代码,提供版本控制服务;
  • JumpServer:实验环境堡垒机,为学生提供命令行实验环境;
  • MOOC:课程资料、实验信息发布平台。

评测使用 Git 的 post-receive hook 实现,在接收到学生推送的代码后,自动编译、运行、评测学生代码,并将评测结果反馈给学生。

2022 年春,我与其他一些热情的同学以《软件工程》课程为契机,设计了 OSome 实验系统,具体可见 【大本钟下你和我】系列博客。并以 OSome 系统部分原有的实验系统:

  • Gitlab 服务器:存储学生代码,提供版本控制服务;
  • JumpServer:实验环境堡垒机,为学生提供命令行实验环境;
  • OSome:集课程资料信息发布、讨论、考试、统计、分布式评测等功能于一体的实验系统。

OSome 系统从 2023 年春季开始正式服务课程,但仍存在一些未解决的问题。

存留在课程组仓库的 issue 中,期待未来的助教们来解决。

此外,我们从 2023 年春季开始尝试在课下实验中推行 VSCode 连接 JumpServer,希望能够帮助同学们更好地阅读代码。