Skip to content

Commit

Permalink
refactor: docs struct
Browse files Browse the repository at this point in the history
  • Loading branch information
GZTimeWalker committed Dec 2, 2023
1 parent 5c17fe4 commit 735d9f9
Show file tree
Hide file tree
Showing 20 changed files with 241 additions and 63 deletions.
60 changes: 8 additions & 52 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,55 +11,11 @@
每一次实验区间为两周。

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

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

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

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

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

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

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

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

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

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

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

1. 了解 fork 的实现原理,实现 fork 系统调用。
2. 了解并发与锁机制的概念,实现基于操作系统的自旋锁、信号量。
3. 编写基于 fork 的并发程序,并测试自旋锁、信号量的正确性。

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

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

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

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

- [实验八:扩展实验](./labs/0x08-further.md)
- [实验一:操作系统的启动](./labs/0x01/index.md)
- [实验二:中断处理](./labs/0x02/index.md)
- [实验三:内核线程与缺页异常](./labs/0x03/index.md)
- [实验四:用户程序与系统调用](./labs/0x04/index.md)
- [实验五:fork 的实现、并发与锁机制](./labs/0x05/index.md)
- [实验六:硬盘驱动与文件系统](./labs/0x06/index.md)
- [实验七:更好的内存管理](./labs/0x07/index.md)
- [实验八:扩展实验](./labs/0x08/index.md)
4 changes: 3 additions & 1 deletion docs/labs/0x00/index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# 实验零:环境搭建与实验准备

!!! tip "代码是一场无声的交流,有些人是优秀的诗人,能够将抽象的想法转化为优雅的语言,而有些人则是忠实的翻译者,将逻辑转换成计算机可理解的语言。"
!!! tip "代码是一场无声的交流 <br/>有些人是优秀的诗人,能够将抽象的想法转化为优雅的语言 <br/>而有些人则是忠实的翻译者,将逻辑转换成计算机可理解的语言。"

<p align="right" style="font-weight: bold">by ChatGPT</p>

## 实验目的

Expand Down
29 changes: 29 additions & 0 deletions docs/labs/0x01/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# 实验一:操作系统的启动

!!! tip "就像宇宙的大爆炸,操作系统的启动是一切的起点。<br/>在这个微妙的瞬间,一切从无到有,从混沌到秩序。"

<p align="right" style="font-weight: bold">by Copilot</p>

## 实验目的

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

## 实验基础知识

!!! note "善用 LLM 进行学习"

对于现代计算机专业的学生,我们建议并要求大家学习借助 LLM(Large Language Model)进行学习,这是一种非常有效的学习方法,可以帮助你更快的学习到知识。

对于不理解的知识点和概念,我们建议优先参考文档、借助 LLM 进行实践,在仍然无法解决的情况下再向他人提问。

对于本次实验内容,你需要参考学习如下实验资料:


## 实验任务与要求

1. 请各位同学独立完成作业,任何抄袭行为都将使本次作业判为 0 分。
2. 请参考 [代码规范](../../general/coding_convention.md) 进行实验代码编写。
3. 依据 [实验任务](./tasks.md) 完成实验。
File renamed without changes.
29 changes: 29 additions & 0 deletions docs/labs/0x02/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# 实验二:中断处理

!!! tip "一场未预知的风暴,突如其来,改变了原本平静的世界。"

<p align="right" style="font-weight: bold">by Copilot</p>

## 实验目的

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

## 实验基础知识

!!! note "善用 LLM 进行学习"

对于现代计算机专业的学生,我们建议并要求大家学习借助 LLM(Large Language Model)进行学习,这是一种非常有效的学习方法,可以帮助你更快的学习到知识。

对于不理解的知识点和概念,我们建议优先参考文档、借助 LLM 进行实践,在仍然无法解决的情况下再向他人提问。

对于本次实验内容,你需要参考学习如下实验资料:


## 实验任务与要求

1. 请各位同学独立完成作业,任何抄袭行为都将使本次作业判为 0 分。
2. 请参考 [代码规范](../../general/coding_convention.md) 进行实验代码编写。
3. 依据 [实验任务](./tasks.md) 完成实验。
File renamed without changes.
28 changes: 28 additions & 0 deletions docs/labs/0x03/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# 实验三:内核线程与缺页异常

!!! tip "在无尽的时间舞台上,微妙的轮转编织成了某种无形的序曲,舞者轮番上场,演绎着各自的生命。"

<p align="right" style="font-weight: bold">by ChatGPT</p>

## 实验目的

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

## 实验基础知识

!!! note "善用 LLM 进行学习"

对于现代计算机专业的学生,我们建议并要求大家学习借助 LLM(Large Language Model)进行学习,这是一种非常有效的学习方法,可以帮助你更快的学习到知识。

对于不理解的知识点和概念,我们建议优先参考文档、借助 LLM 进行实践,在仍然无法解决的情况下再向他人提问。

对于本次实验内容,你需要参考学习如下实验资料:


## 实验任务与要求

1. 请各位同学独立完成作业,任何抄袭行为都将使本次作业判为 0 分。
2. 请参考 [代码规范](../../general/coding_convention.md) 进行实验代码编写。
3. 依据 [实验任务](./tasks.md) 完成实验。
File renamed without changes.
29 changes: 29 additions & 0 deletions docs/labs/0x04/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# 实验四:用户程序与系统调用

!!! tip ""

<p align="right" style="font-weight: bold">by</p>

## 实验目的

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

## 实验基础知识

!!! note "善用 LLM 进行学习"

对于现代计算机专业的学生,我们建议并要求大家学习借助 LLM(Large Language Model)进行学习,这是一种非常有效的学习方法,可以帮助你更快的学习到知识。

对于不理解的知识点和概念,我们建议优先参考文档、借助 LLM 进行实践,在仍然无法解决的情况下再向他人提问。

对于本次实验内容,你需要参考学习如下实验资料:


## 实验任务与要求

1. 请各位同学独立完成作业,任何抄袭行为都将使本次作业判为 0 分。
2. 请参考 [代码规范](../../general/coding_convention.md) 进行实验代码编写。
3. 依据 [实验任务](./tasks.md) 完成实验。
File renamed without changes.
1 change: 0 additions & 1 deletion docs/labs/0x05-fork-and-lock.md

This file was deleted.

28 changes: 28 additions & 0 deletions docs/labs/0x05/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# 实验五:fork 的实现、并发与锁机制

!!! tip ""

<p align="right" style="font-weight: bold">by</p>

## 实验目的

1. 了解 fork 的实现原理,实现 fork 系统调用。
2. 了解并发与锁机制的概念,实现基于操作系统的自旋锁、信号量。
3. 编写基于 fork 的并发程序,并测试自旋锁、信号量的正确性。

## 实验基础知识

!!! note "善用 LLM 进行学习"

对于现代计算机专业的学生,我们建议并要求大家学习借助 LLM(Large Language Model)进行学习,这是一种非常有效的学习方法,可以帮助你更快的学习到知识。

对于不理解的知识点和概念,我们建议优先参考文档、借助 LLM 进行实践,在仍然无法解决的情况下再向他人提问。

对于本次实验内容,你需要参考学习如下实验资料:


## 实验任务与要求

1. 请各位同学独立完成作业,任何抄袭行为都将使本次作业判为 0 分。
2. 请参考 [代码规范](../../general/coding_convention.md) 进行实验代码编写。
3. 依据 [实验任务](./tasks.md) 完成实验。
1 change: 1 addition & 0 deletions docs/labs/0x05/tasks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# 实验五:fork 的实现、并发与锁机制
29 changes: 29 additions & 0 deletions docs/labs/0x06/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# 实验六:硬盘驱动与文件系统

!!! tip ""

<p align="right" style="font-weight: bold">by</p>

## 实验目的

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

## 实验基础知识

!!! note "善用 LLM 进行学习"

对于现代计算机专业的学生,我们建议并要求大家学习借助 LLM(Large Language Model)进行学习,这是一种非常有效的学习方法,可以帮助你更快的学习到知识。

对于不理解的知识点和概念,我们建议优先参考文档、借助 LLM 进行实践,在仍然无法解决的情况下再向他人提问。

对于本次实验内容,你需要参考学习如下实验资料:


## 实验任务与要求

1. 请各位同学独立完成作业,任何抄袭行为都将使本次作业判为 0 分。
2. 请参考 [代码规范](../../general/coding_convention.md) 进行实验代码编写。
3. 依据 [实验任务](./tasks.md) 完成实验。
File renamed without changes.
28 changes: 28 additions & 0 deletions docs/labs/0x07/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# 实验七:更好的内存管理

!!! tip ""

<p align="right" style="font-weight: bold">by</p>

## 实验目的

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

## 实验基础知识

!!! note "善用 LLM 进行学习"

对于现代计算机专业的学生,我们建议并要求大家学习借助 LLM(Large Language Model)进行学习,这是一种非常有效的学习方法,可以帮助你更快的学习到知识。

对于不理解的知识点和概念,我们建议优先参考文档、借助 LLM 进行实践,在仍然无法解决的情况下再向他人提问。

对于本次实验内容,你需要参考学习如下实验资料:


## 实验任务与要求

1. 请各位同学独立完成作业,任何抄袭行为都将使本次作业判为 0 分。
2. 请参考 [代码规范](../../general/coding_convention.md) 进行实验代码编写。
3. 依据 [实验任务](./tasks.md) 完成实验。
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
# 实验七:更好的内存管理

1 change: 0 additions & 1 deletion docs/labs/0x08-further.md

This file was deleted.

5 changes: 5 additions & 0 deletions docs/labs/0x08/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# 实验八:扩展实验

!!! tip ""

<p align="right" style="font-weight: bold">by</p>
31 changes: 23 additions & 8 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,29 @@ nav:
- 实验零:实验准备:
- 概览: labs/0x00/index.md
- 任务: labs/0x00/tasks.md
- 实验一:操作系统的启动: labs/0x01-boot.md
- 实验二:中断处理: labs/0x02-interrupt.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
- 实验一:操作系统的启动:
- 概览: labs/0x01/index.md
- 任务: labs/0x01/tasks.md
- 实验二:中断处理:
- 概览: labs/0x02/index.md
- 任务: labs/0x02/tasks.md
- 实验三:内核线程与缺页异常:
- 概览: labs/0x03/index.md
- 任务: labs/0x03/tasks.md
- 实验四:用户程序与系统调用:
- 概览: labs/0x04/index.md
- 任务: labs/0x04/tasks.md
- 实验五:fork 与并发:
- 概览: labs/0x05/index.md
- 任务: labs/0x05/tasks.md
- 实验六:硬盘驱动与文件系统:
- 概览: labs/0x06/index.md
- 任务: labs/0x06/tasks.md
- 实验七:更好的内存管理:
- 概览: labs/0x07/index.md
- 任务: labs/0x07/tasks.md
- 实验八:扩展实验:
- 概览: labs/0x08/index.md
- 实验资料:
- Linux 使用指导: wiki/linux.md
- Rust 语言基础: wiki/rust.md
Expand Down

0 comments on commit 735d9f9

Please sign in to comment.