Skip to content
forked from bjtu-os/labs

北京交通大学操作系统课程实验

License

Notifications You must be signed in to change notification settings

Takagi3-lover/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

北京交通大学操作系统课程实验

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 88.1%
  • Makefile 6.7%
  • Assembly 4.7%
  • Python 0.5%