跳转到内容

实验说明

本节介绍了此操作系统实验的目的和实验内容等.

本实验旨在于达到以下目的:

  1. 持续优化的、更好的文档支持. 相比于 2003 年编写的 EOS 教程,我们通过突出操作系统的知识重点,来让同学们更好理解操作系统的地址空间、进程管理等核心模块.
  2. 学习 Rust 这一系统编程语言. 现在新编写的操作系统内核大多使用 Rust 编程语言,由于其严格的内存检查在开发操作系统上有天然的安全性优势. 同学们可以从中学到到优秀的程序设计思路.
  3. 改变往年学生需要撰写大量的实验文档,而不是注重于功能实现的风气.

本次新操作系统实验内容如下:

  1. lab0 环境配置,在 Docker 环境中进行开发,运行内核使用 QEMU 模拟器,调试需求上使用 GDB 工具进行调试. 这一套工具是比较现代的,更符合内核开发调试的工具链配置.
  2. lab1 熟悉 Rust 语言,通过 Rustlings 这个练习题集来熟悉基本的 Rust 语法.
  3. lab2 探索内核的启动,通过一个最简化的内核,最简单的包含内核态和用户程序的代码,运行 Hello, world! 理解内核是如何启动并执行用户程序的,完善从用户程序调用库函数到内核执行 syscalls 的调用链路.
  4. lab3 分时系统,理解时钟片机制. 并能够实现一些简单的 syscall 调用.
  5. lab4 地址空间,通过阅读源码理解内核的内存管理机制. 掌握页表项查找的机制. 实现一个简化的 mmap, ummap 的 syscall 调用.
  6. lab5 进程管理,通过阅读源码理解内核的进程管理机制,理解 execve 和 clone 等 syscalls,实现 waitpid 和 stride 调度算法.
  7. lab6 文件系统,通过阅读源码理解一个简化的文件系统,理解 Inode 等是如何被构建和使用的, 实现 read, write, open 和 close 等 syscalls.

完成以上内容的同学如果学有余力,或者是准备参加操作系统实现比赛,可以遵循 POSIX 规范进行 syscalls 的改写等工作.

请明确以下原则:

  • 严禁抄袭/拷贝其他同学的代码.
  • 严禁将自己的代码提供给他人.
  • 若发现学术不端现象, 无论你是提供者还是参考者, 均会受到同等处罚.

必要时我们会对同学们提交的代码进行查重.