Code Monkey home page Code Monkey logo

csapp-labs's Introduction

CSAPP 3e Labs

这个项目记录了我对《深入理解计算机系统》第三版官网配套实验的解答,部分实验附有解答文档。

目录:

  • Data Lab:已完善实验笔记
    实现简单的逻辑函数、二进制补码和浮点函数,但必须使用 C 语言的一个高度受限的子集。例如,可能会要求仅用位级运算和直线代码(straightline code)来计算一个数的绝对值。该实验帮助学生理解 C 语言数据类型的位级表示和数据操作的位级行为。

  • Bomb Lab:已完善实验笔记
    “二进制炸弹”是一个程序,以目标代码文件的形式提供给学生。运行时,它会提示用户键入 6 个不同的字符串。如果其中任何一个错误,炸弹就会“爆炸”,打印错误消息并将事件记录在打分服务器上。学生们必须通过反汇编和逆向程序,“拆除”他们自己独特的炸弹,以确定这 6 个字符串应该是什么。该实验教学生理解汇编语言,并迫使他们学习如何使用调试器(debugger)。它也很有趣。这是 CMU 本科生的一个传奇实验。

  • Attack Lab:已完善实验笔记
    给一对唯一的自定义生成的 x86-64 二进制可执行文件,称为目标(targets),它们包含缓冲区溢出错误。一个目标存在代码注入攻击漏洞。另一个存在面向返回的编程(ROP,return-oriented programming)攻击漏洞。要求学生基于代码注入或 ROP,开发漏洞利用,修改目标的行为。该实验教学生堆栈的规则,以及编写有缓冲区溢出漏洞的代码的危险。

  • Cache Lab:已完善实验笔记
    编写一个通用缓存模拟器,然后优化一个小矩阵转置内核,从而最小化模拟缓存上的未命中次数。这个实验室使用 Valgrind 工具来生成地址踪迹(address traces)。

  • Shell Lab: 实验笔记待补充...
    通过作业控制(job control)实现他们自己的简单的 Unix shell 程序,包括 ctrl-c 和 ctrl-z 击键、fg、bg 和 jobs 命令。可以清楚地了解 Unix 的进程控制、信号和信号处理。

  • Malloc Lab:待补充
    实现自己版本的 malloc、free 和 realloc。该实验让学生对数据布局和组织有一个清晰的理解,并要求他们评估空间和时间效率之间的不同权衡。我们最喜欢的实验之一。学生完成它后,将真正理解指针!

  • Proxy Lab:实验笔记待补充...
    实现一个并发缓存(concurrent caching)的 Web 代理,该代理位于学生的浏览器和其他万维网之间。该实验让学生接触到有趣的网络编程世界,并将课程中的许多概念联系在一起,例如字节序(byte ordering)、缓存、进程控制、信号、信号处理、文件 I/O、并发和同步。

csapp-labs's People

Contributors

klngbob avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.