搭建一个操作系统在线实验平台
赛题:在线操作系统实验平台
队名:重生之我在lgd扛大旗
成员:谢语诗 唐继堯 颜克耕
学校:中国人民解放军陆军工程大学
Pintos教学操作系统(来自斯坦福大学CS140课程)存在环境搭建难、命令行调试操作不方便、实验项目规模大门槛高、无法进行在线实验等痛点,本项目开发一个原型系统对 Pintos进行调试环境图形化、实验项目任务化和实验平台在线化改造,实现实验项目智能测评。
基于以上内容,对项目目标进行拆分,我们需要在项目中完成以下功能:
| 目标编号 | 目标内容 |
|---|---|
| 1 | 基于docker实现GDB调试环境图形化 |
| 2 | 提出阶梯化任务式闯关实验项目体系的解决方案,实现内核实验智能测评 |
| 3 | 使用Moodle实现实验平台在线化访问,设计用于实验指导的在线问答系统 |
| 4 | 实现docker、网络访问端口等资源分配和回收 |
| 目标编号 | 完成情况 | 说明 |
|---|---|---|
| 1 | 已完成 | 基于docker实现GDB调试环境图形化 |
| 2 | 已完成 | 提出阶梯化任务式闯关实验项目体系的解决方案,实现内核实验智能测评 |
| 3 | 已完成 | 使用Moodle实现实验平台在线化访问,设计用于实验指导的在线问答系统 |
| 4 | 未完成 | 实现docker、网络访问端口等资源分配和回收 |
| 总计 | 完成度75% |
Pintos是美国Stanford大学开发的一个基于80x86体系结构CPU的教学操作系统,它以比较简单的方式实现了内核线程、加载和运行用户程序等功能。Pintos操作系统可以直接运行在常规的采用80x86CPU的IBM兼容PC机上。不过为了实验和调试方便,我们通常在Linux系统上通过bochs仿真器运行pintos。
开发环境结构如下图所示:
为满足日常的操作习惯,我们使用Windows平台虚拟机软件VMWare Workstation和源代码编辑工具SourceInsight,使pintos系统开发环境能运行于虚拟的Ubuntu系统之上。用户可以在Windows下使用SouceInsight对Pintos的代码进行分析和修改。同时,通过虚拟机软件VMWare 在Ubuntu下对修改后的代码进行编译链接、测试和调试。
搭建平台:Windows11、VMWare Workstation 17 pro、Ubuntu
配套资源:Ubuntu虚机映像文件MachineDing.zip和Pintos系统源代码文件DingShared.zip。
实验环境配置如下图所示:
pintos调试环境搭建需要以下步骤:
- 安装VMware17
- 解压资源文件MachineDing.zip和DingShared.zip
- 导入Ubuntu虚机镜像
- 共享解压后的DingShared.zip到虚拟机
- 在Ubuntu终端测试编译
cd /mnt/hgfs/DingShared/pintos_workdir/pintos/src/threads/
make check
- 安装SourceInsight并导入代码
以下是一个启动pintos调试环境的示例代码:
//打开终端命令提示符
$ pintos -v --gdb -- -q -mlfqs run mlfqs-load-1 //开始pintos
//打开第二个终端命令提示符
$ pintos-gdb kernel.o //启动GDB
调试环境启动后可以开始使用命令行的方式对pintos的代码进行调试。
操作系统理论往往抽象且复杂,而实验课能将理论知识转化为实际操作,加深对操作系统核心概念的理解。根据斯坦福大学CS140课程实验手册进行操作系统实验,我们发现pintos存在以下问题,因此我们将从以下问题入手进行改造。
从上文的介绍可以看出pintos调试环境搭建难,命令行调试操作不方便,针对此问题,我们提出以下改造思路:
- 利用docker配置集成实验环境 对比于使用虚拟机VMware Workstation配置集成实验环境,使用docker配置集成实验环境可以快速持续部署实验环境,且docker容器的高移植性使用户可以在不同主机使用。同时,docker容器的部署和资源回收可以依赖Kubernetes轻松实现。
- 使用eclipse实现GDB调试可视化 对比基于GDBGUI的调试环境图形化,eclipse作为专门的集成开发环境(IDE)拥有完善的图形用户界面,支持拖放操作、一键调试等便利的交互方式,对于习惯使用集成开发环境的用户来说,Eclipse的操作体验通常更为友好。且eclipse庞大的用户社区对解决问题非常有帮助。
斯坦福大学CS140课程实验手册提供了四个pintos实验项目,
在本章节对开发过程中的项目重要进展进行总结,链接为项目开发对应的过程性技术文档
- 安装docker,导入空白Ubuntu镜像
- 配置操作系统实验环境,使基于GDBGUI的调试环境图形化
- 制作镜像并导出,实现网页访问
拆分操作系统实验项目为三类任务:调试类、分析类、综合类,实现实验过程的数据采集与分析,同时实现内核实验智能测评。
- 调试类
- 分析类
- 综合类
使用Moodle将实验任务集成,设计用于实验指导的在线问答系统,实现实验平台的多用户访问
- 实现网络访问端口等资源分配和回收
- 撰写技术文档
- 项目提供可演示和试用的原型系统,初赛项目进入收尾阶段

