RedemptionC / xv6-riscv-fall19

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

TYCS: Step2.5

class Operating System Engineering(MIT 6.828)

每个lab在对应分支,记录了一些实验的思考过程,传送门:

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

About

License:Other


Languages

Language:C 81.8%Language:Python 10.9%Language:Assembly 2.7%Language:Makefile 2.3%Language:C++ 1.9%Language:Perl 0.2%Language:Shell 0.0%Language:Emacs Lisp 0.0%