
CSAPP《深入理解计算机系统》
文章平均质量分 90
CSAPP章节总结,以及CASPP Lab笔记
Chandler24
这个作者很懒,什么都没留下…
展开
-
CSAPP 阅读指南与Lab攻略
《深入理解计算机系统》(CSAPP)的阅读指南和 Lab 攻略。原创 2025-02-28 09:43:22 · 692 阅读 · 0 评论 -
CSAPP Data Lab:攻克难关,探寻二进制数据的奥秘
lab下载链接,这个lab大部分都不是自己写出来的,太难了,看的是B站的CSAPP datalab讲解,讲的很好可以写一个run.sh脚本方便运行./btestdlc程序用来检查bits.c是否违反规则,可以查看每个函数的具体情况make还会生成ishow,fshow来查看整型和浮点数的表示,也可以看一看这两个的代码会更深入的理解整型和浮点数的表示出现下面情况是正常的。原创 2024-11-20 14:07:57 · 626 阅读 · 0 评论 -
CSAPP Bomb Lab:拆解炸弹全攻略,反汇编与调试技巧大揭秘
lab下载链接,推荐B站视频讲解,CSAPP bomblab讲解,就是彩蛋没讲有点可惜可以自定义一个ans.txt文件方便运行程序通过反汇编将bomb的汇编代码重定向到bomb.s文件中在整个拆炸弹的工程中,都是通过gdb ./bomb命令进行调试所有答案都是通过断点跟踪输入数据是如何存储的与变化的,来分析汇编。原创 2024-11-23 12:00:19 · 451 阅读 · 0 评论 -
CSAPP Bomb Lab Secret Phase:探寻炸弹隐藏彩蛋,二叉树路径查找背后的秘密
bomb.c中在拆完最后一个炸弹后,作者留下了这样的一段话,我们可以知道一定是错过了什么,在拆前六个炸弹时,我们也能发现一些端倪,就比如在。函数,在连续打印地址后续的字符串时会发现彩蛋,在重定向产生的。:按二叉树递归查找目标值。返回路径编码,验证是否与预期值(:解析用户输入的目标值,并检查范围。开始:**检查输入条件是否满足。:如果路径正确,打印成功信息。发现每次拆弹成功后都会调用。,在二叉树中查找路径。有一些从未用过的函数。原创 2024-11-23 17:06:51 · 338 阅读 · 0 评论 -
CSAPP Attack Lab:代码注入与 ROP 攻击的剖析与实践
target1中的文件包括README.txt: 描述目录内容的文件ctarget: 易受代码注入攻击的可执行程序rtarget: 易受面向返回编程攻击的可执行程序cookie.txt: 8 位十六进制代码,在攻击中用作唯一标识符。farm.c: 目标程序 “gadget farm ”的源代码,你将用它来生成面向返回的编程攻击时使用。hex2raw: 用于生成攻击字符串的实用程序在官方文档中每个question,有题目要求,和解题指导要仔细看。Lab下载链接AttackLab官方文档。原创 2024-11-25 21:58:57 · 667 阅读 · 0 评论 -
CSAPP Cache Lab:缓存模拟器与性能优化的简单实现
理解高速缓存对 C 程序性能的影响,通过两部分实验达成:编写高速缓存模拟器;优化矩阵转置函数以减少高速缓存未命中次数。Part A一开始根本不知道要做什么,慢慢看官方文档,以及一些博客,和B站视频,终于知道是干嘛的了,看完别人的解题方法后,就能自己写出来了。按照我给出的一些链接,完全能搞懂。Part B给大家推荐了两篇文章。(强烈推荐阅读),原创 2024-11-26 23:56:25 · 1256 阅读 · 0 评论 -
CSAPP Shell Lab:基于进程与信号的 Unix Shell 编程实战
实验概述通过编写一个支持作业控制的简单 Unix shell 程序,熟悉进程控制和信号相关概念。具体函数实现eval:解析和解释命令行的主例程。:识别和解释内置命令(quit、fg、bg、jobs)。do_bgfg:实现 bg 和 fg 内置命令。waitfg:等待前台作业完成。:捕获 SIGCHILD 信号。:捕获 SIGINT(ctrl - c)信号。:捕获 SIGTSTP(ctrl - z)信号。实验提示仔细阅读第 8 章(异常控制流)。原创 2024-12-03 10:17:03 · 1130 阅读 · 0 评论 -
CSAPP Linux 链接:从 Hello 程序构建看链接全过程,再详解链接
下面内容大部分来自《深入理解计算机系统》(CSAPP)一书第七章链接,跟深入了解建议阅读此书第七章,推荐阅读《链接器和加载器》和《程序员的自我修养 – 链接, 装载与库》。一个hello程序的生命周期如下图所示预处理阶段:处理源代码中的预处理指令(以开头,如#include#define等),生成hello.i文件。编译阶段:将预处理后的源代码翻译成汇编代码,生成hello.s文件。汇编阶段。原创 2024-11-26 16:31:38 · 1715 阅读 · 0 评论 -
CSAPP 异常控制流:计算机系统的非常态应对机制
下面内容大部分来自《深入理解计算机系统》(CSAPP)一书第八章异常控制流,更深入了解建议阅读此书第八章,推荐阅读《UNIX高级环境编程》。异常控制流(Exception Control Flow, ECF)是计算机系统中用来处理非正常情况的一种控制流方式。它允许程序在遇到错误或异常事件时,从正常的程序执行路径中跳出,执行特殊的处理逻辑,然后恢复正常流程或者终止程序。这种机制在操作系统、编程语言和硬件层面都有广泛应用。原创 2024-11-29 23:38:10 · 667 阅读 · 0 评论 -
CSAPP Linux 进程探秘:上下文、执行与地址空间布局,掌握进程的控制
进程上下文包含了进程执行所需的所有信息,这些信息完整地描述了进程在某一时刻的执行状态,当进程被暂停或切换时,操作系统需要保存这些上下文信息,以便在下次恢复执行时能够准确地回到之前的执行状态。,当前进程可以加载并执行一个新的程序文件。执行该系统调用后,当前进程的地址空间(包括代码、数据、堆栈等)将被替换为新程序的内容,原进程的代码不再执行。这种布局有助于组织和管理进程的数据和指令存储,并且通过地址空间的隔离保证了进程间的独立性和安全性,防止一个进程意外访问或修改另一个进程的数据。如果不存在,它会被创建。原创 2024-11-29 23:38:16 · 1027 阅读 · 0 评论 -
CSAPP Linux 信号:进程间异步通信的软件中断策略
信号是一种软件中断形式,用于通知进程发生了特定事件。它是进程间异步通信的一种方式,意味着信号可以在进程执行的任意时刻到达,而进程不一定正在等待该信号。例如,当用户在终端按下 Ctrl+C 时,内核会向当前正在运行的进程发送一个SIGINT信号,通知进程用户希望中断其执行。:内核通过更新目的进程上下文中的某个状态,发送一个信号给目的进程。:当目的进程被内核强迫以某种方式对信号的发送做出反应时,它就接收了信号。原创 2024-11-30 21:16:33 · 772 阅读 · 0 评论 -
CSAPP 虚拟内存系统:缺页处理与地址映射原理
缺页处理程序会选择一个牺牲页(如果物理内存已满),将其置换到磁盘(如果该页已被修改过),然后从磁盘中将所需的虚拟页调入物理内存中的一个空闲页帧,更新页表(设置有效位、页帧号等信息),最后重新执行导致缺页的指令。有趣的是,Linux 也将一组连续的虚拟页面(大小等于系统中 DRAM 的总量)映射到相应的一组连续的物理页面。若虚拟页的有效位为 1,表示该虚拟页在主存中,此时从页表中获取对应的物理页帧号,与虚拟地址中的页内偏移量组合,形成物理地址,然后可以直接从主存中读取或写入数据。原创 2024-12-03 10:13:09 · 971 阅读 · 0 评论 -
CSAPP 系统级 I/O:文件管理、读写操作及 RIO 技术解读
不过它与其他带缓冲的 I/O 例程有所不同,带缓冲的 RIO 输入函数是线程安全的,在同一个描述符上能够交错调用,比如可以先从一个描述符读一些文本行,接着读一些二进制数据,然后再读一些文本行。**在某些重要的情况中,使用高级 I/O 函数不太可能,或者不太合适。**RIO(Robust I/O,健壮的 I/O)**的 I/O 包,它能自动处理前文提到的读、写操作中出现的不足值情况,在容易产生不足值的应用(如网络程序)里,可提供方便、健壮且高效的 I/O 操作。系统中的每个文件都是根目录的直接或间接的后代。原创 2024-12-06 20:51:20 · 732 阅读 · 0 评论