Skip to content

Labs of Computer Systems: A Programmer's Perspective, 3/E (CS:APP3e) , CMU

Notifications You must be signed in to change notification settings

qin-you/csapp-labs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CSAPP-LABs 3E

全力肝,两周时间预算

Contents

实验文件夹下包含官方提供基本源码资源、实验介绍pdf、实验笔记README。
tar目录是从官网下载的*.tar压缩包

Labs Review

  • 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章。

Resource

  • 官方实验资源:Labs
    其中Writeup是一个实验说明的pdf,Handout是tar压缩包包含实验需要的代码,文件等。
    本项目已经把pdf放到每一个实验目录下

  • CSAPP官方GDB操作pdf: GDB
    实验需要用到的操作里面都有

  • 优秀的他山之石

About

Labs of Computer Systems: A Programmer's Perspective, 3/E (CS:APP3e) , CMU

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published