计算机系统导论

211 人学过

计算机系统导论

项目内容
共6个实验
实验1 实验6:Cache Lab
本实验要求你书写一个通用目的cache模拟器,然后优化一个小的矩阵转置核函数(kernel),使得在模拟cache上的不命中次数最小。Cachel Lab使用Valgrind工具来产生内存地址访问序列(trace)。
实验2 实验5:Shell Lab
本实验要求你实现一个具备简单作业控制功能的shell程序,具体包括:ctrl-c和ctrl-z快捷键、fg、bg和jobs命令。你会初次接触到应用级的并发,了解Linux进程控制、信号和信号处理的思路和理念。
实验3 实验4:Attack Lab
在本实验中,你会得到两个x86-64二进制可执行文件,称为targets,这两个程序都有缓冲区溢出bug。一个target容易遭受代码注入攻击;另一个容易遭受面向返回的编程攻击。你要基于代码注入和面向返回的编程来利用这些漏洞,改变这两个程序的行为。通过这个实验,你能了解栈的规则,同时理解程序中如果含有容易遭受缓冲区溢出攻击的代码,是多么危险的事情。
实验4 实验3:Bomblab
Bomb Lab又叫“二进制炸弹”实验,会给你一个目标代码文件。运行时,它会提示你输入6个不同的字符串,如果输入不正确,炸弹就会“爆炸💥”,打印出错误信息。你必须通过反汇编和逆向工程该程序,确定正确的字符串,解除你的炸弹的引信。
本实验能教会你理解汇编语言,使你学会如何使用调试器(debugger),更重要的是,它非常有趣!堪称经典。

实验5 实验2:Data Lab
这个实验要求你用C语言中特定的操作来实现一些简单的逻辑、补码和浮点运算函数。例如,只能用位级运算和线性(没有循环的)代码来计算一个数的绝对值。它能帮助你理解C语言中数据类型的位级表示,以及数据操作时的位级行为。
实验6 实验1:C Programming Lab
本实验主要是锻炼你的C语言编程能力,主要检测以下技能:
• 显式内存管理;
• 创建和操作基于指针的数据结构;
• 实现输入无效参数也能正确运行的健壮代码,如 NULL 指针;
• 在 Makefile 中创建规则。

实验6:Cache Lab

共6个实验

参加本项目
csapp