Skip to content

Commit

Permalink
wip: adjust lab content
Browse files Browse the repository at this point in the history
  • Loading branch information
GZTimeWalker committed Nov 21, 2023
1 parent aebb0da commit ed724de
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 19 deletions.
28 changes: 14 additions & 14 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,56 +6,56 @@ A Rust x86_64 OS lab tutorial.

每一次实验区间为两周。

- [实验零:环境搭建与实验准备](./labs/0x00-env)
- [实验零:环境搭建与实验准备](./labs/0x00-env.md)

1. Rust 学习和巩固,了解标准库提供的基本数据结构和功能。
2. QEMU 与 Rust 环境搭建,尝试使用 QEMU 启动 UEFI Shell。
3. 了解 x86 汇编、计算机的启动过程,UEFI 的启动过程,实现 UEFI 下的 `Hello, world!`

- [实验一:操作系统的启动](./labs/0x01-boot)
- [实验一:操作系统的启动](./labs/0x01-boot.md)

1. 了解页表的作用、ELF 文件格式、操作系统在 x86 架构的基本启动过程。
2. 尝试使用 UEFI 加载并跳转到内核执行内核代码。
3. 实现基于 uart16550 的串口驱动,使用宏启用输出能力、并启用日志系统。
4. 学习并尝试使用调试器对内核进行调试。

- [实验二:中断处理](./labs/0x02-interrupt)
- [实验二:中断处理](./labs/0x02-interrupt.md)

1. 了解中断的作用、中断的分类、中断的处理过程。
2. 实现基于 APIC 的中断处理程序,编辑 IDT 实现时钟中断,实现一个跑马灯。
3. 注册内核堆分配器。(不实现内存分配算法,使用现有代码赋予内核堆分配能力)
4. 实现串口驱动的输入能力,尝试进行基础的 IO 操作和交互。

- [实验三:内核线程](./labs/0x03-kernel-threads)
- [实验三:内核线程与缺页异常](./labs/0x03-kernel-threads-and-page-fault.md)

1. 了解进程与线程的概念、线程的结构和实现
1. 了解进程与线程的概念、相关结构和实现
2. 实现内核线程的创建、调度、切换。(栈分配、上下文切换)
3. 了解缺页异常的处理过程,实现进程的栈增长。

- [实验四:用户程序与系统调用](./labs/0x04-userspace)
- [实验四:用户程序与系统调用](./labs/0x04-userspace.md)

1. 了解用户态与内核态的区别、用户程序的加载与执行。
2. 补充页表、内存分配相关知识,了解使用链接器脚本编译能够被加载执行的程序。
3. 实现基本的系统调用。
4. 实现用户程序的加载与执行,并切换到用户态。

- [实验五:缺页异常、fork 的实现、并发与锁机制](./labs/0x05-page-fault-fork-and-lock)
- [实验五:fork 的实现、并发与锁机制](./labs/0x05-fork-and-lock.md)

1. 了解缺页异常的处理过程,实现用户进程的栈增长。
2. 了解 fork 的实现原理,实现 fork 系统调用。
3. 了解并发与锁机制的概念,实现基于操作系统的自旋锁、信号量。
4. 编写基于 fork 的并发程序,并测试自旋锁、信号量的正确性。
1. 了解 fork 的实现原理,实现 fork 系统调用。
2. 了解并发与锁机制的概念,实现基于操作系统的自旋锁、信号量。
3. 编写基于 fork 的并发程序,并测试自旋锁、信号量的正确性。

- [实验六:硬盘驱动与文件系统](./labs/0x06-filesystem)
- [实验六:硬盘驱动与文件系统](./labs/0x06-filesystem.md)

1. 了解文件系统的概念、作用。
2. 实现块设备、磁盘、分区、文件系统的抽象。
3. 了解 ATA 硬盘的工作原理、实现基本的读写驱动。
4. 实现 FAT16 文件系统的读取和只读文件访问。

- [实验七:更好的内存管理](./labs/0x07-memory-management)
- [实验七:更好的内存管理](./labs/0x07-memory-management.md)

1. 实现帧分配器的内存回收,操作系统的内存统计。
2. 实现操作系统栈的自动增长。
3. 尝试实现 mmap 系统调用,实现用户态的内存管理算法。

- [实验八:扩展实验](./labs/0x08-further)
- [实验八:扩展实验](./labs/0x08-further.md)
1 change: 1 addition & 0 deletions docs/labs/0x03-kernel-threads-and-page-fault.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# 实验三:内核线程与缺页异常
1 change: 0 additions & 1 deletion docs/labs/0x03-kernel-threads.md

This file was deleted.

File renamed without changes.
8 changes: 4 additions & 4 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@ nav:
- 实验零:环境搭建与实验准备: labs/0x00-env.md
- 实验一:操作系统的启动: labs/0x01-boot.md
- 实验二:中断处理: labs/0x02-interrupt.md
- 实验三:内核线程: labs/0x03-kernel-threads.md
- 实验四:硬盘驱动与文件系统: labs/0x04-filesystem.md
- 实验五:用户程序与系统调用: labs/0x05-userspace.md
- 实验六:缺页异常、fork 的实现、并发与锁机制: labs/0x06-page-fault-fork-and-lock.md
- 实验三:内核线程与缺页异常: labs/0x03-kernel-threads-and-page-fault.md
- 实验四:用户程序与系统调用: labs/0x04-userspace.md
- 实验五:fork 的实现、并发与锁机制: labs/0x05-fork-and-lock.md
- 实验六:硬盘驱动与文件系统: labs/0x06-filesystem.md
- 实验七:更好的内存管理: labs/0x07-memory-management.md
- 实验八:扩展实验: labs/0x08-further.md
- 常见问题及解答: faq.md
Expand Down

0 comments on commit ed724de

Please sign in to comment.