diff --git a/docs/index.md b/docs/index.md index 8201106..7024d32 100644 --- a/docs/index.md +++ b/docs/index.md @@ -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) diff --git a/docs/labs/0x03-kernel-threads-and-page-fault.md b/docs/labs/0x03-kernel-threads-and-page-fault.md new file mode 100644 index 0000000..d00b7e0 --- /dev/null +++ b/docs/labs/0x03-kernel-threads-and-page-fault.md @@ -0,0 +1 @@ +# 实验三:内核线程与缺页异常 diff --git a/docs/labs/0x03-kernel-threads.md b/docs/labs/0x03-kernel-threads.md deleted file mode 100644 index 9422a9c..0000000 --- a/docs/labs/0x03-kernel-threads.md +++ /dev/null @@ -1 +0,0 @@ -# 实验三:内核线程 diff --git a/docs/labs/0x05-page-fault-fork-and-lock.md b/docs/labs/0x05-fork-and-lock.md similarity index 100% rename from docs/labs/0x05-page-fault-fork-and-lock.md rename to docs/labs/0x05-fork-and-lock.md diff --git a/mkdocs.yml b/mkdocs.yml index 7e5bb7e..8312d65 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -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