Skip to content
/ labs Public

北京交通大学课程实验:实现一个 OS 内核 in Rust

License

Notifications You must be signed in to change notification settings

bjtu-os/labs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BJTU 2022 操作系统课程实验

实验概览

本实验旨在一步一步展示如何从零开始用 Rust 语言写一个基于 RISC-V 架构的类 Unix 内核 。实验内容主要分为以下几个方面。

  • Lab 0 - 配置操作系统开发的基本环境。
  • Lab 1 - 构建一个独立的不依赖于 Rust 标准库的可执行程序。
  • Lab 2 - 实现裸机上的执行环境以及一个最小化的操作系统内核。
  • Lab 3 - 实现一个简单的批处理操作系统并理解特权级的概念。
  • Lab 4 - 实现一个支持多道程序和协作式调度的操作系统。
  • Lab 5 - 实现一个分时多任务和抢占式调度的操作系统。
  • Lab 6 - 实现内存的动态申请和释放管理。
  • Lab 7 - 实现进程及进程的管理。

共计 8 个实验项目,通过实验的方式深入研讨操作系统底层的工作原理,并使用 Rust 语言逐步实现一个基本的操作系统内核。

实验环境要求

  1. OS 环境配置:对于 Windows 10/11 和 macOS 上的用户,可以使用 WSL 2、VMware Workstation、Parallels Desktop 等相关软件, 通过虚拟机方式安装 openEuler 22.03 LTS,并在上面进行实验。注意 VirtualBox 虚拟机会在后续实验操作中出现问题,不建议使用。
  2. Rust 环境配置:需要在虚拟机上配置好 Rust 开发环境。
  3. Qemu 模拟器安装:我们需要使用 Qemu 7.0.0 以上版本进行实验,为此,从源码手动编译安装 Qemu 模拟器。

前置知识

  1. 熟悉操作系统相关知识。比如,一个程序运行中操作系统到底起了什么作用?程序运行中操作系统的内核态和用户态工作情况?OS 的系统调用?进程?内存?IO?等。
  2. 对计算机体系结构有一定简单了解。比如,裸机是什么?裸机上能跑程序吗?什么是指令集?计算机体系结构?CPU、内存、IO 等这些硬件之间如何协调完成计算任务的?
  3. 能够读懂简单的汇编语言、能够读懂简单的 Makefile 文件。
  4. 熟悉 Rust 基本语法,包括 Cargo 项目结构、Trait、函数式编程、Unsafe Rust、错误处理等。为了便于同学们入门 Rust,我们准备了一份 Rust 入门教程

参考

本教程内容参考了清华大学操作系统实验课 rCore 。并在其基础之上做了一定程度的修改和完善。

Contribution

如果在阅读本教程的过程中发现内容有疏漏之处,欢迎提 issue。

About

北京交通大学课程实验:实现一个 OS 内核 in Rust

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published