Table of Contents
此项目为MIT的6.S081课程实验。实验中囊括了操作系统的大部分知识,这十个实验都十分值得一做,笔者花费大约一个月,从lab1到lab10都独立思考完成,收获不小。正是应了那句话,纸上得来终觉浅,绝知此事要躬行。
推荐一本好书——《Operating Systems: Three Easy Pieces》。如果你和我一样对OS一无所知,那么强烈建议你边看这本书边写实验。这本书对初学者十分友好,而且不会很枯燥,可以很好地帮助你理解OS的不少细节,可以让你更快看懂xv6
的代码。总之,这本书值得一读。
- Utilities
- System calls
- Page tables
- Traps
- Lazy allocatioin
- Copy on-write
- Multitheading
- Lock
- File system
- mmap
- network driver
- 什么是系统调用,系统调用的过程,如何编写系统调用
- 什么是用户态,内核态,如何在两者之间进行切换
- 为什么使用
pgtbl
,如何管理内存 - 什么是
trap
,为什么设置trap
,如何让trap
正确返回 - 为什么要
lazy allocation
,有什么好处 - 为什么要
copy on write
,有什么好处 xv6
内核并没有多线程机制,如何编写一个用户态多线程,线程如何切换,线程栈是什么- 为什么要使用锁,如何在保证正确性的前提下提高并发性,提高性能
- 什么是文件系统,什么是直接索引,间接索引,多级索引,文件系统布局是什么样的
mmap
是什么,实现mmap
要注意什么
相信大家在只做xv6中的文件系统实验后,对于文件系统的细节实际上还是不够了解。这里推荐一个实验HITSZ-fs-lab,这个lab是让大家从文件系统的内存布局,磁盘布局开始设计自己的fs
,并且上限可以很高。你可以仅仅做基本的文件系统命令mount
,unmount
,ls
,touch
,mkdir
,也可以做加强版,如加入更多fs
命令,磁盘缓冲,日志系统等。