合集-CSAPP
摘要:第二个 Lab 就比较有趣了。 这一个 Lab 的任务是,我们得到了一个 bomb 炸弹程序,这个炸弹程序有 \(6\) 个 phase,每个 phase 都会读取我们的输入,判断我们的输入是否符合要求,如果正确这个 phase 的炸弹就会被拆除,否则炸弹就会爆炸。我们需要借助各种工具,对程序进行反
阅读全文
摘要:书接上回,这次做到了第三个 Lab 啦。 任务描述 这一个 Lab 的任务就更有意思了,实验给了我们两个程序,每个程序都会让我们输入一行字符串,而它们是通过下面这个函数来读取的: unsigned getbuf() { char buf[BUFFER_SIZE]; Gets(buf); return
阅读全文
摘要:本次实验是有关书上第四章设计的 Y86-64 处理器的,实验分为三个部分,分别是编写几个简单的 Y86-64 程序、使用一条新指令扩展 SEQ 模拟器以及优化 Y86-64 的基准测试程序和处理器设计。 实验准备 需要简单复习一下 Y86-64 的指令集架构以及处理器架构呢。 指令集架构 指令集:
阅读全文
摘要:到实验 5 啦! 这次的实验是有关高速缓存的。 让我们先来复习一下高速缓存的基础知识吧! 复习 高速缓存的结构 在一个存储器地址有 \(m\) 位的系统上,一共有 \(M = 2^m\) 个地址。假设高速缓存被组织成一个有 \(S = 2^s\) 个高速缓存组的数组,其中每个组包括 \(E\) 个高
阅读全文
摘要:本次实验的任务很清晰,实现一个简单的 Unix Shell。需要用到基础的进程控制、信号处理等知识。 简单来说,实验已经提供了一些简单的功能,我们需要在此基础上,实现下面的功能: eval:解析和解释命令行的主例程。[70行] builtin_cmd:识别并解释内置命令 quit(退出)、fg(前台
阅读全文
摘要:本次实验的内容也比较清晰,只需要完成一个手写的 malloc 动态内存分配器即可。 书上第 \(9\) 章第 \(9\) 节介绍了这样的分配器的实现方法。 实验要求 本次实验提供了基本的框架,需要完成下面几个函数: int mm_init(void); void *mm_malloc(size_t
阅读全文
摘要:终于到最后一个 Lab 啦! 这个 Lab 的任务是实现一个代理服务器,将客户端发送的请求转发到服务端。 这个 Lab 分为三个任务,第一个任务需要实现这个代理服务,第二个任务支持处理并发请求,第三个任务需要实现缓存。 Part I: Implementing a sequential web pr
阅读全文
摘要:本文原发于 2023-09-02 15:32:57 于我的 hexo 博客,现迁移至此。 最近看完了 CSAPP 整本书,发现官网上还有 11 次实验可以做。 UPD:好像只有 9 个,因为有两个是旧版本的,可以被新版的替代掉。 UPD:好像只有 8 个,performance 也算是旧的实验了,但
阅读全文