全力肝,两周时间预算
实验文件夹下包含官方提供基本源码资源、实验介绍pdf、实验笔记README。
tar目录是从官网下载的*.tar压缩包
-
Data Lab
README
限定运算符并在有限指令步数内完成给定函数,比如用! ~ & ^ | + << >>
内的运算符实现三目运算符x?y:z
。 需要掌握数据的bit级表示以及常见的运算符的灵活使用,浮点部分较难。对应书上第二章。 -
Bomb Lab
README
著名拆炸弹实验,旨在加强对汇编语言和GDB调试工具的熟练使用。对应书籍第3章。 -
Attack Lab
README
做得很有成就感的一个实验,像个hacker一样做CI和ROP攻击。ROP比CI破解能力更强,可以突破栈地址随机化和权限限制的封锁。本实验可以加深对函数跳转、参数传递、栈帧、防御性编程和机器码执行过程的理解。对应书籍第3章。 -
Architecture Lab
阶段工作重心不含此内容,时间关系暂跳过。对应书籍第4章。 -
Cache Lab
README
小有成就感的一章,模拟cache实现的代码根据书本6.4节的概念讲解可以直接写出来,从0开始耗时6h左右编写和调试完成。PARTB部分是对矩阵转置实现的优化已跳过。本实验可加深对存储器层次结构、Cache工作原理、时间/空间局部性的理解。对应书籍第5 6章。 -
Performance Lab
README
CMU已经用Cache Lab把本实验取代。可直接写Cache Lab。 -
Shell Lab
README
支持shell调用已有可执行程序、信号捕捉与处理、jobs管理。 可使用所有系统函数。可能因为学过xv6手写内核的课,本实验给本人感觉并不惊艳,也有可能是没get到精髓。本实验可揭开日常使用的shell的面纱,加深对信号、进程管理的理解。对应书籍第8章。 -
Malloc Lab
README
本来是巨肝,但书9.9节提供了很多可用的代码,都看懂以后对本实验帮助巨大。本实验可揭开平时使用的malloc函数的面纱,加深对堆内存的理解。本实验给出的是虚拟空间堆内存组织方式,可延伸阅读xv6源码中关于物理内存的组织方式,也是用的空闲链表。 对应书籍第9章。 -
Proxy Lab
README
这应该就是最肝的一个实验,前置知识虽然也不多:能用套接字实现个echo server,了解http头部信息,了解proxy就够了。实验提供的源码封装了很多函数,使用实验提供的函数会稍微省事儿点。时间原因实现前两个任务,参考的别人代码,PART III跳过。 对应书籍10 11 12章。