本 lab 需要在xv6上修改 kalloc.c 和 bio.c 等代码, 采用细粒度锁减少 kalloc(), kfree(), bget(), bread(), bwrite()等函数的锁竞争情况。附加题要求使用缓存、预取等机制优化原本的 AI 推理程序
OSTEP Note with xv6: Concurrency
结合部分 RISC-V 版本的 xv6 代码,对OSTEP的并发部分进行了梳理
XV6 Lab:mmap
本 lab 需要在 xv6 上实现 mmap 和 munmap 系统调用并通过测试
XV6 Lab:Copy On Write
本 lab 需要在 xv6 上完成 Copy On write 操作,复制页时,把PTE_W置0,PTE_COW置1,写时触发异常再进行复制的操作
XV6 HITSZ Lab2:进程与系统调用
本 lab 需要在xv6上修改系统调用,在 exit() 时打印父子进程信息、为 wait() 增加非阻塞选项、添加 yield() 系统调用,以及附加题实现系统调用白名单和日志,期间发现一个比较有意思的 GDB 现象
XV6 HITSZ Lab1:XV6与Unix实用程序
本 lab 需要在xv6上编写三个用户程序:sleep, pingpong 和 find,并且跟踪 xv6 的启动流程
OSTEP Note with xv6: Memory Virtualization
结合部分 RISC-V 版本的 xv6 代码,对OSTEP的内存虚拟化部分进行了梳理
OSTEP Homework Measurement 2: 测量 TLB 大小和消耗
通过实验测量 Linux VM 中 TLB (Translation Lookaside Buffer) 的大小和开销
OSTEP Note with xv6: CPU Virtualization
结合 RISC-V 版本的 xv6 代码,对OSTEP的CPU虚拟化部分进行了梳理,主要包括Trap机制、上下文切换(Context Switch)、系统调用(System call)以及不同的调度策略(Scheduling Policy)
OSTEP Homework Measurement 1: 测量 System Call 和 Context Switch 的开销
通过实验测量 Linux 中 system call 和 context switch 的性能开销,并分析两者差异。