目录

ECNU OSLab 2025

简介

本实验是华东师范大学计算机科学与技术学院的操作系统课程实验(2025秋) (由石亮教授授课, 助教夏浩东设计)

实验目标是基于C语言和RISC-V体系结构从零开始设计实现一个简单的操作系统内核(大约5500行代码)

建议参考MIT的xv6-riscv:git://g.csail.mit.edu/xv6-labs-2020 (util 分支)

和MIT的xv6实验有何区别

  • MIT的xv6实验本质上是在一个基础的能运行的内核上做修改以通过测试

    你做的修改依赖于已有代码, 通常不需要增加或修改太多行代码就能达成目的

    每次新的实验都基于新的分支, 不保留之前实验的修改

  • 从0到1的OS实验并不基于任何已经能运行的内核, 你需要从头开始一步步搭建内核

    这意味着你调用的几乎所有函数都是自己写的, 实验结束时你至少要产出3000+行代码

    实验具有连续性, 你这次写的代码下次还会用到, 所以要对自己的代码负责

    听起来更具挑战性, 但是不用太担心, 助教会提供大的逻辑框架, 你还能查看xv6的实现作为指导

  • 三种类型的OS实验:

    锦上添花型: 基于一个完整的能运行的内核, 增加新的功能或特性, 如xv6

    完型填空型: 内核基本完整, 但是在某些函数中挖去了一部分关键代码等你来填, 如chcore

    从零开始型: 给出设计框架和各阶段目标, 从头开始一步步实现一个简单内核

从头开始“造轮子”有什么意义

已知现有的OS内核都是千万行级别的代码, 完全不是一个人能搞定的, 那造一个这样简单的轮子有什么用呢?

  1. 首先, 作为这个领域的初学者, 要想深刻体会OS内核的运行原理, 光靠阅读别人的代码是远远不够的

    最好一边阅读一边动手实现简单的demo, 这个demo不需要复杂的算法和优异的性能, 只需要体现最基础最核心的设计思想

    每一个优秀的车辆工程师在小时候总是拆过和装过许多玩具汽车

  2. 其次, 跳脱出操作系统这个大背景, 动手写内核也是锻炼软件系统级别编程能力的好机会

    真实的软件开发不可能像算法比赛一样提交单个文件就够了

    你可以把它单纯看作一个普通的项目去开发, 了解如何编写和管理一个多文件的大型项目

实验开始前的准备

  1. 基础知识: 建议超过课程进度, 尽快学习完OS的基本知识, 不用很深入但是要有了解

  2. 环境配置: 我们沿用xv6-riscv-2020的实验环境, 以能成功运行xv6-riscv-2020为检验标准

  3. 常用工具: vscode + git + markdown

  4. 编译纠错: Makefile + gcc + gdb + 程序编译运行基本知识

  5. 其他知识: C语言语法(尤其是多文件组织) + qemu简单了解 + risc-v简单了解

你能获得的帮助

  1. 助教会为每一次实验搭建框架, 并提供必要的代码 (通常是硬件相关和Makefile)

  2. 助教会为每一次实验编写实验指导书和PPT, 介绍实验目标、背景知识、实验思路、测试用例等

  3. xv6的资料非常多, 代码也是开源的, 你应该多阅读多思考

  4. 我们会建立一个课程实验的微信群, 有问题可以发到群里, 鼓励大家互帮互助

你需要具备的素养

  1. 热爱OS并愿意付出相当比例的时间投入这个实验, 混子劝退

  2. 能够独立思考和独立解决问题, 写内核遇到的问题会比普通的实验多得多, 大多数时间只能靠自己

  3. 对系统底层原理有好奇心, 不希望只是调用成熟接口, 希望自己动手实现自己调用的函数

  4. 能够静下心 Code and Debug, 平静面对失败, 永不言弃

让我们开始:建立仓库

  1. 在线上建立代码托管仓库(小白建议使用gitee, 国产的没有网络问题), git clone到本地

  2. 在本地使用Markdown编写README文件, 简单介绍你的项目

  3. 练习和熟悉 vscode + git + markdown, 后面需要长期用到

关于

由华东师范大学石亮老师团队发起,目标是在AI的辅助下从0到1实现一个小型操作系统内核

16.6 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号