csapp
文章平均质量分 89
千裡
无
展开
-
《Intro to Computer Systems》(csapp)LAB7(proxylab)
网络编程与web服务器与并发《csapp》11章和12章。对锁的理解。lab首先需要阅读本次lab的writeup以及《CSAPP》的网络编程和并发两章,本次lab给我们提供了一个《CSAPP》 上实现的一个tiny(一个web服务器),我们需要做的是写一个代理服务器,用来接受请求,并且将请求发送给tiny启动的服务器。在PART 2和PART 3中添加线程并发访问以及缓存,来完善我们写的代理服务器。实验完成以后可以直接将代理服务器应用到浏览器上。实现主要参考了七 PROXY LAB问题可能由于环原创 2020-11-06 17:58:38 · 1564 阅读 · 6 评论 -
《Intro to Computer Systems》(csapp)LAB6(malloclab)
目录动态内存分配lab动态内存分配lab本次实验参考了《CSAPP》原创 2020-10-31 13:58:49 · 477 阅读 · 0 评论 -
《Intro to Computer Systems》(csapp)LAB5(shlab)
异常控制流了解基本的LinuxC编程,除了《csapp》的第八章以外,也推荐看看《Linux/Unix编程实践教程》以及《Unix环境高级编程》。LAB本次LAB难度不是很大,但是需要多查阅手册,以及注意细节。在《Linux/Unix编程实践教程》里也简单实现过一个shell。本次lab根据给测试样例一点一点完善shell。test1当标准输入流关闭时退出终端。分析这里简单分析一下已经提供的代码框架。执行我们写的shell时,根据参数进行对应的操作,比如-v、-h、-p参数。默认关闭原创 2020-10-30 12:28:37 · 396 阅读 · 0 评论 -
《Intro to Computer Systems》(csapp)LAB4(CacheLab)
有2s组,每组有E行,每一行是一个缓存块,每一行包括1个有效位,t个标记位。有2b字节存数据以及有效位和标记位(标记位用来和给定地址的标记位对比,判断给定地址在不在该行中,如果在则命中)。参数是判断高速缓存是否存在对应地址的数据的操作为:参数S和B将m位地址分为了三段,首先通过S找到对应的组,再该组的行中找到标记位t与查询地址的标记为t相等的行,然后再该行包含的块中查找偏移地址位B的位置。即缓存命中。直接映射高速缓存在理解了组、行、标记、偏移地址概念后,直接映射就是每组只有一行,因此当两个原创 2020-10-28 18:05:35 · 556 阅读 · 4 评论 -
《Intro to Computer Systems》(csapp)LAB3(Attack Lab)
话说,试了一下retq弹栈64位,明明pushq压入64位,却只能pushq $0x4017ec,不能pushq $0x4017ec001200目录运行时栈结构缓存区溢出对抗缓冲区溢出的方法栈随机化栈破坏检测(金丝雀值)LAB3Part I: Code Injection AttacksLevel.11Level.12我的错解正解分析Level.13Part II: Return-Oriented Programminglevel.21Level.23运行时栈结构缓存区溢出比如不安全的gets()原创 2020-10-25 22:50:07 · 726 阅读 · 0 评论 -
《Intro to Computer Systems》(csapp)LAB2(Bomb lab)
目录编译系统常用寄存器操作数格式数据传送指令gcc 和 gdbgdb常用指令lab1编译系统对于源代码hello.c。gcc -Og -S hello.c,则生成hello.s汇编程序。gcc -Og -c hello.c,则生成生成hello.o可重定位文件。gcc -Og hello.c,则生成可执行文件a.out.可以使用objdump -d a.out对.o文件或.out文件进行反汇编。常用寄存器操作数格式数据传送指令gcc 和 gdbgdb常用指令layout原创 2020-10-24 21:53:38 · 588 阅读 · 0 评论 -
《Intro to Computer Systems》(15-213)LAB1(Data lab)
课程首页目录lab1lab1原创 2020-10-23 11:54:14 · 270 阅读 · 0 评论 -
gcc和gdb的使用以及实战(bomblab)
@[toc]目录gcc简介GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。gcc 与 g++ 分别是 gnu 的 c & c++ 编译器。(gcc 命令只能编译 C++ 源文件,而不能自动和 C++ 程序使用的库连接。因此,通常使用 g++ 命令来完成 C++ 程序的编译和连接,该程序会自动调用 gcc 实现编译。)编译过程以一个输出"hello world"的代码为例,编译的过程中分为如下4步(下图来自《csapp》):预处理,原创 2020-08-27 01:35:28 · 1841 阅读 · 0 评论