TYCS: Step2.5
class Operating System Engineering(MIT 6.828)
每个lab在对应分支,记录了一些实验的思考过程,传送门:
- Lab util
- Lab sh
- Lab alloc
⭐ 有关于buddy allocator
非常直观的图 - Lab lazy
利用pte的保留位标记了guard页,所以vmprint的测试没通过,但是问题不大,这个方案我觉得也还行。 另一种就在exec时给proc更新一个ustack字段 - Lab cow
父进程的pte和子进程的pte都要改标记COW,用引用计数回收共享页。
记录了一个实现copyout前的bug的过程,比较隐蔽
过程:kalloc.c中的引用计数 | uvmcopy uvmunmap修改 | usertrap() | 迁移到copyout - Lab syscall
终于明白切换是怎么回事了。
看懂了内核的进程调度,这期的lab还比较简单 - Lab lock
捋了一遍粗略开机过程,freerange
时不用加锁
最初理解的stealing
很麻烦,但是用proxying
的角度来实现就简单很多了