实验说明
本节介绍了此操作系统实验的目的和实验内容等.
本实验旨在于达到以下目的:
- 持续优化的、更好的文档支持. 相比于 2003 年编写的 EOS 教程,我们通过突出操作系统的知识重点,来让同学们更好理解操作系统的地址空间、进程管理等核心模块.
- 学习 Rust 这一系统编程语言. 现在新编写的操作系统内核大多使用 Rust 编程语言,由于其严格的内存检查在开发操作系统上有天然的安全性优势. 同学们可以从中学到到优秀的程序设计思路.
- 改变往年学生需要撰写大量的实验文档,而不是注重于功能实现的风气.
本次新操作系统实验内容如下:
- lab0 环境配置,在 Docker 环境中进行开发,运行内核使用 QEMU 模拟器,调试需求上使用 GDB 工具进行调试. 这一套工具是比较现代的,更符合内核开发调试的工具链配置.
- lab1 熟悉 Rust 语言,通过 Rustlings 这个练习题集来熟悉基本的 Rust 语法.
- lab2 探索内核的启动,通过一个最简化的内核,最简单的包含内核态和用户程序的代码,运行 Hello, world! 理解内核是如何启动并执行用户程序的,完善从用户程序调用库函数到内核执行 syscalls 的调用链路.
- lab3 分时系统,理解时钟片机制. 并能够实现一些简单的 syscall 调用.
- lab4 地址空间,通过阅读源码理解内核的内存管理机制. 掌握页表项查找的机制. 实现一个简化的 mmap, ummap 的 syscall 调用.
- lab5 进程管理,通过阅读源码理解内核的进程管理机制,理解 execve 和 clone 等 syscalls,实现 waitpid 和 stride 调度算法.
- lab6 文件系统,通过阅读源码理解一个简化的文件系统,理解 Inode 等是如何被构建和使用的, 实现 read, write, open 和 close 等 syscalls.
完成以上内容的同学如果学有余力,或者是准备参加操作系统实现比赛,可以遵循 POSIX 规范进行 syscalls 的改写等工作.
请明确以下原则:
- 严禁抄袭/拷贝其他同学的代码.
- 严禁将自己的代码提供给他人.
- 若发现学术不端现象, 无论你是提供者还是参考者, 均会受到同等处罚.
必要时我们会对同学们提交的代码进行查重.