Skip to content

NishikiChisato/CSAPP_LABS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

82 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CSAPP_LABS

本仓库用于记录我 CSAPP LAB 的源代码以及相关问题

所有实验均已完成

In process

  • Data Lab
  • Domb Lab
  • Attack Lab
    • Buffer Lab(IA32)
  • Architecture Lab
    • Architecture Lab(Y86)
  • Cache Lab
    • Performance Lab
  • Shell Lab
  • Malloc Lab
  • Proxy Lab
  • Architecture Lab(Y86)CSAPP:2e 的版本,可以只做 Architecture Lab
  • Buffer Lab(IA32)Attack Lab32 位版本,也属于 CSAPP:2e,可以只做 Attack Lab
  • Performance LabCache Lab 的弱化版本,由于此实验设计较为粗糙,因此可以只做 Cache Lab

What I learn

  1. 对计算机补码表示和运算、二进制数据操作有更深刻的认识,对 IEEE 浮点数表示及其精度上的局限有清晰的认识
  2. 具有理解汇编和反汇编代码的能力,能对过程调用时所进行的操作有清晰的理解,熟悉 CGDB 调试操作
  3. 了解 CPU 的运行方式,对 CPU 识别指令的过程以及缓冲区溢出攻击有所认识
  4. 加深对 CPU 流水线的工作原理的理解,学习了对底层指令进行优化的方法,提高了编码能力
  5. 学习了 LRUcache 当中的实现,了解了 cache 的寻址以及碰撞等工作原理,能够有能力编写出降低 cache 碰撞的代码
  6. 学习了信号处理函数的使用以及多进程程序避免竞争的办法
  7. 学到内存管理方面的知识,对 mallocfree 的实现以及指针和链表有了更深入的理解,学习了很多 gdb 调试的技巧,能够熟练使用 gdb
  8. 学到多线程、信号量的应用,理解了多路复用、客户端、预线程化服务器的开发雏形

File structure

.
├── ArchitectureLab
│   └── archlab-handout
├── Attacklab
│   └── target1
├── BombLab
│   └── bomb
├── CacheLab
│   └── cachelab-handout
├── DataLab
│   └── datalab-handout
├── MallocLab
│   └── malloclab-handout
├── ProxyLab
│   └── proxylab-handout
├── ShellLab
│   └── shlab-handout
└── Tar

Debug

Ubuntu22.04 平台上运行

如出现:

/usr/include/stdio.h:27:10: fatal error: bits/libc-header-start.h: 没有那个文件或目录
  | #include <bits/libc-header-start.h>
  |          ^~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

说明缺少32位的库文件,运行以下命令进行安装

sudo apt-get install gcc-multilib