GithubHelp home page GithubHelp logo

miracle-1996 / csapp-labs Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jlu-xiurui/csapp-labs

0.0 1.0 0.0 5.54 MB

《深入理解计算机系统》-CSAPP的实验笔记、源码、答案(8个实验均已完结)

Shell 1.73% Python 0.84% Perl 6.69% C 68.24% Tcl 3.99% Assembly 0.01% Makefile 1.79% HTML 6.74% Yacc 0.17% Lex 0.22% HCL 9.58%

csapp-labs's Introduction

CSAPP-LABS

_labs中存放了实验的原始数据,solution中存放了实验的解答和笔记,已完结 ^ ^。

01 Data Lab datalab-note

本实验需要解决一系列的位运算函数,并通过给定的测试用例,考察了实验者对于整形数据和浮点数据在计算机中存储形式和位运算特点的知识。

02 Bomb Lab bomblab-note

本实验由六个子部分组成,在每个子部分中需要输入对应格式的字符串从对应的 phase 函数中安全返回。具体的做法就是利用 gdb 来观察各 phase 的具体细节,从而确定应当输入字符串的格式(一串特定的文字或是以 \0 隔开的若干整数)。

03 Attack Lab attacklab-note

在本实验中,实验者需要利用缓冲区攻击来破坏原有程序,以执行攻击者程序。本实验中可以进一步巩固汇编代码的阅读和分析能力,以及gdb工具的使用,并编写或组装自己的汇编代码。如果你独立完成了Bomb Lab的全部内容,本实验对于你来说应当不在话下。

04 Arch Lab archlab-note

本实验主要依托于CSAPP的第四章,为了完成实验,实验者需要对于书中所描述的Y86-84指令集具有较为清晰的理解。实验具体分为三个子部分:

  • 利用书中所构造的Y86-64指令集编写汇编语言,以实现等效的三个C语言函数;
  • 在书中SEQ(Y86-84处理器的顺序实现)上增加一条额外的指令;
  • 优化书中的PIPE(Y86-84处理器的流水线实现)及用其来执行的汇编程序,使得执行该汇编程序的CPI(每指令周期数)最小。

05 Cache Lab cacheLab-note

本实验由两部分组成,第一个部分要求我们编写一个基于LRU替换策略的cache模拟器,以模拟在经历一系列内存读取/存储任务时的cache命中、不命中及替换行为;第二个部分要求我们对矩阵转置传递函数进行优化,优化目标为尽可能低的cache不命中率。

06 Shell Lab shellLab-note

本实验需要实现一个简易版本的Unix Shell,该Shell需要具有作业控制、僵死子进程回收、内置命令等基本功能,为了完成本实验,实验者需要对于进程行为、信号处理具有一定的了解。当实验中遇到困难时,可以通过阅读CSAPP第8章(或APUE)得到相应的解决方案。

07 Malloc lab malloclab_note

本实验的目的是编写一个动态内存分配器,尽可能的在空间利用率和时间复杂度上达到最优。在实验中的一切数据结构都要存放在堆中,对实验者对于指针的管理能力有一定考验,相较以上几个实验也更加困难。

注:在官网下载的源文件的测试用例tracefile不完整,可以在此实验的solution文件夹处下载完整的tracefile。

08 Proxy lab proxylab-note

本实验需要实验者实现一个Web服务器的简单代理工具,并在实验中尝试和学习比较简单的网络套接字编程、并发编程。在学习理解书中后三章后,相信本实验对你来说一定不是困难。

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.