0%

本次lab Proxylab。 也是csapp的最后一个lab。

1.实验目的

proxylab, 从最终目的来看,我们实现的是一个代理服务器。proxy接收来client的请求,转发给server,并从server中取得数据后,返回给client。另外,proxy从server中取回数据后还需要做cache,这样,当另一个client请求相同的数据时,就不用从server端请求数据,降低了server的压力。

再看看一些细节的要求,要求支持多线程请求,多线程涉及一些同步的问题,所以做的时候一定要考虑哪些是互斥资源,用什么方式同步等。

阅读全文 »

本次lab, shlab. 即编写一个简单的shell。

0. 背景知识

shlab相对其它lab要简单一些,但是其中牵涉出来的一些概念是相当难的。简单说一下这次lab依赖的背景知识吧。

书籍对应 异常控制流 章节

  1. 理解进程的概念,linux如何创建新进程,进程的状态转换,回收等过程。
  2. 理解linux中的signal概念,掌握如何发送、接收、处理signal事件,理解signal handler中的 Async-Signal-Safety问题及解决方案(也是本次实验的难点) ,掌握async-signal-safety的guideline.
阅读全文 »

问题

今天在manjaro下做qt开发时,发现fcitx-rime输入法无法在qtcreator中输入,google了一波,发现应该是差了某个动态库,网上的发行版大多以debian系列为主,apt安装个包就完了,arch系列不是这样解决的。

阅读全文 »

本次 lab, cachelab.

0. 说明

从这个lab开始,终于开始编写一些高级语言的代码了,而不像之前要去分析汇编。但是这并不意味这题目就简单了,实际上,cachelab耗费了我2天多的时间。ok,言归正传,这个lab的目的是什么呢?

cachelab帮助我们理解计算机存储体系中的重要组成部分–cache。 理解cache是如何组织的,如何工作的,又是如何影响我们的程序的性能的。

阅读全文 »

manjaro是个人最喜欢的linux发行版,但是给我的台式机安装后,总是死机,无奈暂时转入deepin。

后来发现manjaro死机,应该是给cpu超频的原因, 因为deepin也死机了,关闭超频后,一切正常,但是已经在deepin上安装好了各种环境,不想再更换回去。

本文依然是自己给自己的备份。

阅读全文 »

今天继续学习csapp.

前一个lab: Csapp-Datalab 详解

本次lab, bomblab.

0. 说明

这个实验相当好玩, 题如其名, 类似一个拆炸弹的过程. 实验只给了一个可执行文件, 需要学生通过gdb反汇编这个可执行文件, “拆弹”共有6个阶段, 每个阶段需要用户输入一个特定的字符串, 一旦输入错误, 炸弹就会爆炸,程序终止.

做完整个实验, 学生可以学会如何使用gdb, 能够看懂 gcc所编译出来的汇编代码. 掌握阅读汇编代码的能力.

gdb的使用可参考: gdb 调试基础

本次解释, 均已代码注释+图形解释.

所有汇编代码, 可通过 objdump -d bomb获得.

阅读全文 »