diff --git a/lecture_note/docs/pintos/proj3.md b/lecture_note/docs/pintos/proj3.md
new file mode 100644
index 0000000..bcbbc4b
--- /dev/null
+++ b/lecture_note/docs/pintos/proj3.md
@@ -0,0 +1,55 @@
+# Project 3: Virtual Memory
+
+!!! warning "No plagiarism"
+    If you are enrolled in CS130, you may not copy code from this repository.
+
+!!! warning "急了急了急了"
+    Project 3 基于 Project 2, 希望你的 Project 2 足够 robust.
+
+!!! note "Overview"
+    - Task 1 : paging
+    - Task 2 : stack growth
+    - Task 3 : memory mapping files
+    - Task 4 : swapping
+    - Task 5 : accessing user memory
+
+## 文件系统限制依然存在
+
+- 可能并发访问一个文件, 考虑加锁
+- 文件大小固定, 控制文件名长度不超过 14 字符
+
+## 分析
+
+空啊, 很空啊 (指 vm 文件夹).
+
+`Make.vars` 里面添加了宏定义 `VM`, 可以像之前的 `#ifdef USERPROG` 一样使用.
+
+新增的 `.c` 文件需要在 `Makefile.build` 里面添加到 `vm_SRC`.
+
+在有虚拟内存时, page fault 有更多种情况
+
+- 访问的虚拟地址合法
+    - 没有对应的页
+    - 对应的页没有载入内存
+- 访问的虚拟地址非法
+    - 中止, 防止操作系统崩溃
+
+## Task 1
+
+
+
+## Task 2
+
+
+
+## Task 3
+
+
+
+## Task 4
+
+
+
+## Task 5
+
+
diff --git a/lecture_note/mkdocs.yml b/lecture_note/mkdocs.yml
index efb8fb2..cb71cb4 100644
--- a/lecture_note/mkdocs.yml
+++ b/lecture_note/mkdocs.yml
@@ -55,4 +55,5 @@ nav:
   - pintos:
     - Project 1: 'pintos/proj1.md'
     - Project 2: 'pintos/proj2.md'
+    - Project 3: 'pintos/proj3.md'
   # - 其他笔记:
\ No newline at end of file